AVR字节存储

问题描述 投票:0回答:1

嘿,我刚接触AVR系列的汇编编程,但熟悉uC就像PIC一样。我现在感到困惑的是以下摘自一些示例代码。

.dseg
.org 0x0100

RegA: .byte 1
RegB: .byte 1
RegC: .byte 1

....

使用PIC系列,您可以在定义标签后立即指定标记寄存器的地址。但是在AVR系列中,使用这种语法,我不确定RegC存储在哪里。我知道ATMega328P上的SRAM是16位宽,这意味着RegARegB存储在0x0100?结果堆栈指针自动递增并将RegC存储在地址0x0101

assembly avr atmega
1个回答
1
投票

它看起来这个代码在数据存储器(RAM)中定义了三个单字节变量。

  • RegA将存储在0x0100(这是RAM中字节的地址,而不是16位字或类似的东西)
  • RegB将存储在0x0101
  • RegC将存储在0x0102

如果您能够编译和链接此代码,您应该能够查看反汇编列表或映射文件以验证这一点。

© www.soinside.com 2019 - 2024. All rights reserved.