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
Hi
>Was bedeutet das LOW(24)?
Low(x) sind die unteren 8 Bit eines 16-Bit-Wertes
Low($1234) -> $34
High($1234) -> $12
MfG Spess
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.
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.