求解程序运行完后al的值

susiehong 2008-10-29 10:58:27
mov al,0
call myproc


myproc proc
call x
x:call y
y:call z
z:inc al
ret
myproc ends

主程序执行完proc后,al的值是多少?
...全文
238 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yipaichen 2008-11-07
  • 打赏
  • 举报
回复
up
郑炜 2008-11-07
  • 打赏
  • 举报
回复
这程序还真看的头晕,写成这样,完全就是教材里面的嘛
不过还挺有意义的
楼上的厉害!!!
xtdumpling 2008-11-06
  • 打赏
  • 举报
回复
Up LS!

title call.com
.model tiny
.386
.code
start:
mov al,0
call myproc
int 3
mov ax,4c00h
int 21h

myproc proc
call x
x:call y
y:call z
z:inc al
ret
myproc endp

end start


debug call.com
-g
al=8
nosachow 2008-11-04
  • 打赏
  • 举报
回复
递归调用吧,AL=8,
先分析一下吧,

在第一次ret前,执行了一次inc al(al=1)
第一次ret -> Z,执行 inc al(al=2)
第二次ret -> Y, 执行 call z,inc al(al=3)
第3次ret-> Z(ret到Y时又call了一次Z),执行inc al(al=4)
第4次ret-> X,执行 call y,call z,inc al(al=5)
第5次ret-> Z,(ret到X时又call了一次Z)执行 inc al(al=6)
第6次ret-> Y,(ret到X时又call了一次Y),执行 call z,inc al(al=7)
第7次ret-> Z,inc al(al=8)
第8次ret-> call myproc 时的IP位址,程序此时返回,跳出myproc 。
其执行inc al 一共8次,al最终是值是8.

LZ,对吧。
MIPL_walikb 2008-10-31
  • 打赏
  • 举报
回复
mov al,0 ;al=0

执行call指令后,x call y,y call z, z执行 inc al, al增加1

al=1

21,500

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧