AVR字节存储
AVR Byte Storage
嘿,我是 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) 中定义了三个单字节变量。
- RegA 将存储在 0x0100(这是 RAM 中 字节 的地址,而不是 16 位字或类似的东西)
- RegB 将存储在 0x0101
- RegC 将存储在 0x0102
如果您能够编译并link这段代码,您应该能够查看反汇编列表或映射文件来验证这一点。
嘿,我是 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) 中定义了三个单字节变量。
- RegA 将存储在 0x0100(这是 RAM 中 字节 的地址,而不是 16 位字或类似的东西)
- RegB 将存储在 0x0101
- RegC 将存储在 0x0102
如果您能够编译并link这段代码,您应该能够查看反汇编列表或映射文件来验证这一点。