;**************************************************************
; 除法子程序
;/*************************************************************
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