实验四 无符号多字节加法
一.实验目的
掌握MCS-51汇编语言程序设计和调试方法;
掌握ME-5103在线仿真器的程序设计和调试方法;
熟悉用IBM-PC交叉汇编和调试软件MBUG机器汇编及调试。
二.实验设备
ME-5103在线仿真器1台;
IBM-PC微机1台;
直流稳压电源1台。
三.实验内容
1.编写三字节无符号加法程序,加数693B68H放在52H,51H,50H,被加数3AE409H放在42H,41H,40H,“和”放在42H,41H,40H。
2.程序结构采用主程序和子程序结构
主程序用R0,R1作指针,R7作为加法字节计数值N,本实验N=3;子程序完成一个字节的加法。
3.用文本编辑软件如EDIT编写源程序,用IBM-PC交叉汇编和调试软件MBUG对程序进行汇编,产生目标代码文件,文件的类别为HEX及调试。
4.参考程序
主程序
地址 机器码 源程序 注释
ORG 0000H
0000 0130 START: AJMP MAIN ;转入程序
… … ORG 0030H
0030 7840 MAIN: MOV R0,#40H ;指向低字节
0032 7950 MOV R1,#50H
0034 7F03 MOV R7,#03H
CLR C ;清进位位
LOOP: ACALL ADDSUB ;调用字节加法子程序
DJNZ R7,LOOP
HERE: AJMP HERE ;程序结束
子程序
ADDSUB:MOV A,@R0 ;取被加数
ADDC A,@R1 ;A和加数相加
MOV @R0,A ;保存和
INC R0 ;指针加1
INC R1
RET ;返回
5.用IBM-PC软件MBUG和仿真机联机调试
用单步执行或断点连续执行,记下执行指令后表格中相应寄存器的数值:
执行指令
A
R0
R1
R7
CLR C
第一次调用
ACALL ADDSUB
DJNZ R7,LOOP
第二次调用
ACALL ADDSUB
DJNZ R7,LOOP
第三次调用
ACALL ADDSUB
DJNZ R7,LOOP
实验报告
1.写出本程序调试过程和运行结果.
2.本程序如修改为无符号十进制数相加,增加DAA指令,在何地方?修改后用BCD码135790和246801相加,写出调试过程和运行结果.