汇编语言程序设计实验指导书
《汇编语言程序设计》实验是学习本课程的每个考生必须要通过的一个重要的实践环节,根据“汇编语言程序设计自学考试大纲”规定:上机实验单独作为本课程的实验考核成绩。《汇编语言程序设计》是一门实践性很强的课程,只有多上机操作,对汇编语言源程序进行编辑、汇编、连接、调试和运行全过程的训练,才能加深对本课程基本知识的理解,才能熟练地掌握程序设计的方法与技巧,才能学好本课程。
本实验指导书是完全按照《汇编语言程序设计自学考试大纲》中“实验大纲”的要求编写的,为便于考生较好完成上机操作和实验报告,特此作出如下说明和要求:
(1)做好上机实验的准备工作:应考者对每个实验需要进行预习,了解相关内容和具体要求,熟悉上机操作步骤,学会相关系统软件的使用,掌握各种操作调试命令。
(2)编写源程序:按照实验题目的要求,应考者要事先独立完成汇编语言源程序的编写工作,并对源程序进行认真的静态检查,减少错误的发生。
(3)完成实验报告:做完上机实验,应考者要严格按照实验报告的格式要求写出实验报告。实验报告的内容为:实验名称、实验的目的、实验的内容和要求、实验步骤、实验结果并附上源程序清单和程序流程图。
实验一 DEBUG的使用
(一)实验目的
1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。
2、掌握8086/8088的寻址方式及多字节数据的处理方法。
(二)实验设备
硬件环境:IBM-PC及其兼容机
软件环境:操作系统DOS3.0版本以上
调试程序DEBUG.COM
(三)实验内容和要求
实验内容:
实验要求:
本次实验的内容均在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 MOV AX,[0200]↙
186E:0103 MOV BX,[0202]↙
186E:0107 ADD AX,[0204]↙
186E:010B ADC BX,[0206]↙
186E:010F MOV [0208],AX↙
186E:0112 MOV [020A],BX↙
186E:0116 ↙
4、用“U”命令反汇编验证源程序
–U CS:0100↙
186E:0100 A10002 MOV AX,[0200]
186E:0103 8B1E0202 MOV BX,[0202]
186E:0107 03060402 ADD AX,[0204]
186E:010B 131E0602 ADC BX,[0206]
186E:010F A30802 MOV [0208],AX
186E:0112 891E0A02 MOV [020A],BX
186E:0116
–
注意:
5、程序未执行前,用“R”命令观察,相关寄存器的内容。
–R↙
如:(AX)= ,(BX)= ,(SI)= ,
(DI)= ,(CS)= ,(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寄存器内容的变化,并与预计的结果相比较。
注意:
(六)实验结果分析
1、程序运行结果:(AX)= ,(BX)=
DS:0208H四字节单元的内容:
2、试用寄存器间接寻址方式编写程序段,完成上述程序段的功能。(参考下列程序流程图)
(七)、附加题目:
;实验内容
E DS:0200 78 56 34 12
E DS:0204 98 BA DC FE
;直接寻址
MOV AX, [0200]
ADD AX, [0204]
MOV [0208], AX
MOV AX, [0202]
ADC AX, [0206]
MOV [020A], AX
;寄存器间接寻址
MOV BX, 0200
MOV AX, [BX]
ADD AX, [BX+4]
MOV [BX+8], AX
MOV AX, [BX+2]
ADC AX, [BX+6]
MOV [BX+0A], AX
;答案为111111110H
;附加题目1
E DS:0000 1C 02 01 00 FF FF 38 04 00 00
MOV BX, 0
MOV AX, [BX]
IMUL WORD PTR [BX+2]
ADD AX, [BX+4]
SUB AX, 021C
SUB AX, [BX+6]
NEG AX
IDIV WORD PTR [BX]
MOV [BX+8], AX
;答案为0002H
;附加题目2
;别忘给BX赋值
MOV CX, 10
MOV AX, 0
ROL BX, 1
ADC AX, 0
LOOP ;填入ROL BX, 1的偏移地址
;附加题目3
MOV CX, 14
MOV SI, 0
MOV WORD PTR [SI], DDCC
ADD SI, 2
DEC CX
JNZ ;填入MOV WORD PTR [SI], DDCC的偏移地址
MOV AX, DS
MOV ES, AX
CLD
MOV SI, 0
MOV DI, 28
MOV CX, 14
REP MOVSW
;大吉大利,今晚AC