diff --git a/asm.py b/asm.py index 729bcd4..04d03df 100755 --- a/asm.py +++ b/asm.py @@ -46,7 +46,7 @@ class ASM(SimpleNamespace): return (0x1f, arg) elif type(arg) == Indirect: if type(arg.disp) == Expr: - disp = arg.disp.value + disp = getattr(arg.disp, "value", 0) else: disp = arg.disp if arg.reg is None: @@ -67,10 +67,15 @@ class ASM(SimpleNamespace): elif arg.reg in ('PC', 'EX'): raise SyntaxError() else: - if arg.disp == 0: - return (0x08+REGISTERS[arg.reg], None) + if hasattr(type(arg.reg), "getstr"): + r = arg.reg.getstr() else: - return (0x10+REGISTERS[arg.reg], disp) + r = arg.reg + print("REG: "+r) + if arg.disp == 0: + return (0x08+REGISTERS[r], None) + else: + return (0x10+REGISTERS[r], disp) def code(self): o, b = OPCODES[self.op] a_bits, a_extra = self.addr(self.a, True)