小弟在學王爽彙編時候碰到的一個問題,請大神指導
文中利用棧來進行數據的逆序存放,請容小弟將問題一一道來.
先貼代碼:
assume cs:codesg
codesg segment
dw 01h,02h,03h,04h,05h,06h,07h,08h
dw 0,0,0,0,0,0,0,0
start:
mov ax,cs
mov ss,ax
mov sp,32
mov cx,8
mov bx,0
s:push cs:[bx]
add bx,2
loop s
mov bx,0
mov cx,8
s1: pop cs:[bx]
add bx,2
loop s1
mov ax,4c00h
int 21h
codesg ends
end strat
[解决办法]
既然提示程序已经结束了,就不能在要求那程序原来内存中的数据还完好如初。要查看结果,可以运行到 mov ah,4ch 处再 d cs:0
另外,堆栈里的那些在 sp 之上的数据,是随时可能被栈操作给覆盖了的,也不能认为它们能保持住。栈的操作,不仅仅是自己程序里的 push/pop 类指令,还可能是各种中断如硬件中断、软中断的功能调用、调试中断等。
所以这样的题目,只要理解下它的思路就可以了,不能作为好是范例而加以引用效仿。