AVR 微控制器中的分支指令28 Aug 2024 | 5 分钟阅读 要理解分支指令,我们应该先了解 AVR 微控制器中的循环。之后,我们将学习分支指令的两种类型:条件分支指令和无条件分支指令。 AVR 微控制器中的循环当我们编写代码时,首先想到的最基本的技术就是循环。循环可以描述为一组指令或编程中的重复操作。如果我们在 AVR (Alf and Vegard's RISC 处理器) 中重复编写一组指令,只有一种方法可以执行循环。 例如 通过上面的例子,我们可以看到上面的代码占用了大量的空间,效率也很低。因此,我们可以借助分支指令,使上述循环代码更简单、更节省空间。 分支指令在程序循环和条件语句中,控制流通过分支指令实现。如果满足给定条件,则只执行特定指令序列。当我们执行分支指令时,执行会切换到不同的指令。分支指令有两种类型:条件分支指令和无条件分支指令。 条件分支指令条件分支指令可以描述为一组指令。它用于通过提供跳出循环的分支来控制程序流程。 下表描述了各种类型的条件分支指令及其解释
使用 BRNE 的循环BRNE 指“如果不相等则分支”。如果 Z 清除,它将测试零标志 (Z) 并相对于 PC 进行分支。它基本上使用状态寄存器中的 Z 标志。 例如 在这个例子中,我们将编写代码将 5 添加到 C,这个过程将重复 20 次。最后,借助 BRNE 指令,我们将和发送到 PORTC。 所有条件分支都基本上使用短跳。这意味着目标地址必须在程序计数器 64 字节范围内。 无条件分支指令无条件分支可以描述为将控制无条件地转移到目标地址的跳转。AVR 基本上有三种类型的无条件分支指令,即 JMP、IJMP 和 RJMP。无条件分支的指令描述如下: JMP JMP 指令也称为长跳转。它是一种无条件跳转,可以跳转到任何内存位置,但该位置必须在 AVR 的 4M(字)地址空间内。JMP 指令是 4 字节指令。其中 10 位表示操作码,其余 22 位表示目标位置的 22 位地址。 RJMP RJMP 指令也称为相对跳转。RJMP 指令是 2 字节指令。其中前四位表示操作码,其余位表示目标位置的相对地址。相对地址的范围是 000-$FFF,它分为两个跳转:后向跳转和前向跳转。此跳转必须在相对于当前程序计数器地址的 -2048 和 +2047 内存范围内。 IJMP IJMP 指令也称为间接跳转。IJMP 指令是 2 字节指令。当我们执行 IJMP 指令时,程序计数器将通过 Z 寄存器的内容加载。这意味着 Z 寄存器提供一个地址,IJMP 跳转到此地址。此指令能够在 PC(程序计数器)的最低 64k 字(128KB)内跳转。 下一主题AVR 微控制器中的条件分支指令 |
我们请求您订阅我们的新闻通讯以获取最新更新。