Forum: Mikrocontroller und Digitale Elektronik Flash Daten ausgeben


von Elbegucker (Gast)


Lesenswert?

Hallo zusammen

ich programmiere gerade in Assembler.
Und möchte gerne mehrere im Flash abgelegte Texte über Uart ausgeben.

Zur Zeit sieht das so aus:

main:

  ldi temp1, low(RAMEND)
  out SPL, temp1
  ldi temp1, high(RAMEND)
  out SPH, temp1

  ...

  call ausgabe_text1
  ....
  call ausgabe_text2


ende:

jmp   ende

------------------------------

ausgabe_text1:

    ldi     ZL,low(text1*2)        ; Z Pointer laden
    ldi     ZH,high(text1*2)
    rcall   serout_string

ret

ausgabe_text2:

    ldi     ZL,low(text2*2)        ; Z Pointer laden
    ldi     ZH,high(text2*2)
    rcall   serout_string

ret

Text1:  .db "hier",0,0
Text2:  .db "springt",0

Nun habe ich wie gesagt mehrere Texte zur Ausgabe.
Wie kann ich die Zeilen ändern, um sie universell zu nutzen?

    call ausgabe_text1

    ldi     ZL,low(text1*2)        ; Z Pointer laden
    ldi     ZH,high(text1*2)


Danke im Vorraus

von spess53 (Gast)


Lesenswert?

Hi

Ich würde nicht für jeden Text ein Unterprogramm schreiben, sondern nur 
an den entsprechenden Stellen Z laden und 'serout_string' aufrufen. 
Evtl. ein Macro benutzen:

.macro textout
  ldi ZL,Low(@0*2)
  ldi ZH,High(@0*2)
  rcall   serout_string
.endmacro

Aufruf mit:
  textout text1

MfG Spess

von Elbegucker (Gast)


Lesenswert?

Danke das ist das, was ich gesucht habe. Immer wieder toll, dass einem 
die Leute hier so schnell helfen können.

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
Noch kein Account? Hier anmelden.