微机原理教材上的一个程序,为什么在emu8086上会死循环?高手赐教,会不会是EMU8086的问题啊?我用的是4.05版

2024-12-01 00:52:48
推荐回答(2个)
回答1:

看了一下,发现“push ax”-“ret" ret 的作用是把栈顶数据推给IP实现程序的跳转,而“sub ax,ax”把ax清空了,所以当执行到ret时程序就会自动跳转到“cs:0”处于是就成死循环了。
********************************程序本身就是个死循环****************************************************
想问下,这个代码没写完吧。push ds 没有用到啊
可以交个朋友大家一起学汇编吗?103141514

回答2:

单片机不熟,只是知道语法,寻址,减法等等

参考:
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