. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  检测点10.4 的困惑  [已解决] 回复[ 2次 ]   点击[ 369次 ]  
plagueing
[帖 主]   [ 发表时间:2011-03-29 22:46 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2009-07-16 14:51
下面的程序执行后,ax中的数值为多少?

内存地址               机器码                汇编指令
1000:0                b8 06 00              mov ax,6
1000: 3                ff d0                 call ax
1000: 5                40                    inc ax
1000: 6                                      mov bp,sp
                                             add ax,[bp]

在执行call ax时:
(sp)=(sp)-2             sp=fffeh
((ss)*16+(sp))=(IP)      IP=03  IP入栈
(IP)=(16位reg)          IP=ax=6

在ss:sp处应该为3(IP=3),但是通过debug查看时,却是5。为什么?
plagueing
[第1楼]   [ 回复时间:2011-03-29 22:51 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2009-07-16 14:51
-d ss:fff0
13E3:FFF0  A4 00 EA 16 0B 00 FE FF-0B 00 E3 13 E5 0D 00 00
执行后:
-d ss:fff0
13E3:FFF0  A4 00 EA 16 06 00 FE FF-08 00 E3 13 E5 0D 05 00
plagueing
[第2楼]   [ 回复时间:2011-03-31 22:16 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2009-07-16 14:51
此贴由 贴主 于 [ 2011-03-31 22:16 ] 结贴。 结贴原因:问题已解决
得分情况:
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved