. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  关于call的疑问  [已解决] 回复[ 2次 ]   点击[ 912次 ]  
zhengcong3250
[帖 主]   [ 发表时间:2010-06-20 14:06 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:10
注册日期:2010-06-09 16:22
请高手指点,call指令执行时压入当前IP是什么意思,当前是call指令的IP值压入,还是下一条指令的IP值,CPU执行流程好像是执行完当前指令,IP指向下一指令吧!
小弟新手,愚见,不对之处还望高手指点!
masmaster
[第1楼]   [ 回复时间:2010-06-20 14:40 ]   [引用]   [回复]   [ top ] 
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19
比如下面代码:
地址1:mov ax,1234
地址2:call s
地址3:add ax,1234
地址4:s: ...
地址5: ...
地址6:ret
当cpu执行到call的指令时, 将本指令的下一条指令即地址3入栈。然后跳到标号s的地址开始执行,当执行到ret的时候, 将栈中的ip(就是add ax,1234)的地址出栈,此时执行地址3处的指令。
zhengcong3250
[第2楼]   [ 回复时间:2010-07-05 11:21 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:10
注册日期:2010-06-09 16:22
此贴由 贴主 于 [ 2010-07-05 11:21 ] 结贴。 结贴原因:问题已解决
得分情况: 1楼(masmaster):2分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved