汇编语言程序设计实验指导书
合肥工业大学
实验报告
课
程: 汇编语言程序设计
专业班级: 17 级物联网工程
学
姓
号: 2017217xxx
名: 李阡殇
1
汇编语言程序设计实验指导书
实验一 DEBUG 的使用
(一)实验目的
1、熟悉 DEBUG 程序中的命令,学会在 DEBUG 下调试运行汇编语言源程序。
2、掌握 8086/8088 的寻址方式及多字节数据的处理方法。
(二)实验设备
硬件环境:IBM-PC 及其兼容机
软件环境:操作系统 DOS3.0 版本以上
调试程序 DEBUG.COM
(三)实验内容和要求
实验内容:
1、利用 DEBUG 程序中的“E”命令,将两个多字节数“12345678H”和“FEDCBA98H”分别
送入起始地址为 DS:0200H 和 DS:0204H 两个单元中。
2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将 DS:0200H 单元
和 DS:0204H 单元中的数据相加,并将运算结果存放在 DS:0208H 单元中。
实验要求:
本次实验的内容均在 DEBUG 下完成,实现数据的装入、修改、显示;汇编语言程序
段的编辑、汇编和反汇编;程序的运行和结果检查。
(四)预习要求
1、复习 DOS 启动方式和 DOS 有关命令的使用;
2、阅读本书后的附录,熟悉掌握 DEBUG 调试程序中的 A、D、E、G、Q、R、T、U
命令的书写格式及功能;
3、复习寻址方式和相关的数据传送指令及算术运算指令。
(五)实验步骤
1、启动 DOS 操作系统
2、运行 DEBUG.COM 程序(若当前盘为 C)
C:>DEBUG↙
– ;(“–”为 DEBUG 提示符,仅当屏幕出现该提示符后,才可输入 DEBUG 命令)
3、用“A”命令编辑和汇编源程序
–A ↙
186E:0100
186E:0103
186E:0107
186E:010B
186E:010F
186E:0112
186E:0116
MOV AX,[0200]↙
MOV BX,[0202]↙
ADD AX,[0204]↙
ADC BX,[0206]↙
MOV [0208],AX↙
MOV [020A],BX↙
↙
4、用“U”命令反汇编验证源程序
–U CS:0100↙
186E:0100
186E:0103
186E:0107
186E:010B
186E:010F
186E:0112
186E:0116
A10002
MOV AX,[0200]
8B1E0202 MOV BX,[0202]
ADD AX,[0204]
03060402
BX,[0206]
131E0602 ADC
A30802
MOV [0208],AX
891E0A02 MOV [020A],BX
2
汇编语言程序设计实验指导书
–
注意:
检查源程序是否有错误,若有则返回到第 3 步用“A 地址”命令进行修改,直到
程序无错误。
DEBUG 约定在其命令或源程序中所涉及到的数据均被看作十六进制数,其后
不用“H”说明。
在 DEBUG 下,源程序中不能使用“标号”、“变量”和一些伪指令。
在 DEBUG 下,大小写不敏感。
5、程序未执行前,用“R”命令观察,相关寄存器的内容。
–R↙
如:(AX)=
(DI)=
,(BX)=
,(CS)=
,(SI)=
,(IP)=
,
。
6、在程序未执行前,用“D”命令观察 DS:0200H,DS:0204H、DS:0208H 单元的内容
–D 200 20B ↙
7、用“G”命令运行源程序
–G =100 0116 ↙
8、再用“D”命令观察 DS:0200H~DS:020BH 字节单元中的内容
–D 200 20B↙
9、用“T”单步操作命令对源程序单步执行,观察 AX、BX、CS、IP 寄存器内容的变化,
并与预计的结果相比较。
注意:
D 命令显示内存数据,注意观察多字节数据在内存中的存放方式。
指令执行的时候,IP 寄存器随着变化,注意观察。
(六)实验结果分析
1、程序运行结果:(AX)=
,(BX)=
DS:0208H 四字节单元的内容:
2、试用寄存器间接寻址方式编写程序段,完成上述程序段的功能。(参考下列程序流
程图)
开始
SI←200H
DI←204H
BX←208H
AX← [SI]
DX←[SI+2]
AX←AX+[DI]
3
DX←DX+[DI+2 ]
[BX]←(AX)
汇编语言程序设计实验指导书
(七)、附加题目:
1. 从 DS:0000H 开始的 5 个 16 位带符号数分别记为 x,y,z,v,w,用 E 命令初始化为:
540,1,-1,1080,0, 试求 w=(v-(x*y+z-540))/x
2. 完成 BX 中 1 的个数的统计。
3. 用串操作指令将 DS:0000 开始 20 个字节初始化为:0CCH。并将这 20 个字节的
内容复制到其后的 20 个字节里。
(八)、程序运行截图
3、
4、
5、
6、
7、
4
8、
9、
六、
1、
2、
附加题、
1、
汇编语言程序设计实验指导书
5
汇编语言程序设计实验指导书
2、
3、
6
汇编语言程序设计实验指导书
7
汇编语言程序设计实验指导书
实验二 汇编语言程序设计(顺序、多分支、循环)
一. 实验目的
1、掌握顺序和循环程序结构和设计方法;
2、熟悉在 PC 机上建立、汇编、连接、调试和运行 8086/8088 汇编语言程序的过程。
二. 实验内容
1、X、Y、Z、V 均为字变量,在 X、Y、Z、V 字单元中存放是 16 位带符号数。
试编写汇编语言程序完成以下功能:
①计算表达式值(V–(X*Y+Z-720))/X;
②将上述表达式运算结果整数放在 SUM1 单元,余数放在 SUM2 单元。
2、使用地址表实现如下功能:根据输入的数字 1-7,分别显示相应的英文星
期名,如果输入其他字符,则重新输入。
3、求一个班 50 名学生成绩的平均值、最大值和最小值,并将结果显示出来。
4、从键盘读入一个字符串,以 Enter 结束,字符串不超过 50 个字符,并打印
该字符串;查找中间是否有‘masm’子串。如果有,输出‘Yes’;否则,输出‘No’)。
三. 实验过程和程序
1、
设置参变量:;设置 x=2 y = 10 z= 700 v = 10 计算(10-(2x10 + 700 -720))
/2 = 5 利用-g 命令分段运行最终验证商 ax 是否等于 5 余数 dx 是否为 0
源代码如下:
stack
dw 512 dup(?)
ends
stack
segment
data
x
dw 0002h
dw 000ch
y
z
dw 02bch
v
dw 000ch
sum1 dw
sum2 dw
data
code
assume cs:code,ds:data,ss:stack
start: mov ax,data
ends
segment
segment stack
?
?
8