mikrocontroller.net

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


Autor: Olli R. (downunderthunder42)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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?

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

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

Tabulatoren haben nichts im Quelltext zu suchen!

MfG Spess

Autor: Olli R. (downunderthunder42)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ok ich habe mal den Code formatiert.
Werde ich in Zukunft mal besser drauf achten.

Autor: Olli R. (downunderthunder42)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok einen Fehler habe nun selbst gefunden:

ich habe zum Schluss

pop r18 geschrieben statt pop r16

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Olli R. (downunderthunder42)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jo Danke,
jetzt geht's

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Jo Danke,
>jetzt geht's

Wie gesagt, die Multiplikation ist eigentlich unnötig:
year_transform:
                     push   r17

                     clr    r17
                     rjmp year_transform_04
year_transform_03:
                     inc    r17
year_transform_04:
                     subi   r18, Low(100)
                     sbci   r19, High(100)
                     brcc   year_transform_03
                     subi   r18, -100
                     mov    r19, r16

                     pop    r17
                     ret 

Der Code hat das gleiche Ergebnis.

MfG Spess

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Korrektur:

 mov r19, r16 ->  mov r19, r17

MfG Spess

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.