diff --git a/src/assembler/instructions.c b/src/assembler/instructions.c index e268ebf..4ba0fc0 100644 --- a/src/assembler/instructions.c +++ b/src/assembler/instructions.c @@ -92,9 +92,11 @@ static ASMErrorDesc parse_inst_##mnemonic( \ } #define INST_IMM_U16_B1(imm) \ - ((imm).is_label ? (*symbol = cr_strdup((imm).label), 0) : (imm).uval >> 8) + ((imm).is_label ? \ + (*symbol = cr_strdup((imm).label), 0) : \ + (imm).uval & 0xFF) #define INST_IMM_U16_B2(imm) \ - ((imm).is_label ? 0 : (imm).uval & 0xFF) + ((imm).is_label ? 0 : (imm).uval >> 8) #define INST_INDEX_PREFIX(n) INST_PREFIX_(INST_INDEX(n).reg) diff --git a/src/disassembler/mnemonics.c b/src/disassembler/mnemonics.c index 42239a8..1dd214c 100644 --- a/src/disassembler/mnemonics.c +++ b/src/disassembler/mnemonics.c @@ -18,7 +18,7 @@ static char* instr_mnemonics[256] = { /* 58 */ "ld", "ld", "ld", "ld", "ld", "ld", "ld", "ld", /* 60 */ "ld", "ld", "ld", "ld", "ld", "ld", "ld", "ld", /* 68 */ "ld", "ld", "ld", "ld", "ld", "ld", "ld", "ld", - /* 70 */ "ld", "ld", "ld", "ld", "ld", "ld", "ld", "ld", + /* 70 */ "ld", "ld", "ld", "ld", "ld", "ld", "halt", "ld", /* 78 */ "ld", "ld", "ld", "ld", "ld", "ld", "ld", "ld", /* 80 */ "add", "add", "add", "add", "add", "add", "add", "add", /* 88 */ "adc", "adc", "adc", "adc", "adc", "adc", "adc", "adc", diff --git a/tests/asm/roms.tar.gz b/tests/asm/roms.tar.gz index 10d3d10..d2223ed 100644 Binary files a/tests/asm/roms.tar.gz and b/tests/asm/roms.tar.gz differ