2014-10-11 247 views
0

你好家伙我有一个快速的问题,但我还没有无法回答。我很感激这一些帮助:汇编堆栈指针AVR

LDI R31, 0 

我不太清楚这是什么一样,但是在这之前我加载堆栈指针HIGH等于$ 08和低等于$ 5F(我知道这是RAMEND定义为我的Arduino的内存结束)。有人可以解释一下这会对堆栈/堆栈指针做什么吗?我知道R31被用作高字节,但我不确定这会对我当前的一堆值产生什么影响。

这是我家庭作业中的一小部分,但我确实认为理解这一点非常重要。 谢谢!

回答

2

R31是Z寄存器的一部分,它是R31:R30的别名。 X,Y和Z寄存器被一些汇编指令用于间接寻址。请参阅AVR instruction Set.LDI R31, 0将寄存器31设置为0.它对堆栈或堆栈指针没有影响。

看起来您正在查看一些汇编代码,特别是在程序开始附近。通常,这是C运行时初始化堆栈指针和RAM等的地方。程序中用源代码初始化的变量将其初始值从程序代码结尾附近的数据部分复制到RAM中,变量实际驻留在RAM中。 Z寄存器对此很有用,因为它可以很容易地循环播放节目数据。