为什么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