# Copyright (C) 2014-2015 Ben Kurtovic # Released under the terms of the MIT License. See LICENSE for details. # *** ASM Instruction Description File *** # This file is used to generate 'instructions.inc.c'. # `make` should trigger a rebuild when this file is modified; if not, use: # `python scripts/update_asm_instructions.py`. --- adc: args: yes cases: - type: [register, register] cases: - cond: [a, a] return: [0x8F] - cond: [a, b|c|d|e] return: [step(0x88)] - cond: [a, h|ih] return: [0x8C] - cond: [a, l|il] return: [0x8D] - cond: [hl, bc|de|hl|sp] return: [0xED, step(0x4A 0x10)] - type: [register, immediate] cases: - cond: [a, u8] return: [0xCE, u8] - type: [register, indirect_hl_or_indexed] cases: - cond: [a, _] return: [0x8E] add: args: yes cases: - type: [register, register] cases: - cond: [a, a] return: [0x87] - cond: [a, b|c|d|e] return: [step(0x80)] - cond: [a, h|ih] return: [0x84] - cond: [a, l|il] return: [0x85] - cond: [hl|i, bc] return: [0x09] - cond: [hl|i, de] return: [0x19] - cond: [hl|i, hl|i] return: [0x29] - cond: [hl|i, sp] return: [0x39] - type: [register, immediate] cases: - cond: [a, u8] return: [0xC6, u8] - type: [register, indirect_hl_or_indexed] cases: - cond: [a, _] return: [0x86] and: args: yes cases: - type: [register] cases: - cond: [a] return: [0xA7] - cond: [b|c|d|e] return: [step(0xA0)] - cond: [h|ih] return: [0xA4] - cond: [l|il] return: [0xA5] - type: [immediate] cases: - cond: [u8] return: [0xE6, u8] - type: [indirect_hl_or_indexed] cases: - cond: [_] return: [0xA6] bit: args: yes cases: - type: [immediate, register] cases: - cond: [bit, a] return: [0xCB, bit(0x47)] - cond: [bit, b] return: [0xCB, bit(0x40)] - cond: [bit, c] return: [0xCB, bit(0x41)] - cond: [bit, d] return: [0xCB, bit(0x42)] - cond: [bit, e] return: [0xCB, bit(0x43)] - cond: [bit, h] return: [0xCB, bit(0x44)] - cond: [bit, l] return: [0xCB, bit(0x45)] - type: [immediate, indirect_hl_or_indexed] cases: - cond: [bit, _] return: [0xCB, bit(0x46)] call: args: yes cases: - type: [immediate] cases: - cond: [u16] return: [0xCD, u16] - type: [condition, immediate] cases: - cond: [nz, u16] return: [0xC4, u16] - cond: [z, u16] return: [0xCC, u16] - cond: [nc, u16] return: [0xD4, u16] - cond: [c, u16] return: [0xDC, u16] - cond: [po, u16] return: [0xE4, u16] - cond: [pe, u16] return: [0xEC, u16] - cond: [p, u16] return: [0xF4, u16] - cond: [m, u16] return: [0xFC, u16] ccf: args: no return: [0x3F] cp: args: yes cases: - type: [register] cases: - cond: [a] return: [0xBF] - cond: [b] return: [0xB8] - cond: [c] return: [0xB9] - cond: [d] return: [0xBA] - cond: [e] return: [0xBB] - cond: [h|ih] return: [0xBC] - cond: [l|il] return: [0xBD] - type: [indirect_hl_or_indexed] cases: - cond: [_] return: [0xBE] - type: [immediate] cases: - cond: [u8] return: [0xFE, u8] cpd: args: no return: [0xED, 0xA9] cpdr: args: no return: [0xED, 0xB9] cpi: args: no return: [0xED, 0xA1] cpir: args: no return: [0xED, 0xB1] cpl: args: no return: [0x2F] daa: args: no return: [0x27] dec: args: yes cases: - type: [register] cases: - cond: [a] return: [0x3D] - cond: [b] return: [0x05] - cond: [c] return: [0x0D] - cond: [d] return: [0x15] - cond: [e] return: [0x1D] - cond: [h|ih] return: [0x25] - cond: [l|il] return: [0x2D] - cond: [bc] return: [0x0B] - cond: [de] return: [0x1B] - cond: [hl|i] return: [0x2B] - cond: [sp] return: [0x3B] - type: [indirect_hl_or_indexed] cases: - cond: [_] return: [0x35] di: args: no return: [0xF3] djnz: args: yes cases: - type: [immediate] cases: - cond: [rel] return: [0x10, rel] ei: args: no return: [0xFB] ex: args: yes cases: - type: [register, register] cases: - cond: [af, af_] return: [0x08] - cond: [de, hl] return: [0xEB] - type: [indirect, register] cases: - cond: [reg.sp, hl|i] return: [0xE3] exx: args: no return: [0xD9] halt: args: no return: [0x76] im: args: yes cases: - type: [immediate] cases: - cond: [im.0] return: [0xED, 0x46] - cond: [im.1] return: [0xED, 0x56] - cond: [im.2] return: [0xED, 0x5E] in: args: yes cases: - type: [register, port] cases: - cond: [a, imm] return: [0xDB, u8] - cond: [a, reg.c] return: [0xED, 0x78] - cond: [b, reg.c] return: [0xED, 0x40] - cond: [c, reg.c] return: [0xED, 0x48] - cond: [d, reg.c] return: [0xED, 0x50] - cond: [e, reg.c] return: [0xED, 0x58] - cond: [h, reg.c] return: [0xED, 0x60] - cond: [l, reg.c] return: [0xED, 0x68] - type: [port] cases: - cond: [reg.c] return: [0xED, 0x70] inc: args: yes cases: - type: [register] cases: - cond: [a] return: [0x3C] - cond: [b] return: [0x04] - cond: [c] return: [0x0C] - cond: [d] return: [0x14] - cond: [e] return: [0x1C] - cond: [h|ih] return: [0x24] - cond: [l|il] return: [0x2C] - cond: [bc] return: [0x03] - cond: [de] return: [0x13] - cond: [hl|i] return: [0x23] - cond: [sp] return: [0x33] - type: [indirect_hl_or_indexed] cases: - cond: [_] return: [0x34] ind: args: no return: [0xED, 0xAA] indr: args: no return: [0xED, 0xBA] ini: args: no return: [0xED, 0xA2] inir: args: no return: [0xED, 0xB2] jp: args: yes cases: - type: [immediate] cases: - cond: [u16] return: [0xC3, u16] - type: [condition, immediate] cases: - cond: [nz, u16] return: [0xC2, u16] - cond: [z, u16] return: [0xCA, u16] - cond: [nc, u16] return: [0xD2, u16] - cond: [c, u16] return: [0xDA, u16] - cond: [po, u16] return: [0xE2, u16] - cond: [pe, u16] return: [0xEA, u16] - cond: [p, u16] return: [0xF2, u16] - cond: [m, u16] return: [0xFA, u16] - type: [indirect_hl_or_indexed] cases: - cond: [_] return: [0xE9] jr: args: yes cases: - type: [immediate] cases: - cond: [rel] return: [0x18, rel] - type: [condition, immediate] cases: - cond: [nz|z|nc|c, rel] return: [step(0x20 0x08), rel] ld: args: yes cases: - type: [register, register] cases: - cond: [a, a] return: [0x7F] - cond: [a, b] return: [0x78] - cond: [a, c] return: [0x79] - cond: [a, d] return: [0x7A] - cond: [a, e] return: [0x7B] - cond: [a, h|ih] return: [0x7C] - cond: [a, l|il] return: [0x7D] - cond: [b, a] return: [0x47] - cond: [b, b] return: [0x40] - cond: [b, c] return: [0x41] - cond: [b, d] return: [0x42] - cond: [b, e] return: [0x43] - cond: [b, h|ih] return: [0x44] - cond: [b, l|il] return: [0x45] - cond: [c, a] return: [0x4F] - cond: [c, b] return: [0x48] - cond: [c, c] return: [0x49] - cond: [c, d] return: [0x4A] - cond: [c, e] return: [0x4B] - cond: [c, h|ih] return: [0x4C] - cond: [c, l|il] return: [0x4D] - cond: [d, a] return: [0x57] - cond: [d, b] return: [0x50] - cond: [d, c] return: [0x51] - cond: [d, d] return: [0x52] - cond: [d, e] return: [0x53] - cond: [d, h|ih] return: [0x54] - cond: [d, l|il] return: [0x55] - cond: [e, a] return: [0x5F] - cond: [e, b] return: [0x58] - cond: [e, c] return: [0x59] - cond: [e, d] return: [0x5A] - cond: [e, e] return: [0x5B] - cond: [e, h|ih] return: [0x5C] - cond: [e, l|il] return: [0x5D] - cond: [h|ih, a] return: [0x67] - cond: [h|ih, b] return: [0x60] - cond: [h|ih, c] return: [0x61] - cond: [h|ih, d] return: [0x62] - cond: [h|ih, e] return: [0x63] - cond: [h|ih, h|ih] return: [0x64] - cond: [h|ih, l|il] return: [0x65] - cond: [l|il, a] return: [0x6F] - cond: [l|il, b] return: [0x68] - cond: [l|il, c] return: [0x69] - cond: [l|il, d] return: [0x6A] - cond: [l|il, e] return: [0x6B] - cond: [l|il, h|ih] return: [0x6C] - cond: [l|il, l|il] return: [0x6D] - cond: [a, i] return: [0xED, 0x57] - cond: [i, a] return: [0xED, 0x47] - cond: [a, r] return: [0xED, 0x5F] - cond: [r, a] return: [0xED, 0x4F] - cond: [sp, hl|i] return: [0xF9] - type: [register, immediate] cases: - cond: [a, u8] return: [0x3E, u8] - cond: [b, u8] return: [0x06, u8] - cond: [c, u8] return: [0x0E, u8] - cond: [d, u8] return: [0x16, u8] - cond: [e, u8] return: [0x1E, u8] - cond: [h|ih, u8] return: [0x26, u8] - cond: [l|il, u8] return: [0x2E, u8] - cond: [bc, u16] return: [0x01, u16] - cond: [de, u16] return: [0x11, u16] - cond: [hl|i, u16] return: [0x21, u16] - cond: [sp, u16] return: [0x31, u16] - type: [register, indirect_hl_or_indexed] cases: - cond: [a, _] return: [0x7E] - cond: [b, _] return: [0x46] - cond: [c, _] return: [0x4E] - cond: [d, _] return: [0x56] - cond: [e, _] return: [0x5E] - cond: [h, _] return: [0x66] - cond: [l, _] return: [0x6E] - type: [register, indirect] cases: - cond: [a, reg.bc] return: [0x0A] - cond: [a, reg.de] return: [0x1A] - cond: [hl|i, imm] return: [0x2A, u16] - cond: [a, imm] return: [0x3A, u16] - cond: [bc, imm] return: [0xED, 0x4B, u16] - cond: [de, imm] return: [0xED, 0x5B, u16] - cond: [sp, imm] return: [0xED, 0x7B, u16] - type: [indirect_hl_or_indexed, register] cases: - cond: [_, a] return: [0x77] - cond: [_, b] return: [0x70] - cond: [_, c] return: [0x71] - cond: [_, d] return: [0x72] - cond: [_, e] return: [0x73] - cond: [_, h] return: [0x74] - cond: [_, l] return: [0x75] - type: [indirect_hl_or_indexed, immediate] cases: - cond: [_, u8] return: [0x36, u8] - type: [indirect, register] cases: - cond: [reg.bc, a] return: [0x02] - cond: [reg.de, a] return: [0x12] - cond: [imm, hl|i] return: [0x22, u16] - cond: [imm, a] return: [0x32, u16] - cond: [imm, bc] return: [0xED, 0x43, u16] - cond: [imm, de] return: [0xED, 0x53, u16] - cond: [imm, sp] return: [0xED, 0x73, u16] ldd: args: no return: [0xED, 0xA8] lddr: args: no return: [0xED, 0xB8] ldi: args: no return: [0xED, 0xA0] ldir: args: no return: [0xED, 0xB0] neg: args: no return: [0xED, 0x44] nop: args: no return: [0x00] or: args: yes cases: - type: [register] cases: - cond: [a] return: [0xB7] - cond: [b] return: [0xB0] - cond: [c] return: [0xB1] - cond: [d] return: [0xB2] - cond: [e] return: [0xB3] - cond: [h|ih] return: [0xB4] - cond: [l|il] return: [0xB5] - type: [immediate] cases: - cond: [u8] return: [0xF6, u8] - type: [indirect_hl_or_indexed] cases: - cond: [_] return: [0xB6] otdr: args: no return: [0xED, 0xBB] otir: args: no return: [0xED, 0xB3] out: args: yes cases: - type: [port, register] cases: - cond: [imm, a] return: [0xD3, u8] - cond: [reg.c, a] return: [0xED, 0x79] - cond: [reg.c, b] return: [0xED, 0x41] - cond: [reg.c, c] return: [0xED, 0x49] - cond: [reg.c, d] return: [0xED, 0x51] - cond: [reg.c, e] return: [0xED, 0x59] - cond: [reg.c, h] return: [0xED, 0x61] - cond: [reg.c, l] return: [0xED, 0x69] - type: [port, immediate] cases: - cond: [reg.c, u8.0] return: [0xED, 0x71] outd: args: no return: [0xED, 0xAB] outi: args: no return: [0xED, 0xA3] pop: args: yes cases: - type: [register] cases: - cond: [bc] return: [0xC1] - cond: [de] return: [0xD1] - cond: [hl|i] return: [0xE1] - cond: [af] return: [0xF1] push: args: yes cases: - type: [register] cases: - cond: [bc] return: [0xC5] - cond: [de] return: [0xD5] - cond: [hl|i] return: [0xE5] - cond: [af] return: [0xF5] res: args: yes cases: - type: [immediate, register] cases: - cond: [bit, a] return: [0xCB, bit(0x87)] - cond: [bit, b] return: [0xCB, bit(0x80)] - cond: [bit, c] return: [0xCB, bit(0x81)] - cond: [bit, d] return: [0xCB, bit(0x82)] - cond: [bit, e] return: [0xCB, bit(0x83)] - cond: [bit, h] return: [0xCB, bit(0x84)] - cond: [bit, l] return: [0xCB, bit(0x85)] - type: [immediate, indirect_hl_or_indexed] cases: - cond: [bit, _] return: [0xCB, bit(0x86)] - type: [immediate, indexed, register] cases: - cond: [bit, _, a] return: [0xCB, bit(0x87)] - cond: [bit, _, b] return: [0xCB, bit(0x80)] - cond: [bit, _, c] return: [0xCB, bit(0x81)] - cond: [bit, _, d] return: [0xCB, bit(0x82)] - cond: [bit, _, e] return: [0xCB, bit(0x83)] - cond: [bit, _, h] return: [0xCB, bit(0x84)] - cond: [bit, _, l] return: [0xCB, bit(0x85)] ret: args: yes cases: - type: [] return: [0xC9] - type: [condition] cases: - cond: [nz] return: [0xC0] - cond: [z] return: [0xC8] - cond: [nc] return: [0xD0] - cond: [c] return: [0xD8] - cond: [po] return: [0xE0] - cond: [pe] return: [0xE8] - cond: [p] return: [0xF0] - cond: [m] return: [0xF8] reti: args: no return: [0xED, 0x4D] retn: args: no return: [0xED, 0x45] rl: args: yes cases: - type: [register] cases: - cond: [a] return: [0xCB, 0x17] - cond: [b] return: [0xCB, 0x10] - cond: [c] return: [0xCB, 0x11] - cond: [d] return: [0xCB, 0x12] - cond: [e] return: [0xCB, 0x13] - cond: [h] return: [0xCB, 0x14] - cond: [l] return: [0xCB, 0x15] - type: [indirect_hl_or_indexed] cases: - cond: [_] return: [0xCB, 0x16] - type: [indexed, register] cases: - cond: [_, a] return: [0xCB, 0x17] - cond: [_, b] return: [0xCB, 0x10] - cond: [_, c] return: [0xCB, 0x11] - cond: [_, d] return: [0xCB, 0x12] - cond: [_, e] return: [0xCB, 0x13] - cond: [_, h] return: [0xCB, 0x14] - cond: [_, l] return: [0xCB, 0x15] rla: args: no return: [0x17] rlc: args: yes cases: - type: [register] cases: - cond: [a] return: [0xCB, 0x07] - cond: [b] return: [0xCB, 0x00] - cond: [c] return: [0xCB, 0x01] - cond: [d] return: [0xCB, 0x02] - cond: [e] return: [0xCB, 0x03] - cond: [h] return: [0xCB, 0x04] - cond: [l] return: [0xCB, 0x05] - type: [indirect_hl_or_indexed] cases: - cond: [_] return: [0xCB, 0x06] - type: [indexed, register] cases: - cond: [_, a] return: [0xCB, 0x07] - cond: [_, b] return: [0xCB, 0x00] - cond: [_, c] return: [0xCB, 0x01] - cond: [_, d] return: [0xCB, 0x02] - cond: [_, e] return: [0xCB, 0x03] - cond: [_, h] return: [0xCB, 0x04] - cond: [_, l] return: [0xCB, 0x05] rlca: args: no return: [0x07] rld: args: no return: [0xED, 0x6F] rr: args: yes cases: - type: [register] cases: - cond: [a] return: [0xCB, 0x1F] - cond: [b] return: [0xCB, 0x18] - cond: [c] return: [0xCB, 0x19] - cond: [d] return: [0xCB, 0x1A] - cond: [e] return: [0xCB, 0x1B] - cond: [h] return: [0xCB, 0x1C] - cond: [l] return: [0xCB, 0x1D] - type: [indirect_hl_or_indexed] cases: - cond: [_] return: [0xCB, 0x1E] - type: [indexed, register] cases: - cond: [_, a] return: [0xCB, 0x1F] - cond: [_, b] return: [0xCB, 0x18] - cond: [_, c] return: [0xCB, 0x19] - cond: [_, d] return: [0xCB, 0x1A] - cond: [_, e] return: [0xCB, 0x1B] - cond: [_, h] return: [0xCB, 0x1C] - cond: [_, l] return: [0xCB, 0x1D] rra: args: no return: [0x1F] rrc: args: yes cases: - type: [register] cases: - cond: [a] return: [0xCB, 0x0F] - cond: [b] return: [0xCB, 0x08] - cond: [c] return: [0xCB, 0x09] - cond: [d] return: [0xCB, 0x0A] - cond: [e] return: [0xCB, 0x0B] - cond: [h] return: [0xCB, 0x0C] - cond: [l] return: [0xCB, 0x0D] - type: [indirect_hl_or_indexed] cases: - cond: [_] return: [0xCB, 0x0E] - type: [indexed, register] cases: - cond: [_, a] return: [0xCB, 0x0F] - cond: [_, b] return: [0xCB, 0x08] - cond: [_, c] return: [0xCB, 0x09] - cond: [_, d] return: [0xCB, 0x0A] - cond: [_, e] return: [0xCB, 0x0B] - cond: [_, h] return: [0xCB, 0x0C] - cond: [_, l] return: [0xCB, 0x0D] rrca: args: no return: [0x0F] rrd: args: no return: [0xED, 0x67] rst: args: yes cases: - type: [immediate] cases: - cond: [rst.0x00] return: [0xC7] - cond: [rst.0x08] return: [0xCF] - cond: [rst.0x10] return: [0xD7] - cond: [rst.0x18] return: [0xDF] - cond: [rst.0x20] return: [0xE7] - cond: [rst.0x28] return: [0xEF] - cond: [rst.0x30] return: [0xF7] - cond: [rst.0x38] return: [0xFF] sbc: args: yes cases: - type: [register, register] cases: - cond: [a, a] return: [0x9F] - cond: [a, b] return: [0x98] - cond: [a, c] return: [0x99] - cond: [a, d] return: [0x9A] - cond: [a, e] return: [0x9B] - cond: [a, h|ih] return: [0x9C] - cond: [a, l|il] return: [0x9D] - cond: [hl, bc] return: [0xED, 0x42] - cond: [hl, de] return: [0xED, 0x52] - cond: [hl, hl] return: [0xED, 0x62] - cond: [hl, sp] return: [0xED, 0x72] - type: [register, immediate] cases: - cond: [a, u8] return: [0xDE, u8] - type: [register, indirect_hl_or_indexed] cases: - cond: [a, _] return: [0x9E] scf: args: no return: [0x37] set: args: yes cases: - type: [immediate, register] cases: - cond: [bit, a] return: [0xCB, bit(0xC7)] - cond: [bit, b] return: [0xCB, bit(0xC0)] - cond: [bit, c] return: [0xCB, bit(0xC1)] - cond: [bit, d] return: [0xCB, bit(0xC2)] - cond: [bit, e] return: [0xCB, bit(0xC3)] - cond: [bit, h] return: [0xCB, bit(0xC4)] - cond: [bit, l] return: [0xCB, bit(0xC5)] - type: [immediate, indirect_hl_or_indexed] cases: - cond: [bit, _] return: [0xCB, bit(0xC6)] - type: [immediate, indexed, register] cases: - cond: [bit, _, a] return: [0xCB, bit(0xC7)] - cond: [bit, _, b] return: [0xCB, bit(0xC0)] - cond: [bit, _, c] return: [0xCB, bit(0xC1)] - cond: [bit, _, d] return: [0xCB, bit(0xC2)] - cond: [bit, _, e] return: [0xCB, bit(0xC3)] - cond: [bit, _, h] return: [0xCB, bit(0xC4)] - cond: [bit, _, l] return: [0xCB, bit(0xC5)] sl1: &sl1 args: yes cases: - type: [register] cases: - cond: [a] return: [0xCB, 0x37] - cond: [b] return: [0xCB, 0x30] - cond: [c] return: [0xCB, 0x31] - cond: [d] return: [0xCB, 0x32] - cond: [e] return: [0xCB, 0x33] - cond: [h] return: [0xCB, 0x34] - cond: [l] return: [0xCB, 0x35] - type: [indirect_hl_or_indexed] cases: - cond: [_] return: [0xCB, 0x36] - type: [indexed, register] cases: - cond: [_, a] return: [0xCB, 0x37] - cond: [_, b] return: [0xCB, 0x30] - cond: [_, c] return: [0xCB, 0x31] - cond: [_, d] return: [0xCB, 0x32] - cond: [_, e] return: [0xCB, 0x33] - cond: [_, h] return: [0xCB, 0x34] - cond: [_, l] return: [0xCB, 0x35] sla: args: yes cases: - type: [register] cases: - cond: [a] return: [0xCB, 0x27] - cond: [b] return: [0xCB, 0x20] - cond: [c] return: [0xCB, 0x21] - cond: [d] return: [0xCB, 0x22] - cond: [e] return: [0xCB, 0x23] - cond: [h] return: [0xCB, 0x24] - cond: [l] return: [0xCB, 0x25] - type: [indirect_hl_or_indexed] cases: - cond: [_] return: [0xCB, 0x26] - type: [indexed, register] cases: - cond: [_, a] return: [0xCB, 0x27] - cond: [_, b] return: [0xCB, 0x20] - cond: [_, c] return: [0xCB, 0x21] - cond: [_, d] return: [0xCB, 0x22] - cond: [_, e] return: [0xCB, 0x23] - cond: [_, h] return: [0xCB, 0x24] - cond: [_, l] return: [0xCB, 0x25] sll: *sl1 sls: *sl1 sra: args: yes cases: - type: [register] cases: - cond: [a] return: [0xCB, 0x2F] - cond: [b] return: [0xCB, 0x28] - cond: [c] return: [0xCB, 0x29] - cond: [d] return: [0xCB, 0x2A] - cond: [e] return: [0xCB, 0x2B] - cond: [h] return: [0xCB, 0x2C] - cond: [l] return: [0xCB, 0x2D] - type: [indirect_hl_or_indexed] cases: - cond: [_] return: [0xCB, 0x2E] - type: [indexed, register] cases: - cond: [_, a] return: [0xCB, 0x2F] - cond: [_, b] return: [0xCB, 0x28] - cond: [_, c] return: [0xCB, 0x29] - cond: [_, d] return: [0xCB, 0x2A] - cond: [_, e] return: [0xCB, 0x2B] - cond: [_, h] return: [0xCB, 0x2C] - cond: [_, l] return: [0xCB, 0x2D] srl: args: yes cases: - type: [register] cases: - cond: [a] return: [0xCB, 0x3F] - cond: [b] return: [0xCB, 0x38] - cond: [c] return: [0xCB, 0x39] - cond: [d] return: [0xCB, 0x3A] - cond: [e] return: [0xCB, 0x3B] - cond: [h] return: [0xCB, 0x3C] - cond: [l] return: [0xCB, 0x3D] - type: [indirect_hl_or_indexed] cases: - cond: [_] return: [0xCB, 0x3E] - type: [indexed, register] cases: - cond: [_, a] return: [0xCB, 0x3F] - cond: [_, b] return: [0xCB, 0x38] - cond: [_, c] return: [0xCB, 0x39] - cond: [_, d] return: [0xCB, 0x3A] - cond: [_, e] return: [0xCB, 0x3B] - cond: [_, h] return: [0xCB, 0x3C] - cond: [_, l] return: [0xCB, 0x3D] sub: args: yes cases: - type: [register] cases: - cond: [a] return: [0x97] - cond: [b] return: [0x90] - cond: [c] return: [0x91] - cond: [d] return: [0x92] - cond: [e] return: [0x93] - cond: [h|ih] return: [0x94] - cond: [l|il] return: [0x95] - type: [immediate] cases: - cond: [u8] return: [0xD6, u8] - type: [indirect_hl_or_indexed] cases: - cond: [_] return: [0x96] xor: args: yes cases: - type: [register] cases: - cond: [a] return: [0xAF] - cond: [b] return: [0xA8] - cond: [c] return: [0xA9] - cond: [d] return: [0xAA] - cond: [e] return: [0xAB] - cond: [h|ih] return: [0xAC] - cond: [l|il] return: [0xAD] - type: [immediate] cases: - cond: [u8] return: [0xEE, u8] - type: [indirect_hl_or_indexed] cases: - cond: [_] return: [0xAE]