-
Notifications
You must be signed in to change notification settings - Fork 3
PM_Opc_TST
== 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 |
#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
"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.
Zero: Set when result is 0
Sign: Set when bit 7 of the result is 1
Carry and Overflow remain unchanged
; 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