Not、Goto、If-goto【NandGame編】
はじめに
いつもブログをご覧いただきありがとうございます。
コーストFIRE中のIPUSIRONです😀
Notレベル
Notレベルのゴールは、マクロNOTを実装することです。
マクロNOTは、スタックの一番上のデータをビット反転(2進数の各桁でビット反転)します。
Notレベルを解く
POPしてからビット反転のビット演算子を使って、その結果をPUSHすればよいだけです。
POP_D
D = ~D
PUSH_D
Gotoレベル
Gotoレベルのゴールは、マクロGOTOを実装することです。
マクロGOTOは、"label"というラベルのある行番号にジャンプします。
※[Show Assembler Help]ボタンの上に"Placeholders: label"と表示されています。
Gotoレベルを解く
これまでのレベルですでにJMP命令を活用しているので、本レベルは簡単なはずです。
A = label
JMP
If-gotoレベル
If-gotoレベルのゴールは、マクロIF_GOTOを実装することです。
マクロIF_GOTOは、スタックの一番上の値をPOPし、その値が0でなければ"label"というラベルにジャンプします。
※[Show Assembler Help]ボタンの上に"Placeholders: label"と表示されています。
If-gotoレベルを解く
POP_D
A = label
D; JNE