?? mcobcdsub.asm
字號:
;********************MCOBCDSUB********************
;本程序實現多字節壓縮BCD碼減法。
;入口參數: 被減數首地址在SADR中,減數首地址在DADR中,字節數在CNT中。
;出口參數: 結果首地址在SADR中,字節數在CNT中,借位標志在STATUS:C中,'0'表示有借位。
;占用資源: W,STATUS,FSR,020H,022H,023H,028H,029H,02AH,一重堆棧。
;說 明: 被減數將被沖掉.
IFNDEF MCOBCDSUB1
#DEFINE MCOBCDSUB1
MCOBCDSUB CLRF TEMP3 ;借位清零
COMF TEMP3,F ;取反
MOVF SADR,W
MOVWF TEMP2 ;保存結果首地址
NEXT9 MOVF DADR,W
MOVWF FSR
MOVF INDF,W
MOVWF TEMP1 ;暫存減數
MOVF SADR,W
MOVWF FSR
MOVF TEMP1,W
SUBWF INDF,F
RLF TEMP3,F ;保存借位
BTFSC TEMP3,1 ;將低字節送來
GOTO NOCY2 ;的借位減去
DECF INDF,F ;并判斷
INCF INDF,W
ANDLW 0FH
BTFSC STATUS,Z
BCF STATUS,DC ;減借位是否產生了半借位
INCF INDF,W ;減的過程中
BTFSS STATUS,Z ;是否又產生了借位
GOTO NOCY2
BCF STATUS,DC ;有借位,置半借位
BCF TEMP3,0 ;置借位
NOCY2 MOVLW 6
BTFSC STATUS,DC ;判斷是否有半借位
ADDWF INDF,F ;沒有,LSD不變
SUBWF INDF,F
MOVLW 60H
BTFSS TEMP3,0 ;判斷結果的MSD是否大于9
SUBWF INDF,F ;減60H
INCF DADR,F
INCF SADR,F
DECFSZ CNT,F
GOTO NEXT9
MOVF TEMP2,W
SUBWF SADR,W
MOVWF CNT ;恢復結果字節數
SUBWF SADR,F ;恢復結果首址
RRF TEMP3,F ;置借位標志
RETURN
ENDIF
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -