call指令运行后IP的变化情况

ZXDMCL 2007-06-24 10:22:53
设SP为1000H,若在代码段的0410H单元有一条CALL 0420H指令,执行该指令后,栈顶(SP)/(SP+1)为____。
结果是13H/04H.请问具体如何这具体是如何执行的?
...全文
574 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fallblood 2007-06-28
  • 打赏
  • 举报
回复
在调用call前会保存下条指令地址,以备在过程调用返回时将下条指令ret给IP使用.
...
指令地址1: call 0420
指令地址2: int 3 (假设)

保存指令地址2,然后进入call内部.如果有参数的话,也会push进参数.
由于这里没有使用push,因此栈顶部应该就是指令地址2所在地址.
再由16位汇编的内存模式来看,答案就是这个样子了.

32位看多了,16位的已经忘记光了...
ZXDMCL 2007-06-26
  • 打赏
  • 举报
回复
呵呵.谢谢啊.
我另外查了一些资料,也大概是这么讲的.
zhgwbzhd 2007-06-24
  • 打赏
  • 举报
回复
如果按照楼上的去解释,应该是没有任何问题的。
但是我刚开始看他的题的时候,还以为,他让说名栈顶sp的值呢,那样的话,当然没有办法知道栈顶的值是多少了。
如果他要知道栈顶保存的值,那就是IP了。
dongyi940333 2007-06-24
  • 打赏
  • 举报
回复
书上是这样写的:

CPU将CALL 0420H指令的机器码读入,IP指向了CALL 0420H后的指令,然后CPU执行CALL 0420H指令,将当前的IP值(就是CALL 0420H后面那条指令的偏移地址,由于CALL指令的长度为3,所以当前的IP值为0410+3=0413H)压栈,所以结果是13H/04H.

关于执行情况我是看的王爽的汇编语言第10章,初学,不对之处,请原谅!!
hustsatellite 2007-06-24
  • 打赏
  • 举报
回复
从这些信息不能推断,call指令会保存段和ip(远调用保存段)

21,496

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧