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

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

今回は前回のADD命令のテストの続きです。
前回は2バイトの加算(下記)のうちの下位バイトの加算が済んだところまでの写真をお見せしました。

  56AB
  3489(
  8B34

前回の説明に一部追記をしました。なんだか真夜中にご覧いただいている方もいらっしゃるようですから、「えー、追記なんて見てないよ」というお方は、まずは、その「追記」をお読みくださいませ。

さて今回は、前回の説明の続きです。

もう一度2バイトの加算部分のプログラムをお見せします。



前回は、プログラムの先頭からステップ毎に動作させていったのですが、全部の写真を撮るのは大変ですし、加算命令以外の命令は、すでに確認済みですから、0107のADD E命令をクロック毎にステップ動作させた写真だけをお見せしました。
今回は、その続きですが、前回と同じように、今度は010AのADC D命令をクロック毎にステップ動作させた写真だけをお見せすることにします。

アドレス010AのADC D命令のT4の写真です。



このADC命令の前に実行された、MOV A,H命令によってAレジスタにはHレジスタの値、56が入れられています。
T4のタイミングで、そのAレジスタの値が内部データバスに読み出され、ALUのレジスタ”A”に書き込まれています。
Aレジスタの左にある、AregRD(黄LED)が点灯しています。
ALUのレジスタ”A”の左にある、ALUreg”A”WR(緑LED)が点灯しています。

ADC D命令のT5の写真です。



ALUreg”A”WR(緑LED)が消灯しました。

ADDレジスタ表示LEDの右下にある、下位桁からの桁上げを示すLEDが点灯しました。

前回と同様、74HC283周りの回路図([第191回]加算回路)を見ながら説明をすることにします。
今はADC D命令(OPコードは10001010)の実行中です。
ADC命令はOP3=1、OP4=0です。このとき、74HC74のD入力はCF(キャリーフラグ)の値になります。
先に実行したADD E命令の結果、上位桁への桁上げ(キャリー)が発生しました。
ADC命令はそのキャリーを含めて加算しますから、下位4ビットの加算器の74HC283のC0には、下位桁の加算の結果のCF(キャリーフラグ)が入れられるのです。

74HC74のD入力はCKが↑のときに出力に伝わります。
CKにはALUreg”A”WRが入っています(「regAWR」になっていますが、記載ミスです)。

ALUreg”A”WRは、前回に説明しましたように、T4のときにアクティブになります。
T4のときに、↓_↑という信号が、74HC74のCK端子に入力されますから、T4の終りに、D入力のCFの状態が、Qから出力されます。

下位4ビットの加算をする74HC283のC0入力に、この時点(T4の終り、つまりT5になったとき)で、CF(キャリーフラグ)の状態が伝えられたため、上記LEDが点灯したのです。

ADC D命令のT6の写真です。



Dレジスタの値、34が内部データバスに読み出され、ALUのレジスタ”B”に書き込まれています。
Dレジスタの左にある、DregRD(黄LED)が点灯しています。内部データバスに読み出された34は、ALUレジスタ”B”に書き込まれていて、ALUレジスタ”B”も34になりました。
ALUレジスタ”B”の左側にあるALUreg”B”WR(緑LED)が点灯しています。

ALUレジスタ”A”とALUレジスタ”B”の値は即座に加算されて、ADDレジスタに表示されます。
56+34+1=8Bの計算が行われて、ADDレジスタの表示が8Bになりました(左の計算の最後の+1は下位桁からのキャリーです)。

今回は、加算の結果、上位桁への桁上げは発生しませんから、上位桁への桁上げを示す左側のLEDは消灯しました。
しかし、まだこの段階では、キャリーフラグへの反映は行われません。

ADC D命令のT7の写真です。



ALUreg”B”WR(緑LED)が消灯しました。

ADC D命令のT8の写真です。



ADDレジスタのLED表示の左側にある、AddRD(黄LED)が点灯して、加算の結果(8B)が内部データバスに出されています。
Aレジスタの右側にあるAregWR(緑LED)が点灯して、Aレジスタに内部データバスの値、8Bが書き込まれています。

フラグレジスタは、左端のS(サイン)フラグが点灯し、その右のZ(ゼロ)フラグは消灯、その右のH(ハーフキャリー)フラグと、右端のC(キャリー)フラグも消灯しました。

ADC D命令のT9の写真です。



AregWR(緑LED)が消灯しました。

次回はSUB命令の動作の写真をお見せすることにいたします。
2009.4.10upload

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