Problem mit Macro's im AVR-Assembler

Gast #18518
Lesenswert?

Hallo,

ich habe ein kleines Problem mit Macro's im AVR-Assembler:

.DEF temp = r16

.MACRO  outi
  ldi  temp, @1
  out  @0, temp
.ENDMACRO

  outi  DDRB, 100000b  ; => DDRB = 00001011b => falsch
  outi  DDRB, 32  ; => DDRB = 32        => richtig
  outi  DDRB, 0x20  ; => DDRB = 0x20      => richtig


Warum ist nach dem ersten outi eine falscher Wert im DDRB Register ?



Gruß
Matthias
Gast #18523
Lesenswert?

Nö. Mancher Assembler ignoriert das b einfach ganz. Der ATMEL Assembler 
gibt noch eine lapidare Warnung "Trash at end of line, ignored!". Ob er 
das auch macht, wenn der Parameter über einen Makroaufruf übergeben 
wird, weiß ich nicht.
Jedenfalls ist 100000 dezimal soviel wie 0x186A0. Und auch da bekleckert 
sich der ATMEL Assembler nicht gerade mit Ruhm: er nimmt halt, was 
passt, nämlich A0. Und ignoriert den Rest.
Oder sind die neuen Versionen besser? Ich arbeite noch mit den alten.

MfG
Gerd

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