Subroutine 4stellige Zahl in 2 2stelligen Zahlen wandeln. was ist falsch?

OP #2049663
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?
Angehängte Dateien:
Gast #2049718
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
Gast #2049793
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren