汇编语言实验指导书.docx
- 文档编号:23845596
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:35
- 大小:243.77KB
汇编语言实验指导书.docx
《汇编语言实验指导书.docx》由会员分享,可在线阅读,更多相关《汇编语言实验指导书.docx(35页珍藏版)》请在冰豆网上搜索。
汇编语言实验指导书
汇编语言实验指导书
咸宁学院计算机学院
二00八年九月修订
目录
实验一DEBUG的启动及其基本命令的使用……………………………..2
实验二内存操作数及寻址方法…………………………………………….6
实验三汇编语言程序的调试与运行……………………………………….8
实验四顺序程序设计………………………………………………………10
实验五循环程序设计………………………………………………………12
实验六分支程序设计………………………………………………………13
实验七子程序设计…………………………………………………………15
实验八DOS中断及BIOS中断程序设计…………………………………18
实验九综合程序设计………………………………………………………20
附录实验报告……………………………………………………………21
实验一DEBUG的启动及其基本命令的使用
一.实验目的:
掌握DEBUG的基本命令及其功能
二.实验内容:
DEBUG是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语言程序员提供了非常有效的调试手段。
DEBUG的命令都是一个字母,后跟一个或多个参数:
字母 [参数]
命令的使用中注意:
① 字母不分大小写;
② 只使用16进制数,没有后缀字母;
③ 分隔符(空格或逗号)只在两个数值之间是必须的,命令和参数间可无分隔符;
④ 每个命令只有按了回车键后才有效,可以用Ctrl+Break中止命令的执行;
⑤ 命令如果不符合Debug的规则,则将以“error”提示,并用“^”指示错误位置。
许多命令的参数是主存逻辑地址,形式是“段基地址 :
偏移地址”。
其中,段基地址可以是段寄存器或数值;偏移地址是数值。
如果不输入段地址,则采用默认值,可以是缺省段寄存器值。
如果没有提供偏移地址,则通常就是当前偏移地址。
对主存操作的命令还支持地址范围这种参数,它的形式是:
“开始地址 结束地址”(结束地址不能具有段地址),或者是:
“开始地址 L字节长度”。
DEBUG命令一览:
分类
命令格式
功能简介
读写寄存器
R
显示所有寄存器的当前内容
R寄存器名
显示和修改指定寄存器内容
RF
显示和修改标志寄存器内容
汇编和反汇编
A[内存地址]
从指定地址开始汇编指令
U[内存块]
对指定内存块进行反汇编
执行指令
T[:
内存地址][条数]
单步或多步执行指令
P[=内存地址][条数]
单步或多步执行指令
G[=内存地址]
连续执行指令
G[=内存地址]断点地址
设断点执行程序
读写内存
D[内存块]
显示指定内存块内容
E内存地址字符或数值串
修改指定内存内容
F内存块字符或数值串
填充指定内存块
S内存块字符串或数值
在指定内存块中查找串
M内存块1内存块2的首地址
复制内存块内容
C内存块1内存块2的首地址
比较两个指定内存块
读写磁盘
N[d:
][path]文件名.扩展名
指定欲读写的磁盘文件
W内存地址
将指定内存块写入文件
L[内存地址]
将文件调入内存
读写I/O端口
I端口地址
读入指定端口的内容
O端口地址数值
将数据写入指定端口
十六进制加减
H数值1数值2
计算并显示两数之和,两数之差
退出DEBUG
Q
退出DEBUG,返回DOS
1、DEBUG程序的启动
在DOS提示符下,可键入命令:
C:
\>DEBUG↙
DEBUG命令的完整格式为:
DEBUG[d:
][path][文件名][参数1][参数2]。
其中[d:
]是盘符,[path]是路径,文件名是被调试文件的名称,它须是执行文件(EXE),两个参数是运行被调试文件时所需要的命令参数,在DEBUG程序调入后,出现提示符“-”,此时,可键入所需的DEBUG命令。
在启动DEBUG时,如果输入了文件名,则DEBUG程序把指定文件装入内存。
用户可以通过DEBUG的命令对指定文件进行修改、显示和执行。
如果没有文件名,则是以当前内存的内容工作,或者用命名命令和装入命令把需要的文件装入内存,然后再用DEBUG的命令进行修改、显示和执行。
2、DEBUG的主要命令
(1)、检查和修改寄存器内容的命令R,它有三种方式:
1)显示CPU内部所有寄存器内容和标志位状态,格式为:
-R
例如:
输入-R↙,得到结果如下:
2)显示和修改某个指定寄存器内容,格式为:
-R寄存器名
例如:
输入-RAX,得到结果如下:
表示AX当前内容为0000,此时若不对其作修改,可按ENTER键,否则,输入修改内容后,如:
则AX内容由0000改为0A0A
3)R命令显示标志寄存器标志位状态的含义如下表所示:
标志名
置位(值为1)
复位(值为0)
溢出Overflow(是/否)
OV
NV
方向Direction(减量/增量)
DN
UP
中断Interrupt(允许/屏蔽)
EI
DI
符号Sign(负/正)
NG
PL
零Zero(是/否)
ZR
NZ
辅助进位AuxiliaryCarry(是/否)
AC
NA
奇偶Parity(偶/奇)
PE
PO
进位Carry(是/否)
CY
NC
修改标志位状态,命令格式为:
-RF
例如:
输入-RF,输出结果如下:
这时若不作修改可按ENTER键,否则在“-”号之后键入修改值,键入顺序任意。
如:
(2)、汇编命令A,格式为:
-A[地址]
该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存放在从指定地址开始的存储器中。
A命令中如果没有指定地址,则接着上一个A命令的最后一个单元开始;若还没有使用过A命令,则从当前CS :
IP开始。
例如:
输入代码,则代码存储在OAFO:
0100至OAFO:
010D单元中。
(3)、反汇编命令U,有两种格式:
1)-U[地址]
该命令从指定地址开始,反汇编32个字节,若地址省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。
2)-U范围
该命令对指定范围的内存单元进行反汇编,例如:
-U0100011E或-U10011E或-U0AF0:
0100011E或–U0AF0:
0100L1F(L用来引导指令的条数,1F为指令的条数),这些命令是等效的。
(4)、运行命令G,格式为:
-G[=地址1][地址2[地址3。
。
。
]]
其中地址1规定了运行起始地址,后面的若干地址均为断点地址。
若省略地址,则运行从IP所指的地址开始。
例如:
(5)、追踪命令T,有两种格式:
1)逐条指令追踪:
-T
该命令从指定地址起执行一条指令后停下来,显示寄存器内容和状态值。
例如:
2)多条指令追踪:
(有问题)
-T[=地址][值]
该命令从指定地址起执行n条命令后停下来,n由[值]确定。
(6)、显示内存单元内容的命令D,格式为:
-D[地址](从给出的地址开始连续显示128个字节的单元内容)或-D[范围],例如:
(7)、修改内存单元内容的命令E,它有两种格式:
1)用给定的内容代替指定范围的单元内容:
-E地址内容表
例如:
-E2000:
0100F3“XYZ”8D
其中F3,“X”“Y”“Z”和8D各占一个字节,用这五个字节代替原内存单元2000:
0100到0104的内容,“X”“Y”“Z”将分别按它们的ASCII码值代入。
2)逐个单元相继地修改:
-E地址
例如:
-E100:
0AF0:
0100F3.E7
此命令是将原100号单元的内容F3改为E7。
E7是键入值。
(8)、命名命令N,格式为:
-N文件名
此命令将文件名格式化在CS:
5CH的文件控制块内,以便使用L或W命令把文件装入内存进行调试或者存盘。
例如:
(9)、装入命令L,它有两种功能:
1)把磁盘上指定扇区的内容装入到内存指定地址起始的单元中,格式为:
-L地址驱动器扇区号扇区个数
2)装入指定文件,格式为:
-L[地址]
此命令装入已在CS:
5CH中格式化的文件控制块所指定的文件。
在用L命令前,BX和CX中应包含所读文件的字节数。
3)装入已在文件控制块中的文件,格式为:
-L
此命令与-L[地址]相同功能。
(10)、写命令W,有两种格式:
1)把数据写入磁盘的指定扇区:
-W地址驱动器扇区号扇区数
2)把数据写入指定文件中:
-W[地址]
此命令把指定内存区域中的数据写入由CS:
5CH处的FCB所规定的文件中。
在用W命令前,BX和CX中应包含要写入文件的字节数。
(11)、十六进制运算命令H,格式为:
-H [数据1] [数据2]
其功能是将两个十六进制数进行相加、相减运算,结果显示在屏幕上。
例如:
(12)、退出DEBUG命令Q,该命令格式为:
-Q
它退出DEBUG程序,返回DOS,但该命令本身并不把在内存中的文件存盘,如需存盘,应在执行Q命令前先执行写命令W。
三.实验要求:
用汇编语言编写一个计算“3+5”的加法程序,并将结果输出到屏幕上。
四.实验报告:
写出在DEBUG状态下编写、运行程序的过程以及调试所中遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。
实验二内存操作数及寻址方法
一.实验目的:
1、熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。
2、掌握数据在内存中的存放方式和内存操作数的几种寻址方式。
3、掌握简单指令的执行过程。
二.实验内容:
1、设堆栈指针SP=2000H,AX=3000H,BX=5000H;请编一程序段将AX和BX的内容进行交换。
请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。
2、设DS=当前段地址,BX=0300H,SI=0002H;请用DEBUG的命令将存储器偏移地址300H~304H连续单元顺序装入0AH,0BH,0CH,0DH,0EH。
在DEBUG状态下送入下面程序,并用单步执行的方法,分析每条指令源地址的形成过程,当数据传送完毕时,AX中的内容是什么。
程序清单如下:
MOVAX,BX
MOVAX,0304H
MOVAX,[0304H]
MOVAX,[BX]
MOVAX,0001[BX]
MOVAX,[BX][SI]
MOVAX,0001[BX][SI]
HLT
三.实验要求:
1、实验前要做好充分准备,包括汇编程序清单、调试步骤、调试方法,以及对程序结果的分析等。
2、本实验只要求在DEBUG调试程序状态下进行,包括汇编程序、调试程序和执行程序。
四.实验报告:
1、程序说明。
说明程序的功能、结构。
2、调试说明。
包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。
3、写出源程序清单和执行结果。
实验三汇编语言程序的调试与运行
一.实验目的
1.学习数据传送和算术运算指令的用法
2.熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。
二.实验内容
将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在DATA1和DATA2为首的5个内存单元中,结果送回DATA1处。
三.程序框图
图3.1两个多位十进制相加程序流程图
四.调试步骤
1.编辑源程序,建立一个以后缀为.ASM的文件.
2.汇编源程序,检查程序有否错误,有错时回到编辑状态,修改程序中错误行。
无错时继续第3步。
3.连接目标程序,产生可执行程序。
4.DEBUG调试可执行程序,记录数据段的内容。
5.在操作系统状态下,运行程序,并记录屏幕显示内容。
被加数
加数
屏幕显示内容
12732
06815
10732
43691
65087
17631
五.思考题
1.将上述程序改为5位数相加,结果为6位数的加法程序。
(需考虑进位)
2.简单叙述上机步骤,调试方法。
DATA SEGMENT
DATA1 DB 33H,39H,31H,37H,34H ;第一个数据(作为被加数)
DATA2 DB 36H,35H,30H,38H,32H ;第二个数据(作为加数)
DATA ENDS
STACK SEGMENT STACK'STACK' ;堆栈段
STA DB 32DUP(?
)
TOP EQU LENGTH STA
STACK ENDS
CODE SEGMENT
ASSUME CS:
CODE,DS:
DATA,ES:
DATA,SS:
STACK
START:
MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV AX,TOP
MOV SP,AX
MOV SI,OFFSETDATA2
MOV BX,05
CALL DISPL ;显示被加数
CALL CRLF ;回车、换行
MOV SI,OFFSETDATA1
MOV BX,05 ;显示加数
CALL DISPL
CALL CRLF ;回车、换行
MOV DI,OFFSETDATA2
CALL ADDA ;加法运算
MOV SI,OFFSETDATA1
MOV BX,05 ;显示结果
CALL DISPL
CALL CRLF
MOV AX,4C00H
INT 21H
CRLF PROC NEAR ;回车、换行于功能
MOV DL,0DH ;回车
MOV AH,02H
INT 21H
MOV DL,0AH ;换行
MOV AH,02H
INT 21H
RET
CRLF ENDP
DISPL PROC NEAR ;显示于功能
DSL:
MOV AH,02
MOV DL,[SI+BX-1];显示字符串中一字符
INT 21H ;
DEC BX ;修改偏移量
JNZ DSL
RET
DISPL ENDP
ADDA PROC NEAR
MOV DX,SI
MOV BP,DI
MOV BX,05
ADI:
SUB BYTEPTR[SI+BX-1],30H
SUB BYTEPTR[DI+BX-1],30H
DEC BX ;将ASCII码表示的数字串转化为十六进制串
JNZ ADI
MOV SI,DX
MOV DI,BP
MOV CX,05 ;包括进位,共5位
CLC ;清进位位
AD2:
MOV AL,[SI]
MOV BL,[DI]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 实验 指导书