单片机 > 单片机程序设计 > 详情

51单片机十进制整数与二进制整数转换汇编语言子程序

发布时间:2023-04-11 发布时间:
|

====================================
【4位十进制整数转换为二进制整数子程序】
入口:十进制整数千位数RAM址存于R0,百位数、十位数、个位数RAM址依次加1;
返回值:转换所得二进制整数存于R3(高字节)R4(低字节)。
DtoB: MOVR2,#4 ;;R2←递减的循环次数初值
MOVA,@R0
MOVR4, A ;;R4←千位数
LP1 : MOVA, R4 ;;R3R4←(R3)(R4)*10
MOVB, #10
MULAB
MOVR4,A
MOVB, #10
XCHA, B
XCHA, R3
MULAB
ADDA, R3
XCHA, R4
INCR0 ;;RAM指针加1
ADDA,@R0 ;;R3R4←(R3)(R4)+((R0))
XCHA, R4
ADDC A, #0
MOVR3,A
DJNZ R2,LP1
RET
====================================
【双字节二进制整数转换为十进制整数BCD码子程序】
入口:二进制整数高字节存于R2,低字节存于R3
返回值:转换所得BCD码由高位至低位依次存于R4,R5,R6
BtoD:MOVR7,#16 ;;R7←递减的循环次数初值
MOVR4,#0 ;;结果寄存器清零
MOVR5,#0
MOVR6, #0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LP2: CLRC
MOVA, R3
RLCA
MOVR3, A
MOVA, R2
RLCA
MOVR2,A
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVA, R6
ADDC A, R6
DA A
MOVR6, A
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVR5,A
ADDC A, R5
DA
MOVR5,A
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVR4,A
ADDC A, R4
DA
MOVR4,A
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DJNZ R7,LP2
RET


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32学习笔记4:外部中断