当前位置: 代码迷 >> 汇编语言 >> call far ptr '标号'的有关问题[答案]
  详细解决方案

call far ptr '标号'的有关问题[答案]

热度:10870   发布时间:2013-02-26 00:00:00.0
call far ptr '标号'的问题[在线等答案]
为什么ax会是1010?不是1006??求详细解答
难道call far ptr不是执行了push cs,push ip,jmp far ptr???
那如果这么指行的话call far ptr s的cs:1000,ip:3
把cs先扔进栈,后扔ip,那么到了s:pop ax这个时候应该是ip先出来,所以ax=3,接着执行add ax,ax=6接着pop bx,现在
bx=1000,然后执行add ax,bx那么不就是ax=1006???????
求大神解答...在线等答案
Assembly code
内存地址    机器码                      汇编指令1000:0      b8 00 00                    mov ax,01000:3      9a 09 00 00 10              call far ptr s1000:8      40                          inc ax1000:9      58                        s:pop ax                                        add ax,ax                                        pop bx                                        add ax,bx


------解决方案--------------------------------------------------------
call far ptr 标号 
相当于进行: 
push cs 
push ip 
jmp far ptr 标号

执行完pop ax后ax=8H,然后
add ax,ax;ax=10H,8H+8H=10H=16(十进制)
pop bx ;bx=1000H
add ax,bx;ax=10H+1000H=1010H
  相关解决方案