AVR微控制器内部架构与算术逻辑指令解析
1. RJMP指令详解
RJMP(相对跳转)指令通常出现在代码末尾,其以二进制数字1100开头,后面跟着一个12位地址。该地址是相对于程序计数器(PC)中的当前地址。若地址为正,程序跳转到更高地址;若为负,则跳转到更低地址。在指令集手册中,相对跳转指令的范围是PC – 2K + 1到PC + 2K(字)。
例如,在示例程序中,RJMP指令用于跳转到程序顶部,即跳转到更低地址。图6.15中该指令编码的地址是二进制补码格式的负数,如0b111111111100,十进制值为 -4。程序从地址0开始有四条16位指令,RJMP指令位于地址3。当执行RJMP指令时,PC值为3,根据公式PC – 地址 + 1 计算跳转地址,即3 – 4 + 1 = 0,所以程序会按预期跳转到地址0。不过在编程时,我们可以使用标签作为跳转目标,让汇编程序计算相对地址。
2. 寻址模式概述
寻址模式是微控制器或微处理器指令集架构的一部分,它规定了指令访问源数据和目标数据的不同方式,也就是指令如何寻址内存位置、寄存器或常量数据值。在AVR微控制器中,寻址模式允许指令访问程序内存和数据内存,数据内存包括SRAM以及映射到数据内存空间的寄存器,如寄存器文件和I/O寄存器。
3. 寄存器直接寻址
AVR寄存器直接寻址有两种变体:单寄存器和双寄存器直接寻址。单寄存器直接寻址的一个例子是CLR(清除寄存器)指令,该指令对目标寄存器的完整地址进行编码,从而可以直接寻址该寄存器。在CLR指令中,寄存器文件寄存器的地址实际上被编码了两次,因为源和目标是同一个寄存器。
超级会员免费看
订阅专栏 解锁全文
5159

被折叠的 条评论
为什么被折叠?



