diff options
Diffstat (limited to 'lab1asm.py')
| -rw-r--r-- | lab1asm.py | 11 |
1 files changed, 4 insertions, 7 deletions
@@ -42,14 +42,10 @@ def compile(lines): )) case [inst, label]: assert inst in ("bra", "bne", "bge", "beq") - compiled.append("{:02x}: {:01x}000".format( + compiled.append("{:02x}: {:01x}0<{}>".format( addr, OPS[inst], - )) - addr += 1 - compiled.append("{:02x}: <{}>".format( - addr, - label + label, )) case ["halt"]: compiled.append("{:02x}: {:01x}000".format(addr, OPS["halt"])) @@ -63,7 +59,8 @@ def compile(lines): linked = [] for line_nr, line in enumerate(compiled): for label, label_nr in labels.items(): - line = line.replace(f"<{label}>", f"{label_nr - line_nr:04x}") + rel_pos = (label_nr - line_nr + 0xff) & 0xff + line = line.replace(f"<{label}>", f"{rel_pos:02x}") linked.append(line) return linked, labels |
