关于AVR汇编变量存储最佳实践的问题



我刚开始在AVR微控制器中进行低级组装。我已将SRAM上的变量分配为:

var1:   .BYTE 2
var2:   .BYTE 2

之后,我通过SPI从传感器填充变量。使用间接寻址如:

;set up Z pointer
ldi ZL, low(var1)
ldi ZH, high(var1)
...
;store the result from registers r25 and r26 into RAM
st Z+, r25
st Z+, r26

我已经确认var1var2是连续存储在内存中。

现在我的问题是,在从传感器接收第二个2字节的var2后,是否可以只增加Z指针并存储结果,或者我是否应该再次设置Z指针?

这样做没有错。

但是,您应该注意维护问题。当一个地方的更改需要在另一个地方进行类似的更改时,这是一个潜在的长期维护问题——使代码容易出错。正是由于这个原因,我们更喜欢用某种形式的名称来定义常量,以防它的变化会改变该常量的所有用户,而且它使代码更具有自文档性。这也是为什么我们使用标签,这样我们可以插入代码或数据,让汇编程序做所有的调整。

所以,至少我要加上注释,说明代码中有一个期望的数据,这两个变量是连续的。

或者,我可以使var1长4个字节,这样var1是一个2个元素的数组,如果你愿意,没有var2-这也将完成与其他程序员的通信,这种存储被代码使用的方式。(有了这个,然后,我可能会添加注释,这是一个包含一对传感器值的2个元素的数组。)