. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  检测点10.2 各位大神看看我这里解释的是不是正确  [待解决] 回复[ 0次 ]   点击[ 244次 ]  
linkun
[帖 主]   [ 发表时间:2021-06-17 23:00 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2021-05-19 20:55
内存地址     机器码        汇编指令
1000:0000    B8 00 00      mov ax,0
1000:0003    E8 01 00      call s
1000:0006    40            inc ax
1000:0007    58          s:pop ax

答: 
(1)ax是6, 因为call s在读入指令缓冲器内时, IP指向的是0006。
当执行call s指令时, 因为call s等价于push IP
                                    jmp near ptr 标号
所以push IP时, 等于push 0006。

(2)在call s在读入指令缓冲器内时, IP指向的是0006。
因为call s指令的机器码是E8 01 00, 而E8后面01 00位移, 
由于01是低位  00是高位, 所以位移是00 01。
执行call s指令时, 因为IP=0006, 所以(SS)*16+(IP+0001)=SS:0007
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved