diff --git a/assembler-8608.lua b/assembler-8608.lua index df23701..2c384d4 100644 --- a/assembler-8608.lua +++ b/assembler-8608.lua @@ -34,14 +34,17 @@ local function mnemFromLine(line, instrs, validWords) local function addNum(n) n = trim(n) local val, len = decodeNumber(n) + local linei8 = line:gsub(n, "imm8", 1, true) + local linei16 = line:gsub(n, "imm16", 1, true) + if len==1 and (not instrs[linei8]) and instrs[linei16] then len = 2 end table.insert(imms, { val = val, len = len } ) return " imm"..(len*8).." " end local function addLabel(n) - local len = 2 - local linei8 = line:gsub(trim(n), "imm8", 1, true) - if instrs[linei8] then len = 1 end n = trim(n) + local len = 2 + local linei8 = line:gsub(n, "imm8", 1, true) + if instrs[linei8] then len = 1 end table.insert(imms, { label = n, len = len } ) return " imm"..(len*8).." " end @@ -424,7 +427,10 @@ local function printMemory(mem) local nonempty = false for addr = base, base+15 do if addr%4==0 then table.insert(line, " ") end - if mem[addr] then + if mem[addr]==false then + nonempty = true + table.insert(line, "XX ") + elseif mem[addr] then nonempty = true table.insert(line, string.format("%02X", mem[addr]).." ") else