Difference between revisions of "BIT"

From GbdevWiki
Jump to: navigation, search
(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:
{{Opcode}}
+
{{Instruction|
 
+
  Description=This instruction group tests various bits of the various registers, or memory location. |
This instruction is part of the $CB prefixed extended instruction set.<br>
+
  Encoding=<nowiki>
This instruction group tests various bits of the various registers, or memory location. It is encoded as follows:
+
 
+
 
  01bbbrrr
 
  01bbbrrr
 
   | || |
 
   | || |
 
   | |+-+- Register
 
   | |+-+- Register
   +-+---- Bit to test ('b' has a binary weight of 2^b)
+
   +-+---- 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 |
== Flags ==
+
  H=1 |
 
+
  N=0 |
Z: 1 if specified bit is 0; 0 otherwise
+
  Example=<nowiki>
H: 1
+
void BIT(code, data)
N: 0
+
{
  C: -
+
    z = (data & ~(1 << (code >> 3 & 7)));
 +
    n = 0;
 +
    h = 1;
 +
  }</nowiki>}}

Latest revision as of 12: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;
 }