读书人

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

发布时间: 2012-03-05 11:54:02 作者: rapoo

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

读书人网 >汇编语言

热点推荐