前言
在代码段中使用栈完成数据的倒序
1、代码如下
assume cs:codesg
codesg segment
dw 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H
dw 0,0,0,0,0,0,0,0 ;用dw定义8个字型数据,在程序加载后,将取得8个字的
;内存空间,存放这8个数据。我们在后面的程序中将这段
;空间当作栈来使用
start: mov ax,cs
mov ss,ax
mov sp,32 ;设置栈顶ss:sp指向cs:32
mov bx,0
mov cx,8
s: push cs:[bx]
add bx,2
loop s ;以上将代码段0~16单元中的8个字型数据依次入栈
mov bx,0
mov cx,8
s0: pop cs:[bx]
add bx,2
loop s0 ;以上依次出栈8个字型数据到代码段0~16单元中
mov ax,4c00H
int 21H
codesg ends
end start ;指明程序的入口在start处
2、masm命令进行编译
3、link命令进行连接
4、debug命令进行调试
可以看到前20H(换成十进制是32字节)个地址用来存放数据,真正的代码是从20H开始的。
可以看到压入栈中的数据,下面进入到出栈操作
可以看到数据进行了倒序存储了
结束程序
本例只是演示,最好的编程是分别编写代码段,数据段,栈!!!