以前写的汇编的,你看有没有用:
;=================BIN--->BCD==========
BCDD EQU 10H ;
BIND EQU 08H ;需要被转换的二进制数地址
BYTES EQU 04H ;暂存要转换的二进制数个数
;输入
;R3为二进制的个数
;08 09 0a 0b 0c 十六进制数据输入(0c 为高字节)
;输出
;10 11 12 13 14 15 十进制数 (15 为高字节)
hex_dec:
MOV R0,#0
MOV R1,#0
MOV R2,#0
BINB:
MOV BYTES,R3
MOV R1,#BCDD
MOV R2,BYTES
INC R2
CLR A
BB0:
MOV @R1,A
INC R1
DJNZ R2,BB0 ;完成十进制数据寄存器清0
MOV A,BYTES
MOV B,#08H
MUL AB ;统计二进制数据位数
MOV R3,A
BB3:
MOV R1,#BIND
MOV R2,BYTES
CLR C
BB1:
MOV A,@R1
RLC A
MOV @R1,A ;取出原始二进制数带CY左移1位,取出最高位放入CY中
INC R1
DJNZ R2,BB1
MOV R2,BYTES
INC R2
MOV R1,#BCDD
BB2:
MOV A,@R1
ADDC A,@R1
DA A ;bcd 校正
MOV @R1,A
INC R1
DJNZ R2,BB2
DJNZ R3,BB3
RET |