在代码段中使用栈:以数据逆序存放为例
- 问题:完成下面的程序,利用栈,将程序中定义的数据逆序存放。
assume cs;codesg
codesg segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
start:mov ax,cs
mov ss,ax
mov sp,30h
mot bx,0
mov cx,8
s: push cs:[bx];入栈
add bx,2
loop s
mov,0 ;出栈
mov cx,8
s0:pop cs:[bx]
add bx,2
loop s0
mov ax,4c00h
int 21h
code ends
end start
-
程序的思路大致如下∶
-
程序运行时,定义的数据存放在cs:0~cs:f单元中,共8个字单元。依次将这8个字单元中的
数据入移,然后再依次出栈到这8个字
-
单元中,从而实现数据的逆序存放。
-
栈需要的内存空间,在程序中通过定义“空”数据来取得。
-