# PM Opc TST

From SublabWiki

## TST = Test Bits

Hex | Mnemonic | Cycles |
---|---|---|

94 | TST A, B | 8 |

95 nn | TST [HL], #nn | 12 |

96 nn | TST A, #nn | 8 |

97 nn | TST B, #nn | 8 |

DC nn nn | TST [N+#nn], #nn | 16 |

### Execute

#nn = Immediate unsigned 8-Bits A = Register A B = Register B [N+#nn] = Memory: (I shl 16) or (N shl 8) or #nn [HL] = Memory: (I shl 16) or HL

; TST Sc2, Sc ; ; Sc2 = Source 2 ; Sc = Source (discarded) = Sc2 AND Sc

### Description

"8-Bits Source 2" Logic AND with "8-Bits Source", result is discarded.

Source is usually a mask, Flag Z (Zero) return true if the result masked bits are all 0.

Common usage: Check Bit 0 - Mask $01 Check Bit 1 - Mask $02 Check Bit 2 - Mask $04 Check Bit 3 - Mask $08 Check Bit 4 - Mask $10 Check Bit 5 - Mask $20 Check Bit 6 - Mask $40 Check Bit 7 - Mask $80 Zero result if Bit is 0. Non-zero result if Bit is 1.

### Conditions

Zero: Set when result is 0

Sign: Set when bit 7 of the result is 1

Carry and Overflow remain unchanged

### Examples

; A = 0x85TST A, $80; F = (Zero=0):(Sign=1)

; B = 0xF0TST B, $04; F = (Zero=1):(Sign=0)

; A = 0x05TST A, $01; F = (Zero=0):(Sign=0) JNZ OddAccu ; Called when first bit is 1. JZ EvenAccu