微
机
原
理
实
验
报
告
2130401097
电气34 班
郭永钊
1 实验一 顺序程序的设计
一、 实验目的
1. 学习8086/8088 指令系统中一些基本指令的用法和程序的基本方法。
2. 熟悉在PC 机上建立,汇编,连接,调试和运行8086.8088 汇编语言程序
的全过程。
二、 实验内容
设a,b,c,d 四个数分别以单字节压缩BCD 码形式存放在内存NUM 开始的四
个单元,计算(a+b )- (c+d )并将结果放在Y1 单元,将结果在屏幕上显示
出来。
在DEBUG 中,不断改变a ,b,c,d 内容并查看结果。
这里给出了几组数据:
1. a=09 ,b=06,c=04 ,d=07
2. a=38 ,b=41,c=29 ,d=34
3. a=70 ,b=23,c=42 ,d=41
4. a=63 ,b=73,c=62 ,d=50
三、 实验调试过程
1. 利用dos 工具masm 以及link 生成exe 文件
2. 利用debug 工具反汇编后设置断点调试程序
①利用-u 命令反汇编程序
②设置断点一,查看a+b 结果是否正确
结果存在AL 中,等于23h,结果正确
③设置断点二,查看c+d 结果是否正确
结果存在AL 中,等于30h ,结果正确
④运行完程序,用-d 命令查看最终结果是否正确
其中数据段第五个地址处为计算结果,结果正确
⑤利用-E 命令多次改变数值,运行程序,按以上步骤查看结果,查看结果
是否正确
特别的,在(a+b )- (c+d )中,若前者小于后者,结果有可能不正确,
此时应该判断借位标志位是否为负,若负,则用(c+d )- (a+b )再在结果
中输出负号即可
3. 调试成功,查看结果
在dos 命令下直接运行add.exe 或在debug 中利用-g 命令运行程序,查
看程序结果
四、 实验程序及框图
DSEG SEGMENT ;DEFINE DATA SEGMENT
NUM DB 13H,27H,11H,12H ;DEFINE A,B,C,D
Y1 DB ?
DSEG ENDS ;DATA SEGMENT ENDS
SSEG SEGMENT PARA STACK ;DEFINE STACK
DB 20 DUP(?)
SSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG,SS:SSEG
START: MOV AX,DSEG
MOV DS,AX
MOV AX,SSEG
MOV SS,AX
MOV AL,[NUM] ;COPY A TO AL
ADD AL,[NUM+1] ;A+B
DAA
MOV CL,AL ;SAVE AL
MOV AL,[NUM+2] ;COPY C TO AL
ADD AL,[NUM+3] ;C+D
DAA