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

程序思路:

程序运行时,将定义的数据存放在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处
		
		

posted @ 2011-07-28 11:27  又是一年夏天  阅读(688)  评论(0)    收藏  举报