AVR asembler - ne/zarovnanie dat
Miroslav Sinko
sinkomiro@rocketmail.com
Čtvrtek Prosinec 16 11:06:56 CET 2004
Ak je ten text naozaj ASCII text, nie je vyhodnejsie nedrzat si k nemu
dlzku, ale zakoncit ho nulou? Vysielacia rutina potom bude vysielat az
kym na nu nenarazi.
TxTabText:
push ZL
push ZH
ldi ZL,LOW(TextTab*2)
ldi ZH,HIGH(TextTab*2)
este: lpm r4,Z+
tst r4
breq koniec
rcall TxText ;ak je vstupom TxText znak v r4...
rjmp este
koniec: pop ZH
pop ZL
ret
TextTab:
.db "prvy text",0
V tabulke ak bude pocet znakov textu neparny, netreba ani 0 pridavat,
zarovnanie ju tam vlozi samo. No pre prehladnost a pokoj v dusi by som
ju pisal vsade.
miro
--- Jan Waclawek <wek@evona.sk> wrote:
> 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.
>
> Pri LPM sa samozrejme adresuje bytovo.
>
> Vynatok z kodu pracujuceho nad tymito datami (schvalne pripajam aj
> komentar ktory tam naozaj mam, som nastvany :-) :
>
>
> TxTabText:
> push ZL
> push ZH
> ldi ZL,LOW(TextTab*2)
> ldi ZH,HIGH(TextTab*2)
> clr r4
> add acc,acc
> add acc,acc
> add ZL,acc
> adc ZH,r4
> lpm r4,Z+
> lpm acc,Z+
> lpm acc,Z+
> lpm ZH,Z
> mov ZL,acc
> rcall TxText
> pop ZH
> pop ZL
> ret
>
> TextTab:
> .dw 2*(Text0E-Text0), 2*Text0
> .dw 2*(Text1E-Text1), 2*Text1
> .dw 2*(Text2E-Text2), 2*Text2
> .dw 2*(Text3E-Text3), 2*Text3
> .dw 2*(Text4E-Text4), 2*Text4
> .dw 2*(Text5E-Text5), 2*Text5
>
> Text0: .db "Test start...",13 ;make all texts even length...
> (stupid avr assembler)
> Text0E:
> Text1: .db "Testing bit "
> Text1E:
> Text2: .db " - OK. ",13
> Text2E:
> Text3: .db " - error to bit "
> Text3E:
> Text4: .db " - short.",13
> Text4E:
> Text5: .db " - open. ",13
> Text5E:
> ;----------------
>
> Jasne, toto je trivialne a da sa to napisat aj inak; ale v pripade co
>
> som popisoval, t.j. ze chcem mat za sebou rozne data roznej dlzky a
> chcem si to zapisat nejako pekne prehladne - a nechcem plytvat
> flashkou
> - to proste nejde.
>
> Cely AVR je taky akysi asymetricky - tu chyba toto a tam sa zas
> nesmie
> hento a hentam zasa cosi vycnieva.
> Fakt je to dobre len pre to blbe cecko, pre cloveka sa to nehodi.
>
> wek
>
>
> PS. V tom C je to lepsie?
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
__________________________________
Do you Yahoo!?
Send holiday email and support a worthy cause. Do good.
http://celebrity.mail.yahoo.com
Další informace o konferenci Hw-list