嗨,我是 avr asm 编程的新手,在下面的示例中,我有几个问题:
1)它是标签:8位还是16位长?
2) 为什么需要与 2 相乘的标签?
3) 指令 LPM 将其结果放入寄存器 R0?如果是这样,那与 Z 有什么关系?
4)您能否解释提供的链接中引用的文本:
“如果地址不乘以 2 并且标签位于字节地址 0x60(字地址 0x30),Z 将指向存储在那里的代码。我希望这能澄清寻址问题。其他版本是”
ldi ZL, low(2*label)
ldi ZH, high(2*label)
label:
.db "Hello world", 0
lpm
谢谢。