📄 mubcdsub.asm
字号:
;********************MUBCDSUB********************
;本程序实现多字节非压缩BCD码减法。
;入口参数: 被减数地址在SADR中,减数地址在DADR中,字节数在CNT中。
;出口参数: 结果首地址在SADR中,字节数在CNT中,借位标志在STATUS:C中,'0'表示有借位。
;占用资源: W,STATUS,FSR,020H,022H,023H,028H,029H,02AH,一重堆栈。
;说 明: 被减数将被冲掉.
IFNDEF MUBCDSUB1
#DEFINE MUBCDSUB1
MUBCDSUB BSF TEMP3,0 ;清除借位
MOVF SADR,W
MOVWF TEMP2 ;保存结果首地址
NEXT8 MOVF DADR,W
MOVWF FSR
MOVF INDF,W
MOVWF TEMP1 ;暂存减数
MOVF SADR,W
MOVWF FSR
MOVF TEMP1,W
SUBWF INDF,F
BTFSC STATUS,Z
GOTO ZERO ;结果是零
BTFSC STATUS,C ;检查借位
GOTO NOC4
CLRW
BTFSS TEMP3,0
ADDLW 01 ;减掉借位
ADDLW 0F6H
SUBWF INDF,F ;减6处理
BCF TEMP3,0 ;置借位标志
GOTO DONE4
NOC4 BTFSS TEMP3,0
DECF INDF,F
NOC5 BSF TEMP3,0
GOTO DONE4
ZERO BTFSC TEMP3,0
GOTO NOC5
MOVLW 09H ;减1变为9
MOVWF INDF
BCF TEMP3,0
DONE4 INCF DADR,F
INCF SADR,F
DECFSZ CNT,F
GOTO NEXT8
MOVF TEMP2,W
SUBWF SADR,W
MOVWF CNT ;字节数
SUBWF SADR,F ;首地址
RRF TEMP3,F ;借位
RETLW 0
ENDIF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -