1

それで、私はアセンブリクラスにいて、物事を面白く保つために、隔週で 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マジックナンバーを削除して使用すると機能します。

これは、実行を開始する前のメモリのスクリーン スニペットです。

メモリのスクリーン スニペット

ありがとう。

4

1 に答える 1