mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 16 - Bit Register


Autor: Izoards (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt ja 3 16- Bit Register,  (X=R27:R26, Y=R29:R28, Z=R31:R30) ich 
möchte nun ein solches Register mit einer 16- Bit Zahl laden und danach 
bearbeiten, d.h. ich muss vom 16- Bit Register verschiedene 
Subtraktionen durchführen!!!

Wie kann ich dieses 16- Bit Register laden, und bearbeiten??? Muss ich 
da immer das L_Byte und H_Byte einzeln laden???

IZOARD

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sind keine richtigen 16Bit-Register sondern wie von dir schon 
geschrieben zwei 8Bit-Register. Entweder du lädst die Werte in Xhigh, 
Xlow ein oder über R27,R28. Kommt das gleiche heraus. X,Y und Z sind 
mehr als Adresspointer zu verstehen.

Autor: Izoards (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah Ok, aber wenn ich z.B. 1'000 von meiner zusammengestellten 16- Bit 
Zahl abziehen will, wie muss ich das denn machen??? muss ich die 1'000 
mit dem z.B. Z- Register darstellen und abziehen, oder muss ich das in 
mehreren Schritten tun, so dass ich z.B. 10 * 100 in einer Schlaufe 
abziehe????

thanks

izoard

Autor: Jonas Diemer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das geht wie folgt:

die zahl sollte im hex format vorliegen:

1000 = 0xE38.

deine register seien XH und XL.

du ziehst nun einfach (mit sub oder subi) 0x38 (der LOW teil von 1000) 
von XL ab. Hierbei wird das Carry flag gesetzt, sollte Xl unterlaufen 
(d.h. XL<0x38).

nun ziehst du von XH 0x0E ab. Hierfür verwendest du SBC oder SBCI. Diese 
funktion zieht dann zusätzlich das carry-flag von XH ab (also XH = XH-1, 
wenn das C-Flag gesetzt ist).

schon biste fertig.

Autor: Izoards (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank.
Jetzt habe ich noch eine Frage, ich muss eine Abfrage realisieren, bei 
der ich springe, wenn das X- Register grösser oder gleich 1000 ist, kann 
man das mit cpi Befehlen realisieren??? Ich habe es schon versucht, doch 
es wird ziemlich unübersichtlich, gibt es da einen besseren Weg???

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.