9 Bit in 8 Bit-Register laden mit Studio 4.12

Gast #464872
Lesenswert?
• ▲
▼
Hallo,

ich möchte ein ASM-File von der Codesammlung mit AVR-Studio 4.12 
assemblieren
und erhalte folgende Fehlermeldungen:

>C:\src\Timer_test\Timer_test.asm(41): error: Operand(s) out of range in 'ldi 
>r18,0x100'
>C:\src\Timer_test\Timer_test.asm(71): error: Operand(s) out of range in 'ldi 
>r18,0x100'

Die Fehler bezieht sich auf folgende Zeile im Quelltext:

>  ldi  prescaler, debounce

wobei Prescaler oben mit r18 und debounce mit 256 Definiert wird.

Frage:

Nutzt jemand einen Assembler der es zulässt 16Bit Werte in 8Bit-Register 
zu schreiben und wenn ja, welches Byte wird dann tatsächlich übertragen,
High oder Low-Byte ?

Übrigens handelt es sich um
Beitrag "Die genaue Sekunde / RTC"

Gruss Jürgen
#464884
Lesenswert?
• ▲
▼
Hi,
also zunächst kannst du nicht 9 bit in ein 8 bit-Register speichern, da 
es nur 8 bit hat.

Du kannst aber 9 bit in zwei 8 bit-Register speichern dazu musst du die 
Zahl zerlegen.
debounce hat bei deinem Beispiel den Wert 256 = 0b100000000

Wenn du nun die unteren 8 bits in das Register R18 speichern willst:
ldi R18, LOW(debounce); R18 = 0b00000000

Und so speicherst du die oberen bits (also in deisem Falle die 0b1) nind 
Regsiter R19:
ldi R19,HIGH(debounce); R19 = 0b00000001

Ich hoffe ich habe dir damit geholfen. Somit kannst du also Konstante 
Zahlen bis 16 bit in zwei Register speichern.

Gruß Marc
Gast #464888
Lesenswert?
• ▲
▼
Das ist mir alles vollkommen klar ;-)

Mir geht es nicht um die Aufteilung von 16Bit Zahlen in 2 Register, 
sondern um die Syntax.

Nochmal:
Da es anscheinend Assembler gibt die den Befehl
"ldi r16,$100" zulassen, möchte ich wissen was in R16 landet, $00 oder 
$01

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.