📄 scobcdadd.asm
字号:
;********************SCOBCDADD********************
;本程序实现单字节压缩BCD码加法。
;入口参数:被加数在SOU中,加数在RLT中。
;出口参数:结果在SOU中,进位位在STATUS:C中。
;占用资源:W,STATUS,024H,026H,028H,一重堆栈。
IFNDEF SCOBCDADD1
#DEFINE SCOBCDADD1
SCOBCDADD CLRF TEMP1 ;结果高位清零
MOVF RLT,W
ADDWF SOU,F ;二进制加法
RLF TEMP1,F
BTFSC STATUS,DC ;DC = 0 ?
GOTO ADJUST ;调整LSD
MOVLW 6
ADDWF SOU,F ;通过加6检测是否 LSD > 9
BTFSC STATUS,C
INCF TEMP1,F
BTFSS STATUS,DC ;检查半进位
SUBWF SOU,F ; LSD < 9 ,恢复原值
GOTO OVER1
ADJUST MOVLW 6
ADDWF SOU,F
OVER1 MOVLW 60 ;MSD加6
ADDWF SOU,F
BTFSC STATUS,C
RETLW 0
BTFSS TEMP1,0
SUBWF SOU,F
RRF TEMP1,F
RETLW 0
ENDIF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -