アセンブラの最近のブログ記事



近いうちに必要になりそうなので、Z-80の仕様をまとめた。間違いとかアドバイスとか、お気軽に頂ければ幸いですー。


レジスタ


汎用のメインレジスタが8つ。A, F, B, C, D, E, H, L。


それぞれサブレジスタとして A', F', B'……が8つある。ただしサブレジスタには直接アクセスできず、メインレジスタと入れ替えて使う。ダブルバッファリングでの描画のように、表面と裏面があり、どちらがどちらというものではないと考えると認識がスムーズか。


また、A, Fレジスタは特殊なレジスタとして扱われる。


Aはアキュムレータで、演算時に補助的に使われる。PICでいうワーキングレジスタのようなものか。


Fはフラグレジスタと呼ばれ、各bitの電位でプロセッサの状態を表現する。bitへのマップは以下のとおり。



0bit

C - キャリーフラグ。演算結果がオーバーフローしたら1、しなければ0。インクリメントとデクリメントでは変化せず、論理演算時は常に0。

1bit

N - 減算フラグ。減算を行うと立つ。あまり使われないらしい。確かに用途がわからない。

2bit

P - パリティフラグ。シフト・ローテート時に、1になっているビットが偶数なら立つ。算術演算時にはオーバーフローしたら立つ。

3bit

使われない。

4bit

H - ハーフキャリーフラグ。下4bitで見たときに、キャリーフラグが立ちそうなときに立つ。

5bit

使われない。

6bit

Z - ゼロフラグ。演算結果が0なら立つ。

7bit

S - 符号フラグ。演算結果が正なら0、不なら1。

各レジスタは、BC, DE, HLという組み合わせで16bitレジスタとして扱うことが可能。これは便利そう。


Hフラグがよくわからない。いまいち理解できないので、ご存知の方はフォロー願います。


命令


Z-80組み込みの命令は57。ただし同じ命令でもオペコードによって動作が変わるという、演算子オーバーロード的な機能もある。これを区別すると90近い命令数になり、PICのときの30強と比べるとずいぶん多いと感じる。


命令の主な種別は以下。



  1. 8bitデータ移動命令

  2. 16bitデータ移動命令

  3. 交換・ブロック転送・検索命令

  4. 8bit算術・論理演算命令

  5. 汎用算術命令、CPU制御命令

  6. 16bit算術演算命令

  7. ローテイト・シフト命令

  8. ビット設定・判定命令

  9. ジャンプ命令

  10. サブルーチンコール・リターン命令

  11. 入出力命令


PICでは特定レジスタに設定した二進数値が入出力電位となったので、入出力に別途命令が割り当てられているのは意外。しっかり調べないとコケそうだ。


参考にさせていただいたページ


このアーカイブについて

このページには、過去に書かれたブログ記事のうちアセンブラカテゴリに属しているものが含まれています。

前のカテゴリはつくらぐです。

次のカテゴリはチームです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

Powered by Movable Type 4.32-ja