summaryrefslogtreecommitdiffstats
path: root/lab1asm.py
diff options
context:
space:
mode:
Diffstat (limited to 'lab1asm.py')
-rw-r--r--lab1asm.py11
1 files changed, 4 insertions, 7 deletions
diff --git a/lab1asm.py b/lab1asm.py
index dfe9fb3..f6c7997 100644
--- a/lab1asm.py
+++ b/lab1asm.py
@@ -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