## 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 = 0x85
    TST A, $80
    ; F = (Zero=0):(Sign=1)

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

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

« Back to Instruction set

Retrieved from "http://wiki.sublab.net/index.php/PM_Opc_TST"

© 2011-2015 by JustBurn - Hardware documentation copy from Sublab by Team-Pokémé