嘿,我刚接触AVR系列的汇编编程,但熟悉uC就像PIC一样。我现在感到困惑的是以下摘自一些示例代码。
.dseg
.org 0x0100
RegA: .byte 1
RegB: .byte 1
RegC: .byte 1
....
使用PIC系列,您可以在定义标签后立即指定标记寄存器的地址。但是在AVR系列中,使用这种语法,我不确定RegC
存储在哪里。我知道ATMega328P上的SRAM是16位宽,这意味着RegA
和RegB
存储在0x0100
?结果堆栈指针自动递增并将RegC存储在地址0x0101
?
它看起来这个代码在数据存储器(RAM)中定义了三个单字节变量。
如果您能够编译和链接此代码,您应该能够查看反汇编列表或映射文件以验证这一点。