您的位置:首页 > 编程语言

汇编语言 在代码段中使用栈

2011-07-28 11:27 155 查看
程序思路:

程序运行时,将定义的数据存放在cs:0~cs:f单元中,共八个字单元。依次将这八个字单元中的数据入栈,然后一次出栈到这八个单元中,从而实现数据的逆序存放。问题是,我们首先要有一段可当作栈的内存空间。如前所述,这段空间应由系统分配。可以在程序通过定义数据来获取一段空间,然后将这段空间当作栈使用。程序如下:

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
;用dw定义16个字型数据,在程序加载后,将取得16个字的
;内存空间,存放16个数据。在后面的程序中将这段
;空间当作栈使用

start:	mov ax,cs
mov ss,ax
mov sp,30h
;将设置栈顶ss:sp指向cs:30

mov bx,0
mov cx,8

s: push cs:[bx]
add bx,2
loop s;将以上代码段0~15单元中的八个字型数据一次入栈

mov bx,0
mov cx,8
s0:pop cs:[bx]
add bx,2
loop s0;以上依次出栈8个字型数据到代码段0-15单元

mov ax,4c00h
int 21h
codesg ends

end start;指明程序的入口出在start处


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: