AVR asembler - ne/zarovnanie dat
Jan Waclawek
wek@evona.sk
Středa Prosinec 15 16:41:03 CET 2004
Jan Kral wrote:
> Ten NOP tam je samozrejme jen aby bylo neco za navestim. I kdyby ty stringy narovnal nejaky prekladac za sebe bez doplneni nulou na sudou delku, tak jak by jste adresoval string, ktery by zacinal na liche adrese?
> Rekl bych, ze je to dano organizaci pameti, ktera je slovo=2bytum.
>
Pardon, vybral som ten blbsi priklad.
Aby vynikla "moznost adresovat "lichou adresu"":
ldi acc,2 ;print second text from table
ldi ZL,LOW(2*Tab)
ldi ZH,HIGH(2*Tab)
PrintX1:
lpm r4,Z+
dec acc
breq PrintX2
add ZL,r4
clr r4
adc ZH,r4
rjmp PrintX1
PrintX2:
rcall TxText
ret
;--------------
;transmit text of length [r4] pointed by [Z]
TxText:
TxTextX1:
tst r4
breq TxTextRet
lpm acc,Z+
rcall TxByte
dec r4
rjmp TxTextX1
TxTextRet:
ret
Tab:
TF1Text:
.db 2*(TF1TextE-TF1Text)-1,"TEST1 ",13 ;text length + text
(for avr assembler make text length odd)
TF1TextE:
TF2Text:
.db 2*(TF2TextE-TF2Text)-1,"TEST2 ",13 ;text length + text
(for avr assembler make text length odd)
TF2TextE:
Další informace o konferenci Hw-list