dcobcdtb.asm
来自「pic单片机常用的汇编程序,很有用的,分成各个小模块」· 汇编 代码 · 共 50 行
ASM
50 行
;********************DCOBCDTB********************
;本程序实现双字节压缩BCD码转化为二进制数。
;入口参数:原BCD码数在SOUH:SOU中。
;出口参数:结果在SOUH:SOU中。
;占用资源:W,STATUS,024H,025H,028H,029H,02AH,两重堆栈。
IFNDEF DCOBCDTB1
#DEFINE DCOBCDTB1
DCOBCDTB CLRF TEMP1
CLRF TEMP2 ;暂存结果
SWAPF SOUH,W
CALL MUL10 ;结果=10*A
MOVF SOUH,W
CALL MUL10 ;10*(10*A+B)
SWAPF SOU,W
CALL MUL10 ;10*(10*(10*A+B)+C)
MOVF SOU,W
ANDLW 0FH
ADDWF TEMP1,W
MOVWF SOU ;出口
BTFSC STATUS,C
INCF TEMP2,F
MOVF TEMP2,W
MOVWF SOUH ;出口
RETLW 0
;********************结果乘10子程序********************
MUL10 ANDLW 0FH
ADDWF TEMP1,F ;取出一个十进制位加到结果中
BTFSC STATUS,C
INCF TEMP2,F
BCF STATUS,C
RLF TEMP1,W ;结果乘以2
MOVWF TEMP3
RLF TEMP2,W
RLF TEMP1,F
RLF TEMP2,F
RLF TEMP1,F
RLF TEMP2,F
RLF TEMP1,F
RLF TEMP2,F ;乘以8
ADDWF TEMP2,F
MOVF TEMP3,W
ADDWF TEMP1,F ;完成乘10的操作
BTFSC STATUS,C
INCF TEMP2,F ;本步操作不可能有进位
RETLW 0
ENDIF
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?