猫三壮 发表于 2018-8-5 20:39:40

小甲鱼汇编语言视频第48课的例子,为什么程序会陷入循环?

这个例子如下:
20000:mov ax,0
20002:call s
20005:mov ax,4c00h
20008:int 21h
2000A:s: add ax,1
2000D:ret

当程序到ret的时候,就把栈里面的ip调出来,指向20005,到这里程序就应该结束了,为什么小甲鱼说这里会陷入一个死循环呢?

57158597@qq.com 发表于 2018-8-6 09:29:32

这是完整代码吗?光这几行看不出是死循环

关键是感觉 发表于 2018-8-6 12:23:41

本帖最后由 关键是感觉 于 2018-8-6 14:48 编辑

我很负责任的给你说,你发的代码不会死循环
1.call s 会把20005偏移地址压入栈,
2.ret 会把栈顶的值,给ip,相当于pop ip
结果就是,刚好互补,不会死循环
页: [1]
查看完整版本: 小甲鱼汇编语言视频第48课的例子,为什么程序会陷入循环?