標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第92回]

●XCHG命令のクロック毎の動作の写真です

動作の確認をするために次のプログラムを実行させました。

0000 213412    LXI H,1234
0003 117856    LXI D,5678
0006 EB        XCHG

HLレジスタに”1234”を入れ、DEレジスタに”5678”を入れておいて、XCHG命令で両者の値が入れ替わることを確認します。
LXI H命令、LXI D命令が終わったあとの、XCHG命令のT4から、クロック毎の動作を見ていくことにします。

XCHG命令のT4の写真です。


OPコードレジスタには”EB”(XCHG命令のOPコード)がラッチされています。
PC(プログラムカウンタ)は”0007”になっていますが、PCADoutが消灯していて、PC(プログラムカウンタ)の値は、外部アドレスバスA15−A0には出力されていません。

regRDとregWRが共に点灯しています。
regRDが点灯していて、s3−s0が”1101”なのでデータの送り手としてLレジスタが選択されます。
LregRDが点灯していて、Lレジスタの値、”34”が内部データバスinnerBUSに出力されています。
regWRが点灯していて、d3−d0が”0111”なのでデータの受け手としてWKLレジスタが選択されます。
WKLregWRが点灯していて、WKLレジスタに内部データバスの値”34”が読み込まれています。

s3−s0、d3−d0とレジスタの関係については、「レジスタコード表」([第27回])を参照してください。

T5の写真です。


regWR、WKLregWRが消灯し、WKLレジスタに、内部データバスの値”34”がラッチされました。

T6の写真です。


regRDとregWRが共に点灯しています。
regRDが点灯していて、s3−s0が”1100”なのでデータの送り手としてHレジスタが選択されます。
HregRDが点灯していて、Hレジスタの値、”12”が内部データバスinnerBUSに出力されています。
regWRが点灯していて、d3−d0が”0110”なのでデータの受け手としてWKHレジスタが選択されます。
WKHregWRが点灯していて、WKHレジスタに内部データバスの値”12”が読み込まれています。

T7の写真です。


regWR、WKHregWRが消灯しました。
WKHレジスタに”12”がラッチされました。

T8の写真です。


regRDとregWRが共に点灯しています。
regRDが点灯していて、s3−s0が”1011”なのでデータの送り手としてEレジスタが選択されます。
EregRDが点灯していて、Eレジスタの値、”78”が内部データバスinnerBUSに出力されています。
regWRが点灯していて、d3−d0が”1101”なのでデータの受け手としてLレジスタが選択されます。
LregWRが点灯していて、Lレジスタに内部データバスの値”78”が読み込まれています。

s3−s0、d3−d0とレジスタの関係については、「レジスタコード表」([第27回])を参照してください。

T9の写真です。


regWR、LregWRが消灯しました。
Lレジスタに”78”がラッチされました。

T10の写真です。


regRDとregWRが共に点灯しています。
regRDが点灯していて、s3−s0が”1010”なのでデータの送り手としてDレジスタが選択されます。
DregRDが点灯していて、Dレジスタの値、”56”が内部データバスinnerBUSに出力されています。
regWRが点灯していて、d3−d0が”1100”なのでデータの受け手としてHレジスタが選択されます。
HregWRが点灯していて、Hレジスタに内部データバスの値”56”が読み込まれています。

T11の写真です。


regWR、HregWRが消灯しました。
Hレジスタに”56”がラッチされました。

T12の写真です。


regRDとregWRが共に点灯しています。
regRDが点灯していて、s3−s0が”0111”なのでデータの送り手としてWKLレジスタが選択されます。
WKLregRDが点灯していて、WKLレジスタの値、”34”が内部データバスinnerBUSに出力されています。
regWRが点灯していて、d3−d0が”1011”なのでデータの受け手としてEレジスタが選択されます。
EregWRが点灯していて、Eレジスタに内部データバスの値”34”が読み込まれています。

s3−s0、d3−d0とレジスタの関係については、「レジスタコード表」([第27回])を参照してください。

T13の写真です。


regWR、EregWRが消灯しました。
Eレジスタに”34”がラッチされました。

T14の写真です。


regRDとregWRが共に点灯しています。
regRDが点灯していて、s3−s0が”0110”なのでデータの送り手としてWKHレジスタが選択されます。
WKHregRDが点灯していて、WKHレジスタの値、”12”が内部データバスinnerBUSに出力されています。
regWRが点灯していて、d3−d0が”1010”なのでデータの受け手としてDレジスタが選択されます。
DregWRが点灯していて、Dレジスタに内部データバスの値”12”が読み込まれています。

T15の写真です。


regWR、DregWRが消灯しました。
Dレジスタに”12”がラッチされました。

T16(次の命令のT0)の写真です。


T16は一瞬で終了し、次の命令のT0になります。
HLレジスタの値”1234”がDEレジスタに移り、DEレジスタの値”5678”がHLレジスタに移りました。
2008.10.10upload

前へ
次へ
ホームページトップへ戻る