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

標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
やっと(!)MYCPU80の改良型基板製作に着手しました!!





[第857回]


●DAD命令のテスト

DAD命令はHLレジスタとBC、DE、HL、SPとを加算して結果をHLレジスタに入れる命令です。
下のリストはDAD命令のテストプログラムです。

0000 012301  LXI B,$0123
0003 116745  LXI D,$4567
0006 21AB89  LXI H,$89AB
0009 31EFCD  LXI SP,$CDEF
000C 09      DAD B
000D 44      MOV B,H
000E 4D      MOV C,L
000F 19      DAD D
0010 54      MOV D,H
0011 5D      MOV E,L
0012 39      DAD SP
0013 F9      SPHL
0014 29      DAD H
0015 76      HLT

最初にBCレジスタの値0123とHLレジスタの値89ABが加算(DAD B)され、結果の値8ACEがHLレジスタに入れられますが、BCレジスタにもMOV命令で転送されます。
次にHLレジスタの値8ACEとDEレジスタの値4567とが加算(DAD D)され、結果の値D035がHLレジスタに入れられますが、DEレジスタにもMOV命令で転送されます。
次にHLレジスタの値D035とSP(スタックポインタ)の値CDEFとが加算(DAD SP)され、結果の値9E24がHLレジスタに入れられますが、SPにもSPHL命令で転送されます。
次にHLレジスタの値9E24が2倍(DAD H)され、結果の値3C48がHLレジスタに入れられます。
最後にHLT命令が実行されます。
プログラムが正しく実行されれば、BC=8ACE、DE=D035、SP=9E24、HL=3C48、になったあと、アドレス0015のHLT命令で停止します。

DAD命令のテストプログラムを実行したあとの写真です。


●DAA命令のテスト

DAAはその前に実行された加算命令(ADDまたはADC)が十進数同士の演算だったと考えて、その結果を正しい十進数に補正する命令です。
DAAについては[第223回][第228回]で説明しています。

下のリストはDAA命令のテストプログラムです。

0000 3E87    MVI A,87
0002 C636    ADI 36
0004 4F      MOV C,A
0005 27      DAA
0006 76      HLT

簡単なプログラムです。
87+36の加算が行われた結果の値BDがCレジスタに入れられます。
DAAの結果、Aレジスタには87+36を十進数で計算したときの答え、123の下位2桁23が入れられ、上位桁への桁上がりを示すキャリーフラグがセットされます。

DAA命令のテストプログラムを実行したあとの写真です。


このほかにもあともう少しまだテストする命令が残っていますが、本日は時間がなくなってしまいましたので、それについては次回に書くことにします。

TTLでCPUをつくろう![第857回]

2018.3.3upload

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