Assembler Code für ATTiny2313 richtig verstehen

Gast #2098234
Lesenswert?

Hallo zusammen.

Ich habe eine Frage zum Assembler Code eines ATTiny 2313. Ich habe eine 
Programm in C geschrieben und compeliert. Anschließend habe ich mir den 
Assembler Code im List File angeschaut und finde immer wieder Stellen 
die wie folgt übersetzt sind:

LDI  R30,LOW(24)


Was bedeutet das LOW(24)?
Diese Zeile wird von der Syntax her immer wieder wiederholt, dann steht 
auch mal ein HIGH(xx) da.

Kann mir jemand eine kurze erläuterung geben?
Danke euch
Gast #2098248
Lesenswert?

Ich versuche es Dir mal zu erklären. Kann aber sein da ich auch noch 
recht neu bin das ich es eventuell nicht 100%ig erkläre.

Also da ein Register nur 8Bit (1Byte) in sich aufnehmen kann, den Wert 
von 0-255 (0-ff) wird damit erreicht das du auch 16Bit Werte bearbeiten 
kannst. Dafür hat der ATTiny auch Register.

Nun kannst du die Registerpaare aber nicht direkt mit einem 16Bit wert 
beschreiben, also musst du es aufteilen. Dieses macht man mit LOW() und 
HIGH()

ldi  r16,low(1025)  ist also gleich ldi r16,1
ldi  r17,high(1025) ist also gleich ldi r17,4

Warum? 4x256+1=1025

Also high liefert die das high von 16Bit und low den rest.

Hoffe ich habe jetzt nix falsch gesagt. So habe ich das wenigstens 
verstanden.
Gast #2098255
Lesenswert?

Danke euch.

Habe ich jetzt verstanden und macht auch Sinn. Die Werte die ich in C 
setze oder einem Register zuweise, werden so im Assembler entsprechend 
mit Low() oder High () einem Resgister zugewiesen.

Danke nochmal.

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