;************************************************************** ; 除法子程序 ;/************************************************************* CF1 MOVLW 0FFH;被除數(shù) MOVWF 70H ;被除數(shù)高8位寄存器 MOVLW 0FFH;被除數(shù) MOVWF 71H;被除數(shù)低8位寄存器 MOVLW 00H MOVWF 72H ;余數(shù)高8位寄存器 MOVLW 00H MOVWF 73H ;余數(shù)低8位寄存器 MOVLW 00H MOVWF 74H;商高8位寄存器 MOVLW 00H MOVWF 75H;商低8位寄存器 MOVLW D'0';除數(shù) MOVWF 76H;除數(shù)高8位寄存器 MOVLW D'2';除數(shù) MOVWF 77H;除數(shù)低8位寄存器 MOVLW D'16' MOVWF 7AH CF2 RLF 71H,1;先把移低字節(jié)移到高字節(jié)位 RLF 70H,1;先處理高字節(jié)和接收低字節(jié)傳上來的位字節(jié) RLF 73H,1;把移出來的數(shù)處理 RLF 72H,1;把移出來的數(shù)處理 MOVFW 77H SUBWF 73H,0;先減低字節(jié)8位 MOVWF 7BH;臨時(shí)保存余數(shù) MOVFW 76H BTFSS STATUS,C;判斷是否有借位減法指令只影響C不受C影響 INCF 76H,0;是被減數(shù)加1 SUBWF 72H,0 ;再減高8位 BTFSS STATUS,C;判斷大小大則保存余數(shù)到R2,R3 GOTO CF3 MOVWF 72H ;保存高八位余數(shù) MOVFW 7BH MOVWF 73H;保存低八位余數(shù) ;由于除數(shù)為4位16進(jìn)制數(shù)所以余數(shù)有可能超過2位16進(jìn)制數(shù)要用2個(gè)寄存器 CF3 RLF 75H,1;先把存到低字節(jié)位 RLF 74H,1;通過低字節(jié)存到高字節(jié) DECFSZ 7AH,1;判斷是否完成 GOTO CF2 RETURN