標準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

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