📜  AVR微控制器中的条件分支指令

📅  最后修改于: 2021-06-28 15:39:51             🧑  作者: Mango

条件分支指令是用于从循环中分支出来的一组指令。我们将为AVR微控制器讨论这些说明。

要理解这些指令,首先,我们需要了解AVR微控制器中的寄存器。

  1. 状态寄存器(SReg):
    • 它是AVR微控制器中的标志寄存器。
    • 它是一个8位寄存器。这8位中只有6位称为条件标志。它们是C,Z,N,V,S,H。
    • 这些位的值指示指令执行后产生的某些条件。
  2. C –进位标志:
    • 只要D7位有进位,就置位该标志。
    • 8位加法或减法后,此标志位会受到影响。
  3. Z –零标记:
    • 零标志反映算术或逻辑运算的结果。
    • 如果结果为零,则Z =1。因此,如果结果不为零,则Z = 0。
  4. N –负旗:
    • 带符号数字的二进制表示使用D7作为符号位。
    • 负标志反映算术运算的结果。如果结果的D7位为零。
    • 然后N = 0,结果为正。如果D7位为1,则N = 1,结果为负。
  5. V –溢出标志:
    • 只要有符号数字运算的结果太大,就设置该标志。
    • 导致高位溢出到符号位。
  6. S –标志旗:
    • 该标志是N和V标志的异或结果。
  7. H –半旗:
    • 如果在ADD或SUB操作期间从D3到D4有进位,则该位置1;否则,该位置1。否则清除。
    • 该标志位由执行BCD(二进制编码的十进制)算术的指令使用。

下表显示了一些分支循环指令:

Instruction Explanation Flag Status
BREQ Branch if equal Branch if Z = 1
BRNE Branch if not equal Branch if Z = 0
BRSH Branch if same or higher Branch if C = 0
BRLO Branch if lower Branch if C = 1
BRLT Branch if less than (signed) Branch if S = 1
BRGE Branch if greater than or equal (signed) Branch if S = 0 BRVS Branch if Overflow flag set Branch if V = 1
BRVC Branch if Overflow flag clear Branch if V = 0