;Stringausgabe aus Kode-Speicher
#ifndef AVRSTR_I90
#define AVRSTR_I90
;Benötigt:
; putchar(r16) Zeichen schreiben (blockierend)
;Bietet (diverses):
; SendStr(Z) konstanten String ausgeben
; SendStrAfter konstanten String nach RCALL ausgeben
; JumpZ(Z) Byteadresse Z in Wort aufrunden und anspringen
ss1: rcall putchar
SendStr: ;konstanten String ausgeben
;PE: Z = Zeiger auf nullterminierte Zeichenkette im Kode-Speicher
;PA: -
;VR: Z (zeigt hinter die Null), R0=0
lpm r16,z+
tst r16
brne ss1
ret
SendStrAfter: ;konstanten String nach CALL ausgeben
;PE: Nullterminierte Zeichenkette hinter dem CALL-Befehl
;PA: -
;VR: R0=0
pophl Z ;eigentliche Rückkehradresse holen,
;da steht der String
lslhl Z ;verdoppeln (Byte-Adresse)
rcall SendStr
JumpZ:
adiw ZH:ZL,1 ;aufrunden
lsrhl Z ;halbieren (Wort-Adresse)
ijmp ;springt nach Z (ZH:ZL)
#endif//AVRSTR_I90
Vorgefundene Kodierung: UTF-8 | 0
|