Hallo!
Ich habe begonnen, mir das Tutorial durchzulesen und bin jetzt bei
Arithmetik angelangt. Ich verstehe soweit alles, außer dem Kommentar
beim Divisionsalgorithmus.
Da heißt es:
1
ldi r16, 109 ; Dividend
2
ldi r17, 9 ; Divisor
3
4
; Division r16 : r17
5
6
ldi r18, 8 ; 8 Bit Division
7
clr r19 ; Register für die Zwischenergebnisse / Rest
8
clr r20 ; Ergebnis
9
10
divloop:
11
lsl r16 ; Zwischenergebnis mal 2 nehmen und das
12
rol r19 ; nächste Bit des Dividenden anhängen
13
14
lsl r20 ; das Ergebnis auf jeden Fall mal 2 nehmen,
15
; das hängt effektiv eine 0 an das Ergebnis an.
16
; Sollte das nächste Ergebnis-Bit 1 sein, dann wird
17
; diese 0 in Folge durch eine 1 ausgetauscht
18
19
cp r19, r17 ; ist der Divisor größer?
20
brlo div_zero ; wenn nein, dann bleibt die 0
21
sbr r20, 1 ; wenn ja, dann jetzt die 0 durch eine 1 austauschen ...
22
sub r19, r17 ; ... und den Divisor abziehen
23
24
div_zero:
25
dec r18 ; das Ganze 8 mal wiederholen
26
brne divloop
27
28
; in r20 steht das Ergebnis der Division
29
; in r19 steht der bei der Division entstehende Rest
Müssste das bei
1
cp r19, r17 ; ist der Divisor größer?
2
brlo div_zero ; wenn nein, dann bleibt die 0
3
sbr r20, 1 ; wenn ja, dann jetzt die 0 durch eine 1 austauschen ..
4
sub r19, r17 ; ... und den Divisor abziehen
wenn ja, dann bleibt die 0
Denn wenn der Divisor größer ist, bleibt ja die Null...
Dividend geteilt durch Divisor ist gleich Quotient...
Wenn der Divisor (also die Zahl, durch die geteilt wird) größer ist als
der momentan berücksichtigte Teil des Dividenden, dann ist das Ergebnis
dieser Stelle nunmal 0.
Oder:
Wenn der Dividend kleiner als der Divisor ist, kommt 0 raus.
Was ist daran falsch?
KH
Stimmt, wird wohl wieder ein "kleiner Aufmerksamkeitstest" des Autors
gewesen sein, den ich glatt übersehen habe (sorry). Falls nicht, Autoren
sind auch nur Menschen. Schau in der Historie nach und frag den Autor,
er kann es dann korregieren (oder als Test stehen lassen).
KH
Ne, korrigiers lieber gleich selbst - dafür ist das Wiki ja da. Es
besteht hier ja kein Zweifel, dass es falsch ist.
Aufmerksamkeitstest sollten in einem Tutorial nicht drin sein!
Eine eigene Frage?
Dieser Thread ist über 18 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.