;**************************************************************
; 除法子程序
;/*************************************************************
CF1 MOVLW 0FFH;被除数
MOVWF 70H ;被除数高8位寄存器
MOVLW 0FFH;被除数
MOVWF 71H;被除数低8位寄存器
MOVLW 00H
MOVWF 72H ;余数高8位寄存器
MOVLW 00H
MOVWF 73H ;余数低8位寄存器
MOVLW 00H
MOVWF 74H;商高8位寄存器
MOVLW 00H
MOVWF 75H;商低8位寄存器
MOVLW D'0';除数
MOVWF 76H;除数高8位寄存器
MOVLW D'2';除数
MOVWF 77H;除数低8位寄存器
MOVLW D'16'
MOVWF 7AH
CF2
RLF 71H,1;先把移低字节移到高字节位
RLF 70H,1;先处理高字节和接收低字节传上来的位字节
RLF 73H,1;把移出来的数处理
RLF 72H,1;把移出来的数处理
MOVFW 77H
SUBWF 73H,0;先减低字节8位
MOVWF 7BH;临时保存余数
MOVFW 76H
BTFSS STATUS,C;判断是否有借位减法指令只影响C不受C影响
INCF 76H,0;是被减数加1
SUBWF 72H,0 ;再减高8位
BTFSS STATUS,C;判断大小大则保存余数到R2,R3
GOTO CF3
MOVWF 72H ;保存高八位余数
MOVFW 7BH
MOVWF 73H;保存低八位余数
;由于除数为4位16进制数所以余数有可能超过2位16进制数要用2个寄存器
CF3
RLF 75H,1;先把存到低字节位
RLF 74H,1;通过低字节存到高字节
DECFSZ 7AH,1;判断是否完成
GOTO CF2
RETURN