PM Opc TST

From SublabWiki
Jump to: navigation, search

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