8 Bit / 8 Bit Integerdivision mit PIC18XXX Befehlssatz
|
|
Dieser Code ist mit der Entwicklungsumgebung MPLAB IDE 7.20 von Microchip geschrieben.
include prozessortype.inc
Temp_math_Var UDATA_ACS
A_L RES 1 ; Dividend
B_L RES 1 ; Divisor
REST_L RES 1 ; Rest
MDUCount RES 1 ; Bitzaehler
math1 CODE
; ++++++++++++++++++++++++++++++++++++++++++++++++
; + Unterprogramm : 8 Bit / 8 Bit +
; + +
; + Parameter : +
; + A_L : Dividend +
; + B_L : Divisor +
; + +
; + Rueckgabe : +
; + A_L : Ergebnis +
; + REST_L : Rest +
; ++++++++++++++++++++++++++++++++++++++++++++++++
math_div88:
clrf REST_L ;Loesche alten Divisionsrest
movlw 8 ;Anzahl der Schleifendurchlaeufe
movwf MDUCount
bcf STATUS,C
;
loopdiv88 rlcf A_L,w
rlcf REST_L,f
;
; Subtraktion ( REST = REST - B )
;
movf B_L,w
subwf REST_L,f ;Durchfuehrung der Subtraktion (REST_L = REST_L - B_L)
;
bc divsubok88 ;Ist Subtraktion gueltig ?
;
; Rueckaddition ( REST = REST + B )
;
movf B_L,w ;Subtraktion war ungueltig (Unterlauf) !
addwf REST_L,f ;Durchfuehrung der Rueckaddition (REST_L)
bcf STATUS,C
;
divsubok88 rlcf A_L,f
;
decfsz MDUCount,f ;Sind alle 8 Bits bearbeitet worden ?
goto loopdiv88
return