CMS专题

问答题指出RET和IRET两条指令的区别,并说明各用在什么场合?

题目
问答题
指出RET和IRET两条指令的区别,并说明各用在什么场合?
如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

状态元件编写步进指令,两条指令为()。

  • A、SET、STL
  • B、OUT、SET
  • C、STL、RET
  • D、RET、END

正确答案:C

第2题:

在执行中断返回指令IRET和过程(子程序)返回指令RET时,具体操作内容有什么区别?


正确答案: (1)过程调用转向称为过程的子程序,而中断调用是转向中断服务子程序;
(2)过程调用可以是 NEAR 或 FAR 类型,能直接调用或间接调用,中断调用通常是段间间接转移到服务程序;
(3)过程调用只保护返回地址,中断指令还要保护状态标志进栈。

第3题:

使用指令RET及IRET时,弹出堆栈的内容一样。()

此题为判断题(对,错)。


参考答案:错误

第4题:

HLT指令用在什么场合?如CPU在执行HLT指令时遇到硬件中断并返回后,以下应执行哪条指令?


正确答案: H.LT用在使CPU处于暂停状态而等待硬件中断的场合。
在执行HLT指令遇到硬件中断并返回后将执行HLT后面的一条指令。

第5题:

带参数的返回指令用在什么场合?设堆栈顶为4000H,当执行RET 0008H后,SP指针的值是多少?


正确答案:在某些情况下,执行返回指令后,往往需要自动修改堆栈指针,以便废弃一些CALL指令执行前入栈的参数。为了达到这一目的,RET指令可带一个操作数,其指令格式为RET N,其中N为一个偶数。当RET指令完成返回地址出栈后,还进一步执行(SP)←(SP)+N,从而实现了修改堆栈指针目的。
设堆栈顶为4000H,当执行RET 0008H后,如果是段内返回(SP)←(SP)+2+8=400AH;如果从段间返回,则(SP)←(SP)+4+8=400CH。

第6题:

指出RET和IRET两条指令的区别,并说明各用在什么场合?


正确答案:(1)RET和IRET是两条返回主程序的指令,但RET是与过程(子程序)调用指令CALL对应使用的过程返回指令,而IRET是与中断指令INT n对应使用的中断返回指令。
(2)RET指令应安排在子程序的出口,即子程序的最后一条指令处,它的功能是从堆栈顶部弹出由CALL指令压入的断点地址值IP或CS、IP,迫使CPU返回到调用程序的断点去继续执行。
(3)IRET指令总是安排在中断服务程序的出口处,由它控制从堆栈中弹出程序断点送回CS和IP中,弹出标志寄存器内容送回F中,迫使CPU返回到断点继续执行后续程序。

第7题:

带参数的返回指令用在什么场合?设栈顶地址为4000H,当执行RET 0008H后,SP指针的值是多少?


正确答案: 当调用程序为子程序提供一定的参数或参数的地址,这些参数是通过堆栈传递给子程序时;在子程序运行结束返回时,这些参数或参数地址已经没有在堆栈中保留的必要。因此,使用带参数的返回指令RET n,以便废弃一些CALL指令执行前入栈的参数。
设栈顶地址为4000H,当执行RET 0008H后,执行SP ← SP+n的操作,SP=4008H。

第8题:

中断服务程序结束时,用RET指令代替IRET指令能否返回主程序?这样做存在什么问题?


正确答案:RET应该可以使中断服务程序返回主程序,但因为RET是子程序返回指令,他只从堆栈中恢复CS和IP,而不能使状态字PSW得以恢复,所以不能使断点完全恢复,对原程序的继续执行造成不良影响。

第9题:

字节扩展指令和字扩展指令用在什么场合?举例说明。


正确答案: 用在除法运算中,对带符号数的被除数进行扩展;
例如:当被除数在AX中,除数在BX中时
CDW
IDIV  BX

第10题:

中断服务程序结束时,可用RET指令代替IRET指令返回主程序。


正确答案:错误