看了一下,发现“push ax”-“ret" ret 的作用是把栈顶数据推给IP实现程序的跳转,而“sub ax,ax”把ax清空了,所以当执行到ret时程序就会自动跳转到“cs:0”处于是就成死循环了。
********************************程序本身就是个死循环****************************************************
想问下,这个代码没写完吧。push ds 没有用到啊
可以交个朋友大家一起学汇编吗?103141514
单片机不熟,只是知道语法,寻址,减法等等
参考:
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