别走别忘 发表于 2014-9-9 12:16:33

10-5。2如何用字节来看。

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:,offset s
mov ss:,cs
call dword ptr ss:
nop
s: mov ax,offset s
sub ax,ss:
mov bx,cs
sub bx,ss:
mov ax,4c00h
int 21h
code ends
end start

解:ax=1,bx=0

这个题我看指令再配上自己画的栈图得出来了答案,可在别处看有人用更简单的方法解出来的。
我复制下那人如何算出的,不过我实在没想明白他怎么算的。
“对于这道题,我们不需要了解那么多的某条指令占用多少个字节,只需要了解
call dword ptr ss:的功能就OK,
显然入栈的(ip)是下一条指令nop的ip,而nop占用1个字节,那么nop的下一条指令
也就是s:mov ax 0ffset s的(ip)比Nop大于1个字节,则mov ax offset s中的(ax)比刚刚入栈中(ip)=ss:大于1
那么(ax)=1
bx同理了,
这个分析只是本人的思路 ”
能看懂他这样方法能详细说下可以吗?
页: [1]
查看完整版本: 10-5。2如何用字节来看。