Difference between revisions of "BIT"
From GbdevWiki
(Created page with '{{Opcode}} This instruction is part of the $CB prefixed extended instruction set.<br> This instruction group tests various bits of the various registers, or memory location. It …') |
|||
| (One intermediate revision by the same user not shown) | |||
| Line 1: | Line 1: | ||
| − | {{ | + | {{Instruction| |
| − | + | Description=This instruction group tests various bits of the various registers, or memory location. | | |
| − | + | Encoding=<nowiki> | |
| − | This instruction group tests various bits of the various registers, or memory location. | + | |
| − | + | ||
01bbbrrr | 01bbbrrr | ||
| || | | | || | | ||
| |+-+- Register | | |+-+- Register | ||
| − | +-+---- Bit to test | + | +-+---- Bit to test |
Where register is one of the following: | Where register is one of the following: | ||
| Line 18: | Line 16: | ||
101: L - 2 Machine Cycles | 101: L - 2 Machine Cycles | ||
110: (HL) - 3 Machine Cycles | 110: (HL) - 3 Machine Cycles | ||
| − | 111: A - 2 Machine Cycles | + | 111: A - 2 Machine Cycles</nowiki> | |
| − | + | Z=1 if specified bit is 0; 0 otherwise | | |
| − | + | H=1 | | |
| − | + | N=0 | | |
| − | + | Example=<nowiki> | |
| − | + | void BIT(code, data) | |
| − | + | { | |
| − | + | z = (data & ~(1 << (code >> 3 & 7))); | |
| + | n = 0; | ||
| + | h = 1; | ||
| + | }</nowiki>}} | ||
Latest revision as of 13:52, 25 May 2012
This is an article about the GB-Z80 CPU.
Opcodes:
Arithmetic and logical: ADD - ADD (16-bit) including LD HL,SP+nn - ADC - AND - CP - CPL - DAA - DEC - DEC and INC (16-bit) - INC - SBC - SUB - OR - XOR
Conditional: CALL - JP - JR - RET
Load: LD (8-bit) - LD (16-bit)
Extended Set: BIT - RES - RL - RLC - RR - RRC - SET - SLA - SRA - SRL - SWAP
This instruction group tests various bits of the various registers, or memory location.
Encoding
01bbbrrr | || | | |+-+- Register +-+---- Bit to test Where register is one of the following: 000: B - 2 Machine Cycles 001: C - 2 Machine Cycles 010: D - 2 Machine Cycles 011: E - 2 Machine Cycles 100: H - 2 Machine Cycles 101: L - 2 Machine Cycles 110: (HL) - 3 Machine Cycles 111: A - 2 Machine Cycles
Flags
Z: 1 if specified bit is 0; 0 otherwise N: 0 H: 1
Example
void BIT(code, data)
{
z = (data & ~(1 << (code >> 3 & 7)));
n = 0;
h = 1;
}