標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第156回]
●STA、LDA、STAX、LDAX、XCHG、SPHL、PCHL、INX、DCX、XTHL、SHLD、LHLD、NOPの回路を実装しました
今回は一気にかなりの命令部分を実装してしまいました。
本当は何回かに分けて実装したかったのですが、1個のICの中のゲートを複数の命令回路に分散して使っていたりするので、つながっている部分を順に実装していったら、こんなことになってしまいました。
もう8割かた埋まってしまったように見えます。
写真をクリックすると、拡大画像を見られます。
拡大画像はサイズが大きい(約1MB)ので、インターネットの低速接続環境ではダウンロードに時間がかかります。ご注意ください。
今回は実装した命令がかなりたくさんありますから、テストしていくのも大変です。
当分はチェック作業が続きそうです。
●まずはXCHGとNOPのテストです(ついでにINR M、DCR MやMOV M,r、MOV r,Mも)
簡単な命令からテストしていくことにいたします。
最初はXCHG命令です。
XCHG命令は[第91回]で説明しました。
HLレジスタとDEレジスタの値を交換する命令です。
XCHGだけのテストでは物足りないので、ついでにメモリに対するMOV命令やINR命令、DCR命令も一緒にテストすることにします。
MOVやINR、DCR命令で対象になるメモリとはHLレジスタで示されるメモリアドレスです。
MOV M,rやMOV r,M、INR MやDCR Mのように表記します。
NOPについては、まだ説明していませんでした。
●NOP命令
NOPはNo Operation の意味です。
Operationは命令の実行作業のことですから、No Operationとは、「何もしない」という命令です。
「何もするな」という、変な命令ですが、マシン語では役に立つ命令です。
マシン語コードは 00 です。
実行しても何も変化しません。
でもプログラムカウンタだけは+1されます。実行時間も少しだけ必要です(ここが大切なところです)。
●NOP命令のタイミングチャートと回路図です
NOP命令のタイミングチャートです。
たったこれだけです。
T4になると同時にMclrパルスを出します。それだけです。
つまり、命令を読み込んで、それをデコードしただけで(デコードしてNOP命令だとわかったので)、すぐにマシンクロックカウンタをクリアして、次の命令の読み込みステップに行ってしまいます。
何もしないで、すぐに次の命令に進む、というのがNOP命令の役目です。
NOP命令の回路図です。
これも、たったこれだけです。
T4のときにMclrパルスを出すだけですから、これだけの回路でできてしまいます。
本日は時間が無くなってしまいました。
次回はXCHGとNOPを使ったテストプログラムを作ってみることにします。
2009.2.7upload
前へ
次へ
ホームページトップへ戻る