Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 汇编堆栈指针AVR_Assembly_Arduino_Stack_Microcontroller_Avr - Fatal编程技术网

Assembly 汇编堆栈指针AVR

Assembly 汇编堆栈指针AVR,assembly,arduino,stack,microcontroller,avr,Assembly,Arduino,Stack,Microcontroller,Avr,大家好,我有一个简短的问题,但我还不能回答。我希望在这方面能得到一些帮助: LDI R31, 0 我不太清楚这是怎么回事,但在此之前,我加载堆栈指针HIGH等于$08,low等于$5F(我知道这是Arduino内存末尾的RAMEND定义)。有人能解释一下这会对堆栈/堆栈指针造成什么影响吗?我知道R31被用作高位字节,但我不确定这会对我当前的值堆栈产生什么影响 这是我家庭作业的一小部分,但我确实觉得理解这一点很重要。 谢谢 R31是Z寄存器的一部分,是R31:R30的别名。某些汇编指令使用X、

大家好,我有一个简短的问题,但我还不能回答。我希望在这方面能得到一些帮助:

LDI R31, 0 
我不太清楚这是怎么回事,但在此之前,我加载堆栈指针HIGH等于$08,low等于$5F(我知道这是Arduino内存末尾的RAMEND定义)。有人能解释一下这会对堆栈/堆栈指针造成什么影响吗?我知道R31被用作高位字节,但我不确定这会对我当前的值堆栈产生什么影响

这是我家庭作业的一小部分,但我确实觉得理解这一点很重要。
谢谢

R31是Z寄存器的一部分,是R31:R30的别名。某些汇编指令使用X、Y和Z寄存器进行间接寻址。参见
LDI R31,0
将寄存器31设置为0。它对堆栈或堆栈指针没有影响

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