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