標準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
前へ
次へ
ホームページトップへ戻る