Rev. 1.50, 10/04, page 217 of 448
10.1.9 BT (Branch if True): Branch Instruction
Format Operation Instruction Code Cycle T Bit
BT label If T = 1
PC + 4 + disp × 2 → PC
If T = 0, nop
10001001dddddddd 1 —
Description: This is a conditional branch instruction that references the T bit. The branch is taken
if T = 1, and not taken if T = 0.
The branch destination is address (PC + 4 + displacement × 2). The PC source value is the BT
instruction address. As the 8-bit displacement is multiplied by two after sign-extension, the branch
destination can be located in the range from –256 to +254 bytes from the BT instruction.
Notes: If the branch destination cannot be reached, the branch must be handled by using BT in
combination with a BRA or JMP instruction, for example.
Operation:
BT(int d) /* BT disp */
{
int disp;
if ((d&0x80)==0)
disp = (0x000000FF & d);
else disp = (0xFFFFFF00 | d);
if (T==1)
PC = PC + 4 + (disp<<1);
else PC += 2;
}
Example:
SETT ;Normally T = 1
BF TRGET_F ;T = 1, so branch is not taken.
BT TRGET_T ;T = 1, so branch to TRGET_T.
NOP ;
NOP ;
TRGET_T: ;← BT instruction branch destination