南昌大学汇编语言实验报告.docx
《南昌大学汇编语言实验报告.docx》由会员分享,可在线阅读,更多相关《南昌大学汇编语言实验报告.docx(51页珍藏版)》请在冰豆网上搜索。
![南昌大学汇编语言实验报告.docx](https://file1.bdocx.com/fileroot1/2022-10/7/730a9589-18c2-4683-88ed-d4597f1e1176/730a9589-18c2-4683-88ed-d4597f1e11761.gif)
汇编语言实验报告
专业:
电气3类
班级:
姓名
学号:
2011年12月14日
目 录
实验1 利用DEBUG调试汇编语言程序段 3
实验2 初级程序的编写与调试实验
(一) 3
实验3 初级程序的编写与调试实验
(二) 3
实验4汇编语言程序上机过程 3
实验5 分支程序实验 3
实验6 循环程序实验 3
实验7 子程序实验 3
51
实验1 利用DEBUG调试汇编语言程序段
一、实验目的
1.熟悉DEBUG有关命令的使用方法;
2.利用DEBUG掌握有关指令的功能;
3.利用DEBUG运行简单的程序段。
二、实验内容
1.进入和退出DEBUG程序;
2.学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。
对于U命令、N命令、W命令等,也应该试用一下;
3.用DEBUG,验证乘法、除法、加法、减法、带进位加、带借位减、堆栈操作指令、串操作指令的功能。
三、实验环境
PC微机
DOS操作系统或Windows操作系统
MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境
四、实验要求
1.仔细阅读有关DEBUG命令的内容,对有关命令,要求事先准备好使用的例子;
2.作为例子,准备用A命令,输入在显示器上显示字符“$”的系统调用程序段;
3.编写将AX左移9位的程序段。
五、主要实验步骤
(一)学会使用DEBUG中的简单命令:
1.打开DOS,开始——运行——cmd。
2.进入DEBUG,在DOS下输入DEBUG,直接进入。
3.在DEBUG中输入D,查看D命令结果,输入D1000,查看指定地址的数据。
4.在DEBUG中输入E100,修改地址100的数据,再输入D100,查看修改后的结果。
5.在DEBUG中输入R,查看当前寄存器的内容。
6.在DEBUG中输入A,输入以下代码:
movax,1234
mov[1000],ax
输入T显示第一条命令运行结果,再次输入T,显示第二条命令运行结果,输入d1000,验证命令运行结果。
7.在DEBUG中输入A,输入以下代码:
movax,1234mov[1000],ax
输入G[=起始地址][结束地址]↓,再输入D1000,验证命令运行结果。
8.在DEBUG中输入U[起始地址][结束地址],从[起始地址]开始进行反汇编。
9.在DEBUG中输入Q,推出DEBUG程序。
(二)用DEBUG验证乘法、除法、加法、减法等功能:
1.验证加法和带进位加,使用A命令,在DEBUG中键入以下代码:
movax,f111movbx,f222movcx,2movdx,3addax,bxadccx,dx
使用G命令查看结果
2.验证减法和带借位减法,使用A命令,在DEBUG中键入以下代码:
movax,2movbx,3movcx,5movdx,2subax,bxsbbcx,dx
使用G命令查看结果
3.验证乘法和除法,使用A命令,在DEBUG中键入以下代码:
乘法:
moval,b4movbl,11mulbl
使用G命令查看结果除法:
movax,400movbl,b4divbl
使用G命令查看结果
4.验证堆栈操作指令,使用A命令,在DEBUG中键入以下代码:
movax,1111pushax
movax,2222
使用G命令查看结果后在使用A命令,在DEBUG中键入以下代码:
popax
使用G命令查看结果
5.验证串操作指令,使用A命令,在DEBUG中键入以下代码:
org1000db‘hello’
movsi,1000movdi,1500movcx,5cld
repmovsb
使用G命令查看结果
(三)使用A命令在显示器上显示字符“$”:
1.在DEBUG中键入A命令
2.键入以下代码:
moval,24movdl,al
movah,2int21
3.输入代码后,使用G命令运行代码,得到结果
(四)编写将AX左移9位的程序段
1.在DEBUG中键入A命令
2.键入以下代码:
movax,1234movcl,9
shlax,cl
3.使用T命令运行程序段,查看结果
六、实验数据及处理结果
熟悉使用DEBUG的简单命令
验证加法和带进位加法
验证减法和带借位减法
验证乘法和除法
验证堆栈操作指令
验证串操作指令
在显示器上显示字符“$”
将AX左移9位
七、思考题
启动DEBUG后,要装入某一个.EXE文件,应通过什么方法实现?
答:
进入DOS,输入DEBUGxxx.exe,其中xxx为文件名。
八、参考资料
《IBM-PC汇编语言程序设计》
《汇编语言实验指导书》
实验2 初级程序的编写与调试实验
(一)
一.实验目的
1.进一步熟悉DEBUG命令;
2.掌握数据在内存中的存放方式和内存操作数的几种寻址方式,段寄存器和物理地址计算;
3.熟悉数据传送指令、算术运算指令、逻辑指令、数据串传送程序和数据串传送指令
MOVS、STOS及重复前辍REP;4.掌握简单的汇编语言程序编写与调试。
二.实验内容
1.内存操作数及各种寻址方式使用;
2.求累加和程序;
3.多字节加法程序;
4.数据串搬家程序;
5.段寄存器概念及字符串传送指令练习。
三.实验要求
1.仔细阅读有关DEBUG命令的内容,对有关命令,要求事先准备好使用的例子;
2.阅读数据传送指令、算术运算指令、逻辑指令、数据串传送程序和数据串传送指令
MOVS、STOS及重复前辍REP的内容;
3.用DEBUG的有关命令调试本实验中的求累加和程序、多字节加法程序、数据串搬家程序段。
四.实验环境
PC微机;
DOS操作系统或Windows操作系统;
MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境。
五.实验步骤
1.内存操作数及各种寻址方式使用
步骤:
MOV AX,1234MOV [1000],AXMOV BX,1002
MOV BYTEPTR[BX],20MOV DL,39
INC BX
MOV [BX],DLDEC DL
MOV SI,3
MOV [BX+SI],DLMOV [BX+SI+1],DL
MOV WORDPTR[BX+SI+2],2846
(1)用A命令键入上述程序,并用T命令逐条运行。
(2)每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注明是什么寻址方式。
注意D命令显示结果中右边的ASCII字符及双字节数存放法。
2.求累加和程序:
程序:
MOV BX,1000
MOV CX,10
SUB AX,AXLOP:
ADD AL,[BX]
ADC AH,0
INC BXJ:
LOOP LOP
INT3
步骤:
(1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址值代替;
(2)用命令N AA将此程序命名为文件AA(文件名可任取);
(3)用R命令将BX:
CX改为程序长度值(即最后一条指令后面的地址减去开始地址;
(4)用命令W100将此程序存到AA命名的磁盘文件中;
(5)用命令Q退出DEBUG;
(6)用命令DEBUGAA再次调入DEBUG和文件AA,可用U命令检查调入程序;
(7)用E命令在内存地址1000H处键入16个数字;
(8)用命令G=100J(J用实际地址代替),使程序运行并停在断点J上,检查AX,BX的值是否符合你的预计值;
(9)用T命令运行一步,观察程序方向(IP值)和CX值是否与你的估计一样,若不一样,检查程序是否有错;
(10)重复G、J与T,再检查AX是否正确;
(11)用G命令使程序运行到结束,检查AX值是否正确。
3.多字节加法程序
程序:
MOVDI,1000MOVCX,8MOVSI,2000CLC
LOP:
MOVAL,[SI]
ADC [DI],ALINC SI
INC DILOOPLOPINT 20
步骤:
(1)用命令键入此程序。
(2)用E命令在1000H开始处键入一个8字节被加数,在2000H开始处键入一个8字节加数,均为低字节在前面。
4.数据串搬家程序
(1)用A命令键入下列程序:
MOVSI,1000MOVDI,1500MOVCX,0FH
LOP:
MOVAL,[SI]MOV[DI],ALINCSI
INC DILOOPLOPINT 20
(2)用A命令DB伪指令在1000H键入下列字符串:
‘IBM_PCCOMPUTER'
(3)用G命令运行此程序,并用D命令检查目的地址处的字符与源串是否一致。
5.段寄存器概念及字符串传送指令练习
(1)用A命令键入下列程序:
MOVSI,0MOVDI,0MOVAX,1000MOVDS,AXMOVAX,1500MOVES,AXMOVCX,0FCLD
REP MOVSBINT 20
(2)用A命令DB伪指令在1000:
0000处键入字符串'IBM_PCCOMPUTER',并用D命检
查
(3)用D命令检查0F00:
1000处内容,看是否一样。
为什么?
(4)用G命令运行此程序,检查目的地址1500:
0000处内容。
并记下DS与ES值。
此时的DS和ES的值分别为:
(5)修改此程序,使ES与DS为同一值,以减少一条指令,而源物理地址和目的物理地址(是多少?
)仍和原来一样。
6.自编程序
用16位减法指令编一个32位(4字节)数减法程序,两个源数及结果存放地址同多字节加法程序,调试并做记录。
4字节减法程序源代码
1397:
0100MOVSI,1000
1397:
0103MOVCX,4
1397:
0106MOVDI,2000
1397:
0109CLC
1397:
010AMOVAL,[SI]
1397:
010CSBB[DI],AL
1397:
010EINCSI
1397:
010FINCDI
1397:
0110LOOP010A
1397:
0112INT20
1397:
0114
调试和运行
结果运行正确
六.思考题
1.MOVBYTEPTR[BX],20
MOVWORDPTR[BX+SI+2],2846
上述指令中BYTEPTR及WORDPTR伪操作不加行不行?
试一试。
2.用G命令运行多字节加法程序