个人收集整理 仅供参考学习
微机原理及汇编语言
程序设计
实 验 指 导 书
计算机实验中心
1 / 15
个人收集整理 仅供参考学习
目 录
实验一 DEBUG地使用………………………………………3b5E2RGbCAP 实验二数制转换程序……………………………………7p1EanqFDPw 实验三数组排序程序……………………………………9DXDiTa9E3d 实验四数据地输入与输出程序…………………………10RTCrpUDGiT 实验五 子程序设计………………………………………115PCzVD7HxA 实验六宏调用程序设计…………………………………13jLBHrnAILg
2 / 15
个人收集整理 仅供参考学习
实验一 DEBUG地使用
【实验目地】
1.学习使用DEBUG调试程序地各种命令.
2.掌握8088/8086指令系统---数据传送指令、算术指令. 3.掌握用DEBUG调试程序地方法.
4.掌握8088/8086 CPU寄存器地用途和存储器组织及它们之间地关系. 5.掌握内存操作数及寻址方法.
6.掌握汇编语言伪操作:BYTE PTR,WORD PTR.
7.熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序地过程.
8.掌握数据传送、算术运算、BCD码调整和循环指令地用法,掌握字符显示地方法.
【实验性质】
验证性实验(学时数:2H)
【实验内容】
一、DEBUG 命令地使用
1.敲 DEBUG 进入 DEBUG 环境,显示提示符 '_ '.
2.用命令 D100 10F 观察内存中地16进制码及屏幕右边地ASCII字符.
3.用命令 E100 30 31 32 ……3F 将30H~3FH写入地址为100H开始地内存单元 中,再用D命令观察结果,看键入地16进制数是什么字符地ASCII码? 4.用命令 F100 L0F 'A' 将'A'地ASCII码填入内存,用D命令查看结果. 5.用命令 F110 11F 41 将41H 填入内存,用D命令观察结果并比较.
6.用R 命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF和AF 地内容.
7.用R命令将AX,BX内容改写为1234H及5678H.
8.用H命令检查下列各组16进制数加减结果并和你地手算结果比较:
(1)34H,22H (2)56H,78H (3)A5,79H (4)1284H,5678H (5)A758,347FHxHAQX74J0X 二、8088/8086常用指令练习
1.传送指令
1)用A命令在内存100H处键入下列内容:
MOV AX,1234 MOV BX,5678 XCHG AX,BX MOV AH,34
3 / 15
个人收集整理 仅供参考学习
MOV AL,56 MOV CX,75AB XCHG AX,CX
2)用U命令检查键入地程序,特别注意左边地机器码.
3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP地变化情况.并注意标志位有无变化.
2.加减法指令:
1)用A命令在内存200H处键入下列内容:
MOV AH,34 MOV AL,2E ADD AL,AH SUB AL,78 MOV CX,1234 MOV DX,5678 ADD CX,DX SUB CX,AX SUB CX,CX
2)用U命令检查键入地程序及对应地机器码.
3)用T命令逐条运行这些指令,检查并记录有关寄存器及ZF情况.
思考题:
这次运行还是打入T,行不行?如何单步运行上述小程序?用R命令检查一下IP地内容.注意T命令与IP地关系.LDAYtRyKfE 3.带进位加减法:
1)用A命令在内存300H处键入下列内容,并用U命令检查:
MOV AH,12 MOV AL,89 MOV CH,56 MOV CL,98 ADD AL,CL ADC AH,CH MOV DH,A7 MOV DL,58 SUB DL,7F SBB DH,34
2)用T命令逐条运行这些指令,检查并记录有关寄存器及CF内容.
3)上面这段程序若改用16位操作指令达到同样结果,怎么改?试修改并运行之. 4.BCD码加减法
1)内容:
MOV AL,58 ADD AL,25 DAA
2)要求:用A 命令键入,U命令检查,T命令逐条运行并记录有关寄存器及AF内容. 三、内存操作数及各种寻址方式使用:
1)用A命令在内存400H处键入下列内容,并用U命令检查:
MOV AX,1234
MOV [1000],AX MOV BX,1002 MOV BYTE PTR[BX],20
4 / 15
个人收集整理 仅供参考学习
MOV DL,39 INC BX MOV [BX],DL DEC DL MOV SI,3 MOV [BX+SI],DL MOV [BX+SI+1],DL MOV WORD PTR[BX+SI+2],2846
2)用T命令逐条运行这些指令,每运行一条有关内存操作数地指令,要用D命令检查并记录有关内存单元地内容并注明是什么寻址方式.Zzz6ZB2Ltk 注意:D命令显示结果中右边地ASCII字符及双字节数存放法.
思考题: 有关指令中BYTE PTR及WORD PTR伪操作不加行不行?试一试.
四、DEBUG环境下汇编运行程序方法
用A命令汇编程序,编程完成将DS:1000开始地10个字节地内存单元地内容相加,并把相加结果存放在DS:100A 内存单元中,用DEBUG调试运行该程序,并察看运行结果.dvzfvkwMI1 内容:
MOV CX,0AH MOV AL,0 MOV BX,1000 LL: ADD AL,[BX] INC BX DEC CX JNZ LL
MOV [BX],AL INT 3 步骤:
1)用A命令将程序键入到100H开始地内存中,在键入时记下标号LL地实际地址,在键入JNZ指令时LL用实际地址值代替.rqyn14ZNXI 2)用U命令检查键入地程序及对应地机器码.
3)用E1000 01 02 03 04 05 06 07 08 09 0A将1000H开始地前10个内存单元地内容修改为01,02,03,04,05……0A,用D命令查看修改结果.EmxvxOtOco 4)用T命令逐条运行上述小程序指令,检查并记录有关寄存器、存储单元内容及ZF情况. 5)用F2000 L0A 02 03 04 05 ……0B 将1000H开始地10 个内存单元地内容修改为02,03,04,05……0B.用D命令查看修改结果.SixE2yXPq5 6)用G=100 全速运行上述小程序,用D1000 100F 查看运行结果.
思考题:
可否随意在DEBUG提示符“-”后不带参数发出命令G?什么情况下使用命令G时,可不用“=”给出执行地首地址?6ewMyirQFL 五、两个多位十进制数相加
要求:将下面程序在汇编平台下,完整地进行汇编、连接、运行,然后用DEBUG软件调入可执行文件到内存,用反汇编命令查看实际程序及数据区内容,用t命令逐条执行,以观察各寄存器及数据区内存地数据变化情况,然后使用p命令和g命令执行,以观察执行过程有何特点.kavU42VRUs 将两个5位十进制数相加,要求被加数(本题选47193)和加数(本题选28056)均以ASCII码形式各自顺序存放在以DATAl和DATA2为首地5个内存单元中(低位在前),结果送回以DATA3为首地5个内存单元中(低位在前),并显示相加地结果.y6v3ALoS89 实验程序和结果如下:
DATA
SEGMENT
5 / 15