📄 sdcbtbcd.asm
字号:
;********************SDCBTBCD********************
;本程序实现单字节二进制小数转化为双字节BCD码小数。
;入口参数:原二进制数在SOU中。
;出口参数:结果在SOUH:SOU中。
;占用资源:W,STATUS,024H,025H,028H,029H,02AH,两重堆栈。
IFNDEF SDCBTBCD1
#DEFINE SDCBTBCD1
SDCBTBCD CLRF TEMP3
CLRF SOUH ;结果清0
CALL MUL10_1 ;乘以10
SWAPF TEMP2,W
IORWF SOUH,F ;完成最高位
CALL MUL10_1
MOVF TEMP2,W
IORWF SOUH,F ;完成次高位
CALL MUL10_1
SWAPF TEMP2,W
IORWF TEMP3,F ;完成次低位
CALL MUL10_1
MOVF TEMP2,W
IORWF TEMP3,F ;完成结果最低位
MOVF TEMP3,W
MOVWF SOU ;出口
RETURN
;**********乘10子程序MUL10_1**********
MUL10_1 CLRF TEMP2 ;TEMP2的低4位将存放转化的某一位BCD码
BCF STATUS,C
RLF SOU,W ;二进制数乘以2
MOVWF TEMP1
RLF TEMP2,W
RLF SOU,F
RLF TEMP2,F
RLF SOU,F
RLF TEMP2,F
RLF SOU,F
RLF TEMP2,F ;乘以8
ADDWF TEMP2,F
MOVF TEMP1,W
ADDWF SOU,F ;完成乘10的操作
BTFSC STATUS,C
INCF TEMP2,F
RETURN
ENDIF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -