Forum: Mikrocontroller und Digitale Elektronik Subroutine 4stellige Zahl in 2 2stelligen Zahlen wandeln. was ist falsch?


von Olli R. (downunderthunder42)


Angehängte Dateien:

Lesenswert?

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?

von Spess53 (Gast)


Lesenswert?

Hi

Formatiere erst mal deinen Code. Da verdirbt man sich ja die Augen.

Tabulatoren haben nichts im Quelltext zu suchen!

MfG Spess

von Olli R. (downunderthunder42)


Angehängte Dateien:

Lesenswert?

Ok ich habe mal den Code formatiert.
Werde ich in Zukunft mal besser drauf achten.

von Olli R. (downunderthunder42)


Lesenswert?

Ok einen Fehler habe nun selbst gefunden:

ich habe zum Schluss

pop r18 geschrieben statt pop r16

von Spess53 (Gast)


Lesenswert?

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

von Olli R. (downunderthunder42)


Lesenswert?

Jo Danke,
jetzt geht's

von Spess53 (Gast)


Lesenswert?

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

von Spess53 (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.