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