带参数的返回指令用在什么场合?设堆栈顶为4000H,当执行RET

题目

带参数的返回指令用在什么场合?设堆栈顶为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。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

假设由CALL指令调用的某子程序使用段内返回指令RET4,问该予程序执行到 RET4指令时( )实现返回操作?

A.返回到CALL指令下面一条指令继续执行主程序

B.按照(SP)和(SP+1)中存放的地址执行返回操作

C.按照(SP+4)和(SP+5)中存放的地址执行返回操作

D.返回到CALL指令下面第4条指令继续执行主程序


正确答案:B

第2题:

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


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

第3题:

执行中断返回指令RETI,从堆栈弹出地址送给()。

A.PSW

B.PC

C.DPTR

D.Rn


参考答案:B

第4题:

设当前SS=2010H,SP=FE00H,BX=3457H,计算当前栈顶的地址为多少?当执行PUSHBX指令后,栈顶地址和栈顶2个字节的内容分别是什么?


正确答案: 当前栈顶的地址:2010H*16+FE00H=2FF00H;
执行PUSHBX指令后,堆栈地址指针SP减2,则栈顶地址为:2FEEDH;
栈顶2个字节的内容为:57H、34H。

第5题:

CALL指令和RET指令对堆栈操作,正确的说法为()。

  • A、CALL指令从堆栈中取出子程序的地址
  • B、RET指令从堆栈中取出子程序的地址
  • C、CALL指令从堆栈中取出断点的地址
  • D、RET指令从堆栈中取出断点的地址

正确答案:D

第6题:

设SP=4AH,执行段内返回指令RET4后,SP的值是()。

  • A、44H
  • B、48H
  • C、4CH
  • D、50H

正确答案:D

第7题:

如果在子程序中进行了现场保护,那么子程序中()。

  • A、恢复现场在RET指令之前
  • B、恢复现场在RET指令之后
  • C、直接用RET指令返回
  • D、直接用JMP指令返回

正确答案:A

第8题:

执行中断返回指令RETI,会从堆栈取出数作为地址送给()。

A.DPTR

B.PSW

C.PC

D.Rn


参考答案:C

第9题:

删除非空链式存储结构的堆栈(设栈顶指针为top)的一个元素的过程是依次执行:p←top,top←link(p),call RET(p)。


正确答案:正确

第10题:

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


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

更多相关问题