?? mubcddiv.asm
字號:
;********************MUBCDDIV********************
;本程序?qū)崿F(xiàn)多字節(jié)非壓縮BCD碼除法。
;入口參數(shù):被除數(shù)地址在SADR中,除數(shù)地址在DADR中,字節(jié)數(shù)在CNT中(小于32字節(jié)),分配給
; 余數(shù)的地址在SADRH中。
;出口參數(shù):商地址在SADR中,余數(shù)地址在SADRH中,字節(jié)數(shù)在CNT中。
;占用資源:W,FSR,STATUS,020H~02BH,兩重堆棧。
;說 明: 1.除數(shù),被除數(shù),余數(shù)所占用的RAM單元不要重合.
; 2.程序執(zhí)行后,被除數(shù)被破壞.
; 3.加載本文件的同時也加載了另外四個文件"MUBCDSUB.ASM",
; "MUBCDADD.ASM","MUBCDSHL.ASM","MUBCDSHR.ASM"故用戶在使用這個
; 子程序時可直接調(diào)用,不必重新加載.
IFNDEF MUBCDDIV1
#DEFINE MUBCDDIV1
MUBCDDIV MOVF CNT,W
MOVWF RLTH ;RLTH保存字節(jié)數(shù)
MOVWF TEMP4 ;TEMP4作為計數(shù)器
MOVF SADR,W
MOVWF SOUH ;SOUH存儲被除數(shù)地址
MOVF DADR,W
MOVWF RLT ;RLT暫存除數(shù)地址
MOVF SADRH,W
MOVWF FSR
LOOP87 CLRF INDF
INCF FSR,F
DECFSZ RLTH,F
GOTO LOOP87 ;余數(shù)清0
CLRF SOU
CALL MUBCDSHL ;被除數(shù)帶SOU左移十進制1位
MOVF SADRH,W
MOVWF SADR
CALL MUBCDSHL ;余數(shù)左移
CLRF SOU
NEXT52 MOVF RLT,W
MOVWF DADR ;傳遞參數(shù)
CALL MUBCDSUB
BTFSS STATUS,C
GOTO NEXT53
INCF SOU,F
GOTO NEXT52
NEXT53 MOVF RLT,W
MOVWF DADR
CALL MUBCDADD ;恢復(fù)余數(shù)
MOVF SOUH,W
MOVWF SADR
CALL MUBCDSHL ;被除數(shù)帶SOU左移十進制1位
MOVF SADRH,W
MOVWF SADR
CALL MUBCDSHL ;余數(shù)左移
DECFSZ TEMP4,F
GOTO NEXT52
CALL MUBCDSHR ;恢復(fù)余數(shù)
MOVF SOUH,W
MOVWF SADR ;整理參數(shù)
RETLW 0
INCLUDE "MUBCDSHL.ASM"
INCLUDE "MUBCDADD.ASM"
INCLUDE "MUBCDSUB.ASM"
INCLUDE "MUBCDSHR.ASM"
ENDIF
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -