MCS-51 单片机十六进制十进制转换汇编源程序
RW0 equ 0x08
RW1 equ 0x09
RW2 equ 0x0A
RW3 equ 0x0B
RW4 equ 0x0C
RW5 equ 0x0D
RW6 equ 0x0E
RW7 equ 0x0F
U_byte equ 0x10 ; 十六进制数高 8 位
H_byte equ 0x11
M_byte equ 0x12
L_byte equ 0x13 ; 低 8 位
;----------------------------------------------------------------
org 0x0000
sjmp C51JUST
org 0x0030
C51JUST: mov SP,#0x5F ; 堆栈指针(60H)
mov RW0,#0x99 ; BCD=99999999(HEX=0x5F5E0FF)
mov RW1,#0x99
mov RW2,#0x99
mov RW3,#0x99
acall BCD8HEX ; 调用 BCD 转 HEX 子程序
acall HEX4BCD ; 调用 HEX 转 BCD 子程序
sjmp $
;======================================
==========================
; ① 十六进制整数转换成 BCD 码整数子程序(最大值
HEX=0x270F,BCD=9999)
; 待转换的十六进制整数在 M_byte、L_byte
; 转换后的 4 位 BCD 码整数在 RW1、RW2 中。程序编码 19, 时钟周期
264
HEX2BCD: mov RW1,#0
mov RW2,#0
mov RW7,#16 ; 循环 16 次
BYTS4D: mov A,L_byte ; 最低位的内容→A
rlc A ; 带 C 左移,L_byte-7bit→C
mov L_byte,A
mov A,M_byte
rlc A
mov M_byte,A
mov A,RW2 ; BCD 码带进位自身相加(×2)
addc A,RW2
da A ; 十进制调整