一个汇编程序输出的问题

2025-05-22 17:47:17
推荐回答(2个)
回答1:

al=8

这代码编的,太耗脑子了

左边是当前指令,右边是该指令执行完后的栈情况和IP情况

call myproc 栈:&myproc
IP=myproc

myproc proc
call x 栈:&myproc,&x
IP=x
x:call y 栈:&myproc,&x,&y
IP=y
y:call z 栈:&myproc,&x,&y,&z
IP=z
z:inc al al = 1
ret 栈:&myproc,&x,&y
IP=z
z:inc al al = 2
ret 栈:&myproc,&x
IP=y
y:call z 栈:&myproc,&x,&z
IP=z
z:inc al al=3
ret 栈:&myproc,&x
IP=z
z:inc al al=4
ret 栈:&myproc
IP=x
x:call y 栈:&myproc,&y
IP=y
y:call z 栈:&myproc,&y,&z
IP=z
z:inc al al=5
ret 栈:&myproc,&y
IP=z
z:inc al al=6
ret 栈:&myproc
IP=y
y:call z 栈:&myproc,&z
IP=z
z:inc al al=7
ret 栈:&myproc
IP=z
z:inc al al=8
ret 栈:清空,返回主函数

回答2:

AL=1;主程序调用myproc,myproc调用x,x调用y,y调用z,z使al加一,最后返回主程序