实验二双字节BCD码(十进制数)加法
一、实验目的
熟悉51汇编指令,学会使用星研集成环境软件,能自己编写简单的程序,熟悉BCD码,了解如何调用系统提供的子程序。
二、实验内容
从键盘上输入4位被加数、加数,实现双字节BCD码(四位数)的加法,结果显示在数码管上;熟悉使用断点、单步进入、单步、运行到光标处、修改PC指针、全速运行等各种调试手段;熟悉查看特殊功能寄存器、内部数据RAM、外部数据空间的各种方法。
三、实验框图
双字节BCD加法程序框图
四、实验步骤
1、连线说明:
2
3、结果显示在G5区的数码管上
五、程序清单
EXTRN CODE(Display8, GetBCDKey)
Buffer DATA 30H ;8字节显示缓冲区
F1 ;PSW.1
ORG 0000H
LJMP START
ORG 0100H
START: MOV SP,#60H
;先清除显示,再接收键输入START1:
;按键次数
LCALL GetBCDKey ;得到双字节十进制数(被加数)
SETB F1 ;接收到第一个键,才清除显示
MOV R0,#buffer+4
MOV A,#4 ;按键次数
LCALL GetBCDKey ;得到双字节十进制数(加数)
MOV A,buffer+1
ADD A,buffer+5
DA A
MOV buffer+5,A
MOV A,buffer
ADDC A,buffer+4
DA A
MOV buffer+4,A
CLR A
RLC A
Display: ;显示结果
;低位
;压缩BCD码转换成非压缩BCD码
;高位
;进位
;最高二位消隐
ACALL BlackDisplay ;将高位0消隐
MOV R0,#buffer
LCALL Display8
SJMP START1
;将一个字节压缩BCD码转换成二个字节非压缩BCD码
B1toB2:
RET
BlackDisplay: MOV A,@R0 ;将高位0消隐
JNZ Exit
MOV A,#10H
MOV @R0,A
DEC R0
DJNZ R7,BlackDisplay
Exit: RET
END