技术热线: 4007-888-234
设计开发

专注差异化嵌入式产品解决方案 给智能产品定制注入灵魂给予生命

开发工具

提供开发工具、应用测试 完善的开发代码案例库分享

技术支持

从全面的产品导入到强大技术支援服务 全程贴心伴随服务,创造无限潜能!

新品推广

提供新的芯片及解决方案,提升客户产品竞争力

新闻中心

提供最新的单片机资讯,行业消息以及公司新闻动态

用汇编实现二进制数转BCD码

更新时间: 2019-03-23
阅读量:4574

十年专注单片机方案开发的方案公司英锐恩,分享用汇编实现二进制数转BCD码。英锐恩现提供服务产品涉及主控芯片:8位单片机、16位单片机、32位单片机及各类运算放大器等。

BIN_L EQU 10H ;要进行二进制转换的 低字节 BIN_H EQU BIN_L+1 ;要进行二进制转换的 高字节 GE_B EQU BIN_L+2 ;转换后的 个位 SHI_B EQU BIN_L+3 ;转换后的 十位 BAI_B EQU BIN_L+4 ;转换后的 百位 QIAN_B EQU BIN_L+5 ;转换后的 千位 WAN_B EQU BIN_L+6 ;转换后的 万位

; **********************说明************************ ; * 入口:BIN_L BIN_H       * ; * 出口:GE_B SHI_B BAI_B QIAN_B WAN_B * ; * 转换子程序: CONVERT_2_10     * ; **************************************************

ORG 00H JISUAN: MOVLW 0FFH ;验证程序 MOVWF BIN_H MOVLW 0FFH MOVWF BIN_L CALL CONVERT_2_10 GOTO $ ;------------------------------------------------------------------------------------- 

CONVERT_2_10: ;二进制转换十进制子程序 CLRF WAN_B CLRF QIAN_B CLRF BAI_B CLRF SHI_B CLRF GE_B BIN_L_PR ;二进制低字节进行十进制转换程序 MOVF BIN_L,F BTFSC STATUS,Z GOTO BIN_H_PRO BAI_B_PRO_L: MOVLW 64H SUBWF BIN_L,W BTFSS STATUS,C GOTO SHI_B_PRO_L MOVWF BIN_L INCF BAI_B,F GOTO BAI_B_PRO_L SHI_B_PRO_L: MOVLW 0AH SUBWF BIN_L,W BTFSS STATUS,C GOTO GE_B_PRO_L MOVWF BIN_L INCF SHI_B GOTO SHI_B_PRO_L 

GE_B_PRO_L: MOVF BIN_L,W MOVWF GE_B GOTO BIN_H_PRO BIN_H_PRO ;二进制高字节进行十进制转换程序 MOVF BIN_H,F BTFSC STATUS,Z GOTO CONVERT_END GE_B_PRO_H: MOVLW 6H ADDWF GE_B,F MOVLW 0AH SUBWF GE_B,W BTFSS STATUS,C GOTO SHI_B_PRO_H ;个位<10,则直接到十位转换程序 MOVWF GE_B INCF SHI_B,F ;个位>=10,则进位 GOTO SHI_B_PRO_H SHI_B_PRO_H: MOVLW 5H ADDWF SHI_B,F MOVLW 0AH SUBWF SHI_B,W BTFSS STATUS,C GOTO BAI_B_PRO_H ;十位<10,则直接到百位转换程序 MOVWF SHI_B INCF BAI_B,F ;十位>=10,则进位 GOTO BAI_B_PRO_H BAI_B_PRO_H: MOVLW 2H ADDWF BAI_B,F MOVLW 0AH SUBWF BAI_B,W BTFSS STATUS,C GOTO QIAN_B_PRO_H ;百位<10,则直接到千位转换程序 MOVWF BAI_B INCF QIAN_B ;百位>=10,则进位 GOTO QIAN_B_PRO_H QIAN_B_PRO_H: MOVLW 0AH SUBWF QIAN_B,W BTFSS STATUS,C GOTO WAN_B_PRO_H ;千位<10,则直接到万位转换程序 MOVWF QIAN_B INCF WAN_B ;千位>=110,则进位 GOTO WAN_B_PRO_H WAN_B_PRO_H: DECFSZ BIN_H,F GOTO GE_B_PRO_H GOTO CONVERT_END CONVERT_END: NOP RETLW 0H ;------------------------------------------------------------------------------------- ORG 1FFH GOTO JISUAN END