|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
2)下面的程序执行后,ax中的数值为多少?
assume cs:code
stack segment
dw 8 dup (0)
stack ends
code segment
start: mov ax,stack
mov ss,ax
mov sp,16
mov word ptr ss:[0],offset s
mov ss:[2],cs
call dword ptr ss:[0]
nop
s: mov ax,offset s
sub ax,ss:[0cH]
mov bx,cs
sub bx,ss:[0eH]
mov ax,4c00h
int 21h
code ends
end start
解:ax=1,bx=0
这个题我看指令再配上自己画的栈图得出来了答案,可在别处看有人用更简单的方法解出来的。
我复制下那人如何算出的,不过我实在没想明白他怎么算的。
“对于这道题,我们不需要了解那么多的某条指令占用多少个字节,只需要了解
call dword ptr ss:[0]的功能就OK,
显然入栈的(ip)是下一条指令nop的ip,而nop占用1个字节,那么nop的下一条指令
也就是s:mov ax 0ffset s的(ip)比Nop大于1个字节,则mov ax offset s中的(ax)比刚刚入栈中(ip)=ss:[0ch]大于1
那么(ax)=1
bx同理了,
这个分析只是本人的思路 ”
能看懂他这样方法能详细说下可以吗?
|
|