萌えハッカーニュースリーダー

2025/10/26 00:15 Learn Multiplatform Z80 Assembly Programming with Vampires

出典: https://www.chibiakumas.com/z80/
hakase
博士

やあ、ロボ子!今日はZ80命令セットについてお話しするのじゃ!たくさんあって大変じゃけど、頑張って理解するぞ!

roboko
ロボ子

博士、こんにちは!Z80命令セット、楽しみです!命令がたくさんあるんですね。頑張ります!

hakase
博士

まずは算術演算からじゃ!`ADD A, r` はレジスタ `r` をAに加算する命令じゃ。簡単じゃな!

roboko
ロボ子

`ADD A, r`、Aレジスタにrレジスタの値を足すんですね。理解しました!

hakase
博士

そうじゃ!`ADC r` は、レジスタ `r` とキャリーフラグをAに加算するのじゃ。キャリーフラグも足すところがミソじゃな。

roboko
ロボ子

キャリーフラグも考慮するんですね。ということは、前の計算で桁あふれがあった場合に使うんですね。

hakase
博士

その通り!賢いのう、ロボ子!次は論理演算じゃ。`AND r` はレジスタ `r` とAのビット単位AND演算をするのじゃ。

roboko
ロボ子

`AND r`、ビット単位のAND演算ですね。それぞれのビット同士を比較して、両方1の時だけ1になるんですね。

hakase
博士

その通り!そして、ビット操作命令もあるぞ!`BIT b, r` はレジスタ `r` のビット `b` をテストするのじゃ。

roboko
ロボ子

`BIT b, r`、指定したビットが1かどうかを調べるんですね。これを使うと、特定のフラグの状態を簡単に確認できますね。

hakase
博士

その通り!次はジャンプとコールじゃ!`CALL ##` はアドレス `##` にジャンプ(サブルーチンコール)するのじゃ。PCをスタックにプッシュするのを忘れるでないぞ!

roboko
ロボ子

`CALL ##`、サブルーチンコールですね。スタックにリターンアドレスを保存するから、`RET`で戻ってこれるんですね。

hakase
博士

そうじゃ!`RET` はスタックからPCをポップして戻るのじゃ。そして、ロードとストア命令じゃ!`LD (rr), A` はAの値をアドレス `(rr)` にロードするのじゃ。

roboko
ロボ子

`LD (rr), A`、Aレジスタの値をrrレジスタが指すアドレスに書き込むんですね。メモリ操作の基本ですね。

hakase
博士

その通り!入出力命令もあるぞ!`IN A, (#)` はポート `#` からAに読み込むのじゃ。

roboko
ロボ子

`IN A, (#)`、指定したポートからデータを読み込むんですね。周辺機器との通信に使いますね。

hakase
博士

そうじゃ!そして、スタック操作命令!`PUSH rr` は `rr` から2バイトをスタックにプッシュするのじゃ。

roboko
ロボ子

`PUSH rr`、スタックにデータを積むんですね。サブルーチンコールや割り込み処理でよく使いますね。

hakase
博士

ローテートとシフト命令もあるぞ!`RL r` はレジスタ `r` のビットをキャリーフラグを使って左にローテートするのじゃ。

roboko
ロボ子

`RL r`、ビットを回転させるんですね。キャリーフラグを使うことで、多倍長演算も可能になるんですね。

hakase
博士

割り込み制御命令もあるぞ!`DI` は割り込みを禁止するのじゃ。

roboko
ロボ子

`DI`、割り込みを禁止することで、クリティカルな処理中に割り込まれるのを防ぐんですね。

hakase
博士

最後に、その他命令じゃ!`NOP` は何もしないのじゃ!

roboko
ロボ子

`NOP`、何もしない命令ですか。時間調整とかに使うんですかね。

hakase
博士

その通り!さて、ロボ子、Z80命令セット、どうだったかのじゃ?

roboko
ロボ子

博士、とても勉強になりました!命令がたくさんあって大変ですけど、一つ一つ理解していけば、Z80を自在に操れるようになれそうです!

hakase
博士

よし!最後に一つ、Z80のジョークじゃ!Z80に「今日は何もしない日だ!」って言ったら、`NOP`って返されたのじゃ!

roboko
ロボ子

あはは!博士、面白いです!私もいつか、Z80みたいにキレの良いジョークが言えるようになりたいです!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search