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