条件分支指令是用于从循环中分支出来的一组指令。我们将为AVR微控制器讨论这些说明。
要理解这些指令,首先,我们需要了解AVR微控制器中的寄存器。
- 状态寄存器(SReg):
- 它是AVR微控制器中的标志寄存器。
- 它是一个8位寄存器。这8位中只有6位称为条件标志。它们是C,Z,N,V,S,H。
- 这些位的值指示指令执行后产生的某些条件。
- C –进位标志:
- 只要D7位有进位,就置位该标志。
- 8位加法或减法后,此标志位会受到影响。
- Z –零标记:
- 零标志反映算术或逻辑运算的结果。
- 如果结果为零,则Z =1。因此,如果结果不为零,则Z = 0。
- N –负旗:
- 带符号数字的二进制表示使用D7作为符号位。
- 负标志反映算术运算的结果。如果结果的D7位为零。
- 然后N = 0,结果为正。如果D7位为1,则N = 1,结果为负。
- V –溢出标志:
- 只要有符号数字运算的结果太大,就设置该标志。
- 导致高位溢出到符号位。
- S –标志标志:
- 该标志是N和V标志的异或结果。
- 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 |