微机原理教材上的一个程序,为什么在emu8086上会死循环?高手赐教,会不会是EMU8086的问题啊?我用的是4.05版
答案:2 悬赏:20 手机版
解决时间 2021-03-28 16:43
- 提问者网友:龅牙恐龙妹
- 2021-03-28 06:18
微机原理教材上的一个程序,为什么在emu8086上会死循环?高手赐教,会不会是EMU8086的问题啊?我用的是4.05版
最佳答案
- 五星知识达人网友:执傲
- 2021-03-28 07:49
看了一下,发现“push ax”-“ret" ret 的作用是把栈顶数据推给IP实现程序的跳转,而“sub ax,ax”把ax清空了,所以当执行到ret时程序就会自动跳转到“cs:0”处于是就成死循环了。
********************************程序本身就是个死循环****************************************************
想问下,这个代码没写完吧。push ds 没有用到啊
可以交个朋友大家一起学汇编吗?103141514
********************************程序本身就是个死循环****************************************************
想问下,这个代码没写完吧。push ds 没有用到啊
可以交个朋友大家一起学汇编吗?103141514
全部回答
- 1楼网友:独行浪子会拥风
- 2021-03-28 08:52
单片机不熟,只是知道语法,寻址,减法等等
参考:
push ds:
将ds寄存器推入堆栈,要再次得到ds的值的时候可以用pop ds,即临时保存一下ds的值
sub ax,ax:
用ax-ax,也就是将ax清零
push ax:
与push ds相同
顺便说明一下,堆栈是后进先出的,所以,你如果先后执行了push ds和push ax,那么,执行pop命令的时候,就应该先用pop ax,然后再用pop ds来自:求助得到的回答
参考:
push ds:
将ds寄存器推入堆栈,要再次得到ds的值的时候可以用pop ds,即临时保存一下ds的值
sub ax,ax:
用ax-ax,也就是将ax清零
push ax:
与push ds相同
顺便说明一下,堆栈是后进先出的,所以,你如果先后执行了push ds和push ax,那么,执行pop命令的时候,就应该先用pop ax,然后再用pop ds来自:求助得到的回答
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯