標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第257回]
●問題のMOV r,Mを含むテストプログラムです
そもそも今回のテストプログラムを作るきっかけになった、と言いますか、背中を押されてしまった、問題のMOV r,Mを含むテストプログラムです。
MVI M、MOV M,r、MOV r,Mと、ついでにSPHLのテストです。
SPHLはスタックポインタにHLレジスタの値を入れる命令です。
テストプログラムのリストです。
2009/6/11 12:36 TEST2.TXT
END=4082
;;; MYCPU80 TEST2
;;; MVI M MOV M,r MOV r,M SPHL
;;; 09/6/11
;
ORG $4000
;
STCK=$5000
ERBF=$6000
;
4000 310050 LXI SP,STCK
4003 0E00 MVI C,00
4005 C5 PUSH B
4006 F1 POP PSW;CLEAR FLAG REGISTER
;
; MOV M,r MVI M
4007 CD6440 CALL MVI
400A 210050 LXI H,STCK
400D 2B DCX H
400E 70 MOV M,B
400F 2B DCX H
4010 71 MOV M,C
4011 2B DCX H
4012 72 MOV M,D
4013 2B DCX H
4014 73 MOV M,E
4015 2B DCX H
4016 74 MOV M,H
4017 2B DCX H
4018 75 MOV M,L
4019 2B DCX H
401A 77 MOV M,A
401B 2B DCX H
401C 3600 MVI M,00;MVI M
;
;MOV r,M
401E F9 SPHL; SPHL
401F 218240 LXI H,TBL2END
4022 46 MOV B,M
4023 2B DCX H
4024 4E MOV C,M
4025 2B DCX H
4026 56 MOV D,M
4027 2B DCX H
4028 5E MOV E,M
4029 2B DCX H
402A C5 PUSH B
402B D5 PUSH D
402C E5 PUSH H
402D 66 MOV H,M
402E 44 MOV B,H
402F E1 POP H
4030 2B DCX H
4031 E5 PUSH H
4032 6E MOV L,M
4033 4D MOV C,L
4034 E1 POP H
4035 2B DCX H
4036 7E MOV A,M
4037 C5 PUSH B; H&L
4038 F5 PUSH PSW
;;;
; CHECK
4039 310060 LXI SP,ERBF
403C 210050 LXI H,STCK
403F 2B DCX H
4040 117A40 LXI D,TBL1END
4043 0E02 MVI C,02
4045 0608 LOOP1:MVI B,08
4047 1A LOOP2:LDAX D
4048 BE CMP M
4049 CA4D40 JZ LOOP2_2
404C E5 PUSH H;ERR
404D 2B LOOP2_2:DCX H
404E 1B DCX D
404F 05 DCR B
4050 C24740 JNZ LOOP2
4053 E5 PUSH H
4054 211000 LXI H,$0010
4057 19 DAD D
4058 EB XCHG
4059 E1 POP H
405A 0D DCR C
405B C24540 JNZ LOOP1
405E E5 PUSH H
405F 210000 LXI H,$0000
4062 E5 PUSH H
4063 76 HLT
;
;SUBROUTINE
4064 0612 MVI:MVI B,12
4066 0E34 MVI C,34
4068 1656 MVI D,56
406A 1E78 MVI E,78
406C 269A MVI H,9A
406E 2EBC MVI L,BC
4070 3EDE MVI A,DE
4072 C9 RET
;
;COMPARE DATA TABLE
;MOV M,r
4073 00 TBL1:DB 00;MVI M
4074 DE DB DE;A
4075 FA DB FA;L
4076 4F DB 4F;H
4077 78 DB 78;E
4078 56 DB 56;D
4079 34 DB 34;C
407A 12 TBL1END:DB 12;B
;MOV r,M
407B 00 DB 00;F
407C 12 DB 12;A
407D DE DB DE;L
407E BC DB BC;H
407F 9A DB 9A;E
4080 78 DB 78;D
4081 56 DB 56;C
4082 34 TBL2END:DB 34;B
;
ERBF =6000 LOOP1 =4045 LOOP2 =4047
LOOP2_2 =404D MVI =4064 STCK =5000
TBL1 =4073 TBL1END =407A TBL2END =4082
結果はどうなったでしょうか?
前回と同じように、USB経由でパソコンに結果を送信してみました。
プログラムリストにある比較データTBL1、TBL2とぴったり一致しています。
前回書きましたように、TBL1、TBL2の位置が、結果の値の並びと逆になってしまいました。
前回のプログラムを書いてしまってから、そのことに気がついたのですが、わざわざ直すのも面倒だったので、そのまま通してしまいました。
でも、わかりにくいですね。
いずれ、直すことにいたしましょう。
前回のTEST1と、今回のTEST2とで、MOV、MVIのテストは全部無事終了です。
しかしテストはまだ始まったばかりです。
命令のテストはこのあともまだまだしっかりと続きます。
あ。続きます、と現在形もしくは未来形の表現ですけれど、これはもちろんこの記事の上でのお話です。
現実の時間としては、全命令のテストはすでに無事完了しています。
TEST1からTEST12まで全部で12本のプログラムを作りました。
ということは、ここしばらくはハードウェアではなくて、ソフトウェア中心のお話ということになります。
リストばっかりじゃあ、じきに飽きてしまいますから、ときどきトピックもはさむことにいたします。
まあ、正直言いまして、書いている私といたしましても、結構負担なのですよ。
でも、こうやって、やってきた作業をあとから整理して書くことで、いっぱいミスなどが発見できたことも事実です。
その意味では、手間をかけて書いてきただけの甲斐は十分にありました。
少しは皆様のお役にも立ちましたでしょうか。
それと、もうひとつ。
「ブログ風」ということで、スタートしたのでしたが、まさにその「ブログ風」のおかげといいますか、なかなかに便利な「備忘録」としても、ときどき役にたっています。
なにしろ全部きれいに忘れてしまうものですから、これはほんとに助かります。
そんなわけですから、読む方の迷惑なんぞお構いなしで、せっせとプログラムリストをUPしていきますので、しばらく我慢しておつきあいいただきますようお願い申し上げます。
2009.6.23upload
前へ
次へ
ホームページトップへ戻る