?? mubcdadd.asm
字號(hào):
;********************MUBCDADD********************
;本程序?qū)崿F(xiàn)多字節(jié)非壓縮BCD碼加法。
;入口參數(shù): 被加數(shù)地址在SADR中,加數(shù)地址在DADR中,字節(jié)數(shù)在CNT中。
;出口參數(shù): 結(jié)果首地址在SADR中,字節(jié)數(shù)在CNT中,進(jìn)位在STATUS:C中。
;占用資源: W,STATUS,FSR,020H,022H,023H,028H,029H,02AH,一重堆棧。
;說 明: 被加數(shù)將被沖掉.
IFNDEF MUBCDADD1
#DEFINE MUBCDADD1
MUBCDADD CLRF TEMP3 ;進(jìn)位位清零
MOVF SADR,W
MOVWF TEMP2 ;保存結(jié)果首地址
NEXT2 MOVF DADR,W
MOVWF FSR
MOVF INDF,W
MOVWF TEMP1 ;暫存加數(shù)
MOVF SADR,W
MOVWF FSR
MOVF TEMP1,W
ADDWF INDF,F
BTFSS STATUS,DC ;檢查半進(jìn)位
GOTO NODC2
BTFSC TEMP3,0 ;低位送來的進(jìn)位
INCF INDF,F ;此時(shí)不可能產(chǎn)生進(jìn)位
MOVLW 6
ADDWF INDF,F ;加6處理
OVER6 MOVLW 0FH
ANDWF INDF,F ;去掉高四位
BSF TEMP3,0
GOTO DONE1
NODC2 BTFSS TEMP3,0
MOVLW 6
BTFSC TEMP3,0
MOVLW 7
ADDWF INDF,F
BTFSC STATUS,DC ;DC為1,表明原結(jié)果大于9
GOTO OVER6
MOVLW 06H
SUBWF INDF,F
BCF TEMP3,0
DONE1 INCF DADR,F
INCF SADR,F
DECFSZ CNT,F
GOTO NEXT2
MOVF TEMP2,W
SUBWF SADR,W
MOVWF CNT ;恢復(fù)字節(jié)數(shù)
MOVF TEMP2,W
MOVWF SADR
RRF TEMP3,W ;將進(jìn)位位移到STATUS:C中
RETLW 0
ENDIF
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -