Hallo, die angehängte Subroutine soll eine 4stellige Zahl in 2 2stellige Zahlen wandeln. Irgenwo ist aber noch ein Fehler! wenn ich die Zahl "2011" übergebe, kommt "02" und "C2" heraus?
Hi Formatiere erst mal deinen Code. Da verdirbt man sich ja die Augen. Tabulatoren haben nichts im Quelltext zu suchen! MfG Spess
Ok ich habe mal den Code formatiert. Werde ich in Zukunft mal besser drauf achten.
Ok einen Fehler habe nun selbst gefunden: ich habe zum Schluss pop r18 geschrieben statt pop r16
HI >Ok ich habe mal den Code formatiert. >Werde ich in Zukunft mal besser drauf achten. Na, geht doch > ldi r20, 10 > mul r16, r20 ; multipliziere r16 (die > add r16, r17 ; add > mov r19, r16 ; kopiere die Das Ergebnis einer Multiplikation ist in r1:r0. Aber das kannst du dir sparen, wenn du nur durch 100 teilst. MfG Spess
Jo Danke, jetzt geht's
Hi >Jo Danke, >jetzt geht's Wie gesagt, die Multiplikation ist eigentlich unnötig:
1 | year_transform: |
2 | push r17 |
3 | |
4 | clr r17 |
5 | rjmp year_transform_04 |
6 | year_transform_03: |
7 | inc r17 |
8 | year_transform_04: |
9 | subi r18, Low(100) |
10 | sbci r19, High(100) |
11 | brcc year_transform_03 |
12 | subi r18, -100 |
13 | mov r19, r16 |
14 | |
15 | pop r17 |
16 | ret |
Der Code hat das gleiche Ergebnis. MfG Spess
Hi Korrektur: mov r19, r16 -> mov r19, r17 MfG Spess
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.