Tengo un programa en ensamblador como este:
lots of code
......
.ORG $7000 ;; (or somewhere)
atext: .DB "this is a test string 1"
.ALIGN EVEN
Btext: .DB "this is a test string 2"
- PREGUNTA: Suponiendo que la longitud del texto 1 es ODD- ¿Es posible ALINEAR Btext usando algún comando del comando ALIGN (como arriba)? El ensamblador Atmel (studío 6.2) dice que NO, pero me pregunto ...
(El problema se resuelve fácilmente mediante una alineación manual como esta:
atext: .DB "this is a test string 1",0,0
// 01234567890123456789012 3 4
Y añadiendo ceros donde sea necesario para alinear.
- PREGUNTA:
Ahora quiero escribir el texto en mi monitor de serie.
Así que hago esto;
ldi zh,High (text1)
ldi zl,LOW (text1)
push ZH
push ZL
lsl ZL
rol ZH ;; to ensure LPM later
WRTE: lpm R16,Z+ ; get byte/data
cpi R16,0
breq wrte2
call output
rjmp wrte
wrte2:
pop zl
pop zh
ret
Ahora me pregunto: si uso
......
WRTE: LD R16,Z+ ; get byte/data /// BAD - DON'T
.....
¿Qué obtendré en R16?