Gibt es eine Möglichkeit, zwei 8-Bit-Zahlen in der Assemblersprache PIC 18fXXX zu teilen, nicht in C?

Ich kann die Division in C des PIC-Mikrocontrollers leicht durchführen. Aber gibt es eine Möglichkeit, zwei Zahlen zu dividieren, die in zwei 8-Bit-Registern gespeichert sind? Sehen Sie sich zum Beispiel diesen Code an. Ich muss es in der PIC-Montage für 8-Bit-Mikrocontroller tun.

ORG 0H
R1 EQU 0X06
R2 EQU 0X07

MOVLW D'64'
MOVWF R1
MOVLW D'8'
MOVWF R2

; We want to Do R1/R2 We can assume that R1>R2 and we don't need Decimal Values
;SUGGESTIONS?

END
lesen Sie www4.wittenberg.edu/academics/mathcomp/shelburne/comp255/notes/… - "Shift-Test-Restore"-Algorithmus
Wenn Sie eine leistungsfähigere Division benötigen, schreiben Sie eine C-Funktion mit dem /Operator, kompilieren Sie sie und "leihen" Sie sich die Assembly-Ausgabe ...
Möglicherweise finden Sie, dass die "Assembly-Ausgabe" mit dem Code übereinstimmt, den Sie geschrieben hätten. Insbesondere dann, wenn die Variablen unsigned deklariert werden. Aber ich denke, das OP hat einfach eine Aufgabe und kein Designproblem. Das ist also keine Antwort.

Antworten (1)

Wenn Sie keine Geschwindigkeit benötigen, können Sie im Wesentlichen die "wiederholte Subtraktion" verwenden

Q = 0
while( R1 > R2 ){
   R1 = R1 - R2;
   Q = Q + 1;
}

Ich überlasse es Ihnen, dies in die PIC-Montage zu übersetzen

Vielen Dank, ich habe mich in Assembly verwandelt und funktioniert perfekt.