📄 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 + -