汇编基本语法实现

栏目: 编程语言 · 发布时间: 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段的前两个双字节中的数据已经交换了位置。

汇编基本语法实现

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

查看所有标签

猜你喜欢:

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

缺失的终结

缺失的终结

【美】克尔•哈里斯 / 艾博 / 中国人民大学出版社 / 2017-6-15 / 39.00元

《缺失的终结》是一本反思互联网时代对普通人日常生活影响的书。作者认为,我们都曾渴望有一段远离现实生活烦扰的“瓦尔登湖”时光,悠闲地沉入自己的内心世界,从飞速变化的漩涡中暂时“缺失”。然而,互联网生活让我们每时每刻被互联网化,手环监测着我们的心跳和睡眠,微信、脸书、推特让我们人在床上就与世界链接起来,跑步了吗?走路了吗?英语单词背了吗?早餐的卡路里是否超标?坐在办公室,无数亟待处理的信息狂风暴雨般地......一起来看看 《缺失的终结》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

SHA 加密
SHA 加密

SHA 加密工具

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

在线 XML 格式化压缩工具