在下面寻址方式的示意图中,OP表示操作码;RA-MEND表示RAM空间的最高位地址;FLASHEND表示FLASH空间的最高位地址。
(1)I/O寄存器直接寻址
I/O寄存器直接寻址就是由指令给出一个寄存器Rd的内容和一个I/O寄存器的内容作为操作数(如图3—3所示)。
寻址范围:I/O寄存器空间的地址$00~$3F,一共64个,取值为0~63或0~6 1,取决于不同指令。
例:
IN Rd,P;操作:Rd←P。
IN R6,$3F;读I/O寄存器空间地址为3F的寄存器(SREG)的内容,放到R6中。
(2)数据存储器直接寻址
数据存储器直接寻址用于直接从SRAM中读取数据。数据存储器直接寻址为4字节指令,其中,指令的较低2个字节给出的是一个1 6位的SRAM地址(如图3—4所示)。
数据存储器直接寻址方式可用于读取I/O寄存器和通用寄存器的内容,但此时使用的是该寄存器在SRAM中的映射地址。
寻址范围:一个1 6位的SRAM地址给出的地址空间,共64 KB,该地址空间包括了3 2个通用寄存器和64个I/O寄存器。
例:
LDS Rd,K;操作:Rd←(K)。
LDS R18,$200;把地址为$200的SRAM中内容放到R18中。
电子街推荐您阅读: