それで、私はアセンブリクラスにいて、物事を面白く保つために、隔週で Core Wars のトーナメントを開催しています。IMP をメモリ内のさらに下にコピーし、ジャンプして 2 つの IMP を同時に実行する単純なアプリケーションを作成しようとしています。アイデアは、一度この部分を機能させて、タイトなループに入れて2つ以上にすることです。
これが私のコードです:
JMP START ; Jump to the starting point
ADDR DAT #1, #0 ; Remember the last address we dropped at
MOVE MOV 0, 1 ; The imp to be copied
START ; Starting point
ADD #-1, ADDR ; Take 1 off the address
ADD #80, ADDR ; Move 80 forward
ADD #1, ADDR ; Make that 81
MOV MOVE, ADDR ; Move the imp to the ADDR
SPL ADDR ; Split a new processes at the ADDR
JMP MOVE
ただし、何が起こっているかは最初のMOV
/SPL
が機能しないため、最初の IMP のみが実行されています。このロジックのどこが間違っているのでしょうか? ADDR
マジックナンバーを削除して使用すると機能します。
これは、実行を開始する前のメモリのスクリーン スニペットです。
ありがとう。