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