📄 dcobcdtb.asm
字号:
;********************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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -