Assembly ATmega32是8位还是16位?

Assembly ATmega32是8位还是16位?,assembly,avr,atmega16,Assembly,Avr,Atmega16,ATmega32是8位还是16位微控制器 在阅读Mazidi的AVR书籍时,有人指出ATmega32中的RAMEND位于0x085f,这是一个16位地址。摘自本书。cpu是8位的,因为通用寄存器是8位寄存器 有一些16位寄存器,例如堆栈指针SP和程序计数器PC。但它们必须更大,因为地址空间超过256字节长 我们仍然说cpu是8位的,因为通用寄存器执行8位操作。它是8位cpu。您引用的ramend值与此无关。我想你没有注意到这段代码是用来设置堆栈指针的atmega32代码。他使用了一个16位地址。

ATmega32是8位还是16位微控制器


在阅读Mazidi的AVR书籍时,有人指出ATmega32中的RAMEND位于0x085f,这是一个16位地址。摘自本书。

cpu是8位的,因为通用寄存器是8位寄存器

有一些16位寄存器,例如堆栈指针SP和程序计数器PC。但它们必须更大,因为地址空间超过256字节长


我们仍然说cpu是8位的,因为通用寄存器执行8位操作。

它是8位cpu。您引用的ramend值与此无关。我想你没有注意到这段代码是用来设置堆栈指针的atmega32代码。他使用了一个16位地址。它是在atmel公司提供的头文件中定义的。ramend是0x085fy你没抓住重点。它是一个8位cpu,但这并不意味着它的内存不能超过256字节,也不意味着它不能处理更大的值。你的意思是这段代码是正确的。虽然微控制器是8位的是,但也有一些16位的寄存器,可以是大于16位的寄存器。一些AVR设备有太多的闪存程序存储器,以至于PC中的16位不足以全部寻址,因此除了HI和LO之外,还有一个扩展部分。但一般来说,当人们说寄存器时,他们指的是在数学运算中使用的通用寄存器。从技术上讲,SP、PC和STATUS也是寄存器,但它们不是我们讨论的寄存器。还有一些16位通用寄存器,X、Y和Z。但它们实际上只是8位寄存器对的名称,而不是独立的16位寄存器本身。它们通常用于基于地址的指令中。为了补充UncleO宝贵的答案,我建议阅读post中的答案,其中给出了关于内存大小和寄存器大小之间关系的更多信息。