汇编基本语法实现

栏目: 编程语言 · 发布时间: 6年前

内容简介:堆栈的学习类似生活中的一瓶糖水,一瓶盐水,现在需要交换两个瓶子的液体。使用“堆栈”这个容器进行了一个中转。程序功能把内存单元的ffff:0 ~ffff:b单元的内容复制到0:200~0:20b内存单元中。

堆栈的学习

assume cs:codesg

codesg segment

	mov ax,2000h  	;地址2000h赋值给ax
	mov ss,ax  	;ax的值传递给段寄存器ss
	mov sp,0  	;堆栈指针sp赋初值0
	pop ax  	;出栈到ax
	pop bx  	;出栈到bx
	push ax  	;ax入栈
	push bx  	;bx入栈
	pop ax  	;出栈到ax
	pop bx  	;出栈到bx

	mov ax,4c00h
	int 21h
	
codesg ends

end

首先观察代码段的前256字节称为PSP的内容

汇编基本语法实现

通过debug观察各个寄存器的值,通过现象学习堆栈的 后进先出 的操作规则。

汇编基本语法实现

可以看到进行

出栈出栈

入栈入栈

再出栈出栈

之后

ax和bx寄存器的值进行了交换。

类似生活中的一瓶糖水,一瓶盐水,现在需要交换两个瓶子的液体。使用“堆栈”这个容器进行了一个中转。

第六个程序

程序功能把内存单元的ffff:0 ~ffff:b单元的内容复制到0:200~0:20b内存单元中。

assume cs:code 

code segment

	mov ax,0ffffh  	;通过ax中转给段寄存器ds赋初值FFFFH
	mov ds,ax
	mov ax,0020h  	;通过ax中转给段寄存器es赋初值20H
	mov es,ax
	mov bx,0  	;bx置零
	mov cx,12  	;循环12次
	
s:  	mov dl,[bx]  	;循环体s 开始循环12次
	mov es:[bx],dl  ;通过dl中转把ds:0-ds:b中的内容复制到es:0-es:b
	inc bx  	;b自增一
	loop  		;循环
	
	mov ax,4c00h
	int 21h
	
code ends

end

总结:此程序类似 C语言 中的循环,通过段寄存器DS和ES、BX自加、 以及循环,达到复制内存的目的。其中bx的作用就相当于C语言中的自加量i的作用。C代码如下

char i;
for(i = 0; i < 12; i++)
{
	ds[i] = es[i];
	i++;
}

包含多个段的程序

在计算机运行程序时,程序和数据都是以二进制形式加载到内存中,实际上程序段和数据段对于计算机来说并没有任何不同。但是对于编程人员来说并不是一件好事,我们希望程序和数据以及堆栈分开存放。那么就需要对程序进行分块了。

第七个程序

交换内存中数据段前两个双字单元的数据

assume cs:code,ds:data,ss:stack

data segment  	;定义数据段
	dw 0123h,0456h,0798h,0abch,0defh,0fdeh,0cbah,0987h
data ends

stack segment  	;定义栈段
	dw 0,0,0,0,0,0,0,0
stack ends

code segment  	;定义代码段

start: 		mov ax,data  	;数据段地址给到ds
		mov ds,ax

		mov ax,stack  	;栈段地址给到ss
		mov ss,ax
		mov sp,16  	;栈段指针指向栈底
		
		
		
		push ds:[0]  	;把数据段的ds:[0]单元的双字内容 压入栈
		push ds:[2]  	;把数据段的ds:[2]单元的双字内容 压入栈
		pop ds:[0]  	;出栈到ds:[0]单元
		pop ds:[2]  	;出栈到ds:[2]单元
		
		mov ax,4c00h
		int 21h

code ends

end start
通过 debug调试器 可以即将运行的代码看到 date段 的地址为 0b36h ,通过 d命令 查看内存 0b36 处的内容,正是在程序中定义的数据段 0123h,0456h,···,0987h

栈段地址为0b37h,在内存中 0b36:0010 单元处即为在程序中定义的全0的栈段。

汇编基本语法实现

经过两次入栈和出栈之后,可以看出date段的前两个双字节中的数据已经交换了位置。

汇编基本语法实现

以上所述就是小编给大家介绍的《汇编基本语法实现》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

设计沟通十器

设计沟通十器

Daniel M. Brown / 樊旺斌 / 机械工业出版社 / 2008-12 / 49.00元

本书提供了网站设计时所需的可交付文档资料包括:概念模型,站点地图,可用性报告等,这些文档资料是设计人员和客户进行交流的主要工具。本书深入讨论了文档推介和风险规避技巧,向你展示了如何将文档资料按要求制作成有效的交流工具。 本书内容全面,结构清晰,讲解详细。可作为网站设计人员的参考用书。 关于网站设计的多数讨论好像都着眼于流程的创建,然而,要想把概念变为现实,需要一整套强大的可交付文档资料......一起来看看 《设计沟通十器》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具