標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第350回]
☆☆☆[第347回]にUPしました、緊急のご連絡はお読みいただきましたでしょうか?
[第346回]に書きましたように、突然の災難で、メールに使っていたパソコンのハードディスクがダウンしてしまって、ご購入者様のメールアドレスも消えてしまいました。
メールでお知らせできませんので、とりあえずホームページ上でお知らせしております。
●組立作業がさらにさらに進んでいます
何回か紹介させていただいているYT様のブログです。
FIAT500と洗車の日々・・・(http://plaza.rakuten.co.jp/flyback/)
[4]レジスタ回路 まで実装完了です。
じつは[5]のMOV回路まで完成してしまっている、んだそうです。
うう。なんだか追いかけられているみたいで、あせってしまいます。
☆☆☆私の方はあせりながら、やっと「TK80回路の操作説明書」を書き上げたところです。
あともう少しです。
はやく皆様のお手元にお届けして、肩の荷をおろしたいものです。☆☆☆
●[12]ADD、SUB、CMP、DAD、DAA、RST、INT命令回路の実装です
[第317回]で説明した作業です。
今回はADD、SUB、CMP、DAD、DAA、RST、INT命令の回路を実装します。
実装する部分は、こちらのシルク図で、濃い緑色で着色したところです
いつものように、組み立てが終わったところの写真をUPしようとしたのですが…。
ありません。
うっかりしていて、スキャナで取り込むのを忘れてしまったようです。
この次はTK80回路を実装して、それで完成ですから、つまりは全部実装した完成写真しかないことになります。
いまさらどうにもなりませんので、今回の写真については、無しということになってしまいました。
●28.ADD、ADC、SUB、SBB、CMP命令のテスト(操作説明書から)
MYCPU80組立説明書 V組立 [12]ADD、SUB、CMP、DAD、DAA、RST、INT命令回路 の組立作業後に行う動作テストの説明です。
●28−1. ADD、ADC、SUB、SBB、CMP命令のテストプログラムをメモリに書く
メモリに次のプログラムを書きます(1. メモリにデータを書き込む の説明を参考にして操作してください)。
0000 21AB56 LXI H,$56AB
0003 118934 LXI D,$3489
0006 7D MOV A,L
0007 83 ADD E
0008 4F MOV C,A
0009 7C MOV A,H
000A 8A ADC D
000B 47 MOV B,A
000C 11CD12 LXI D,$12CD
000F 3E89 MVI A,89
0011 93 SUB E
0012 6F MOV L,A
0013 3E34 MVI A,34
0015 9A SBB D
0016 67 MOV H,A
0017 BC CMP H
0018 C21D00 JNZ $001D
001B BD CMP L
001C 76 HLT
001D 76 HLT
(リスト26)ADD、ADC、SUB、SBB、CMP テストプログラム
リスト26はADD、ADC、SUB、SBB、CMP命令のテストプログラムです。
ADI、ACI、SUI、SBI、CPIについてはテストしませんが、ここでテストするADD〜CMPと基本的な部分はすべて同じ回路を共有していますから、ここでのテストは省略します。
●28−2. テストプログラムを実行する
プログラムの実行の仕方については 4. テストプログラムを実行する を参照してください。
RESETSWを押しながら、ディップスイッチDS3−4をOFFにします。その後RESETSWを離すとプログラムが実行されます。
プログラムは一瞬で実行され、最後のHLT命令が繰り返し実行されます。
最初にAレジスタの値ABとEレジスタの値89が加算(ADD)され、結果の値34がCレジスタに入れられます。
このときキャリーが発生します。
そのキャリーとAレジスタの値56とDレジスタの値34とが加算(ADC)され、結果の値8BがBレジスタに入れられます。
次にAレジスタの値89からEレジスタの値CDが減算(SUB)され、結果の値BCがLレジスタに入れられます。
このときボローが発生します。
次にAレジスタの値34からDレジスタの値12とボローとが減算(SBB)され、結果の値21がHレジスタに入れられます。
そのあとAレジスタとHレジスタが比較(CMP)されます。
Aレジスタの値21がHレジスタに入れられた直後ですから、A=HでZフラグが1になります。
したがってその次のJNZはパスされて、その次のCMP命令が実行されます。
Aレジスタの値21とLレジスタの値BCが比較されます。CMP命令の比較はSUBと同じ計算をしますから、21−BCの計算になります。その結果キャリーフラグが立ちます。
最後にHLT命令が繰り返し実行されます。
プログラムが正しく実行されれば、B=8B、C=34、A=21、H=21、L=BCになりC(キャリー)フラグがセットされたあと、アドレス001CのHLT命令で停止(繰り返し実行)されます。
☆☆☆操作説明書には図はありますが画像(基板の写真)はありません。でもせっかくのホームページですから、写真もUPいたします。☆☆☆
●テストプログラムを最後のHLT命令まで実行し終わった写真です
なおADD、ADC、SUB、SBB、CMP命令については、当社ホームページの
「つくるCPU[第190回]」(http://www.alles.or.jp/~thisida/mycpu190.html)〜
「つくるCPU[第205回]」(http://www.alles.or.jp/~thisida/mycpu205.html)、
でも説明をしています。
●29.DAD命令のテスト
MYCPU80組立説明書 V組立 [12]ADD、SUB、CMP、DAD、DAA、RST、INT命令回路 の組立作業後に行う動作テストの説明です。
●29−1. DAD命令のテストプログラムをメモリに書く
メモリに次のプログラムを書きます(1. メモリにデータを書き込む の説明を参考にして操作してください)。
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
(リスト27)DAD テストプログラム
DAD命令はHLレジスタとBC、DE、HL、SPとを加算して結果をHLレジスタに入れる命令です。
リスト27ではHLレジスタとBCレジスタを加算し、その結果とDEレジスタを加算し、その結果とSPを加算し、最後にHL+HLを実行します。途中の結果はそれぞれBC、DE、SPに保存されます。
●29−2. テストプログラムを実行する
プログラムの実行の仕方については 4. テストプログラムを実行する を参照してください。
RESETSWを押しながら、ディップスイッチDS3−4をOFFにします。その後RESETSWを離すとプログラムが実行されます。
プログラムは一瞬で実行され、最後の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命令で停止(繰り返し実行)されます。
●テストプログラムを最後のHLT命令まで実行し終わった写真です
なおDAD命令については、当社ホームページの
「つくるCPU[第212回]」(http://www.alles.or.jp/~thisida/mycpu212.html)〜
「つくるCPU[第216回]」(http://www.alles.or.jp/~thisida/mycpu216.html)、
でも説明をしています。
●30.DAA命令のテスト
MYCPU80組立説明書 V組立 [12]ADD、SUB、CMP、DAD、DAA、RST、INT命令回路 の組立作業後に行う動作テストの説明です。
●30−1. DAA命令のテストプログラムをメモリに書く
メモリに次のプログラムを書きます(1. メモリにデータを書き込む の説明を参考にして操作してください)。
0000 3E87 MVI A,87
0002 C636 ADI 36
0004 4F MOV C,A
0005 27 DAA
0006 76 HLT
(リスト28)DAA テストプログラム
簡単なプログラムです。
87+36の計算を行い、その結果に対してDAAを実行します。
結果を見ればDAAが正しく機能しているかどうかはすぐにわかるのですが、参考までに加算後の(DAA補正前の)値をCレジスタに保存します。
●30−2. テストプログラムを実行する
プログラムの実行の仕方については 4. テストプログラムを実行する を参照してください。
RESETSWを押しながら、ディップスイッチDS3−4をOFFにします。その後RESETSWを離すとプログラムが実行されます。
プログラムは一瞬で実行され、最後のHLT命令が繰り返し実行されます。
87+36の加算が行われた結果の値BDがCレジスタに入れられます。
DAAの結果、Aレジスタには87+36を十進数で計算したときの答え、123の下位2桁23が入れられ、上位桁への桁上がりを示すキャリーフラグがセットされます。
●テストプログラムを最後のHLT命令まで実行し終わった写真です
CレジスタにはBDが、Aレジスタには23が入れられ、そしてC(キャリー)フラグが点灯しています。
なおDAA命令については、当社ホームページの
「つくるCPU[第223回]」(http://www.alles.or.jp/~thisida/mycpu223.html)〜
「つくるCPU[第228回]」(http://www.alles.or.jp/~thisida/mycpu228.html)、
でも説明をしています。
2009.10.2upload
前へ
次へ
ホームページトップへ戻る