在下面寻址方式的示意图中,OP表示操作码;RA-MEND表示RAM空间的最高位地址;FLASHEND表示FLASH空间的最高位地址。
程序存储器写数据寻址
程序存储器写数据寻址方式主要用于具有系统自编程功能的A V R单片机中,该寻址方式只能用于指令SPM。
指令执行时,将寄存器R1和R0中的组成内容R1:R0写入到由Z寄存器的内容作为地址的程序存储器单元中。注意:指令中Z寄存器的最低位必须为0。
例: SPM
操作:(Z)←R1:R0。把R1:R0内容写入到以Z为指针的程序存储器单元中。
程序存储器直接寻址
程序存储器直接寻址方式用于程序跳转指令JMP和CALL。指令中.低位是一个1 6位的操作数,指令将该操作数存入程序计数器PC中,作为下一条要执行的指令在程序存储器中的地址。JMP和CALL指令的寻址方式相同.但CALL指令除了把操作数给PC外.还把返回地址压入堆栈且堆栈指针寄存器SP内容减2(如图3-11所示)。
例:
JMP$0100
操作:PC←$0 100。执行从程序存储器$0 100开始的指令。
CALL$0100
操作:STACK←PC+2,SP←SP-2,PC←$0 1 00。指令先将程序计数器PC加2后压入堆栈。堆栈指针SP减2.然后执行从程序存储器$0100开始的指令。
电子街推荐您: