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

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





[第850回]


●INX命令のテスト

組立作業も手間がかかりますが、RAMにプログラムを書き込んで動作テストをしながら進むというのも結構大変です。
でもここで手抜きをしたりしますと先に進んでから不具合がみつかったときなどもっともっと大変なことになってしまいます。
ですから手間がかかっても手抜きをしないでしっかりテストをしていかなければなりません。
今回はまずINX命令のテストです。
下のリストはINX命令のテストプログラムです。

0000 310000   LXI SP,$0000
0003 210000   LXI H,$0000
0006 110000   LXI D,$0000
0009 010000   LXI B,$0000
000C CD3000   CALL $0030
000F 23       INX H
0010 13       INX D
0011 03       INX B
0012 C30C00   JMP $000C

最初にHL、DE、BCを0000にします。
その後は0.5秒ごとにHL、DE、BCを+1していくだけの簡単なプログラムです。
下はプログラムを実行中の写真です。


●DCX命令のテスト

DCX命令のテストです。
上のテストプログラムと逆の動作になります。
下のリストはDCX命令のテストプログラムです。

0000 310000   LXI SP,$0000
0003 210000   LXI H,$0000
0006 110000   LXI D,$0000
0009 010000   LXI B,$0000
000C CD3000   CALL $0030
000F 2B       DCX H
0010 1B       DCX D
0011 0B       DCX B
0012 C30C00   JMP $000C

最初にHL、DE、BCを0000にします。
その後は0.5秒ごとにHL、DE、BCを−1していきます。
下はプログラムを実行中の写真です。



●STA、LDA、STAX、LDAX命令のテスト

STA、LDA、STAX、LDAXの各命令のテストプログラムです。
いずれもAレジスタの値をメモリにSTORE、またはメモリからLOADする命令です。
STA、LDAはSTORE、LOADするメモリアドレスを直接指定します。
STAX、LDAXはメモリアドレスをBCレジスタ、DEレジスタで指定する「間接アドレッシング」命令です。
下のリストはSTA、LDA、STAX、LDAX命令のテストプログラムです。

0000 310000   LXI SP,$0000
0003 210000   LXI H,$0000
0006 115100   LXI D,$0051
0009 015000   LXI B,$0050
000C CD3000   CALL $0030
000F 23       INX H
0010 7D       MOV A,L
0011 325200   STA $0052
0014 3A5200   LDA $0052
0017 12       STAX D
0018 1A       LDAX D
0019 02       STAX B
001A 0A       LDAX B
001B 6F       MOV L,A
001C C30C00   JMP $000C

HLに0000、DEに0051、BCに0050をセットしてスタートします。
HLレジスタを+1したあと、Lレジスタの値をAレジスタに入れます。
Aレジスタの値をSTA命令でアドレス0052に書き込み、すぐにLDA命令で読み出します。
次にSTAX DとLDAX Dで同じようにDEレジスタで示すメモリアドレス(0051)にAレジスタの値を書き込み、読み出しし、その次にSTAX BとLDAX BでBCレジスタで示すメモリアドレス(0050)にAレジスタの値を書き込み、読み出しし、その値をLレジスタに戻します。
この動作を0.5秒ごとに繰り返します。
下はプログラムを実行中の写真です。



今回の組立作業範囲のテストはほかにもまだあるのですが、本日は時間がなくなってしまいました。
残りのテストについては次回に説明します。

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

2018.2.24upload

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