avr asm per gcc: array?

OP (Firma: Brainit GmbH) #4025512
Lesenswert?

Ich kriegs irgendwie nicht hin...

ich brauch in asm ein kleines "array" mit 64 byte, auch welches ich dann 
über das Y-Register zugreife. Der Zugriff ist (hoffentlich) einfach:
1
  lds  r24, _SFR_IO_ADDR(ADCH) ; read upper 8 bits
2
  subi  r24, 127    ; convert to signed
3
  lds  r25, index    ;
4
  ldi  r28, lo8(buffer)  ; Y = buffer[0]
5
  ldi  r29, hi8(buffer)  ;
6
  add  r28, r25    ; Y= buffer[index]
7
  adc  r29, r2      ; zero
8
  st  Y, r24

Doch da stellt sich gleich die erste Frage: _SFR_IO_ADDR(ADCH) dürfte 
falsch sein, zumindest ist der resultierende Code falsch. ich hab noch 
nicht wirklich durchschaut wann ich _SFR_IO_ADDR() verwende und wann 
nicht....

aber mein größeres Probem: Wie definiere ich dann meine 64 byte für 
"buffer" richtig? .local, .comm, .byte, brauch ich einen label, ...

ein kurzes Beispiel, wie mans "sauber" macht, würde mir sehr helfen!

übrigens: "buffer" soll lokal sein, braucht also dem Linker nicht 
bekannt gemacht zu werden.

Danke! (Aller AsmAnfang ist schwer...)

Bitte: ich rede von gcc-asm (also .sx) nicht vom AVR-Assembler!

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