標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第229回]
●今まで説明してきた命令を、表にまとめました
この表は[第110回]で作成したものです。
[第172回]で、その後に説明した命令を表に追記しました。
さらに、[第208回]でも、その後に説明した命令を表に追記しました。
欄が着色されていない命令は、[第110回]までに説明を完了した命令です。
黄色で着色してある命令は、その後、[第172回]までに説明した命令です。
水色で着色した命令は、その後、[第208回]までに説明した命令です。
そして今回、[第208回]以後に説明した命令を、表に追加しました。ピンクで着色してあります。
「説明回」が空欄の命令は、これから検証しなければならない命令です。
命令コード | アセンブラ表記 | 説明(初出)回 |
01 ddd sss | MOV rm, r | 第40回 |
01 ddd 110 | MOV r, M | 第40回 |
01 110 110 | HLT | 第53回 |
00 ddd 110 | MVI rm, imm | 第49回 |
00 ddd 100 | INR rm | 第58回 |
00 ddd 101 | DCR rm | 第58回 |
10 000 sss | ADD rm | 第191回 |
10 001 sss | ADC rm | 第191回 |
10 010 sss | SUB rm | 第191回 |
10 011 sss | SBB rm | 第191回 |
10 100 sss | ANA rm | 第179回 |
10 101 sss | XRA rm | 第179回 |
10 110 sss | ORA rm | 第179回 |
10 111 sss | CMP rm | 第191回 |
11 000 110 | ADI imm | 第191回 |
11 001 110 | ACI imm | 第191回 |
11 010 110 | SUI imm | 第191回 |
11 011 110 | SBI imm | 第191回 |
11 100 110 | ANI imm | 第179回 |
11 101 110 | XRI imm | 第179回 |
11 110 110 | ORI imm | 第179回 |
11 111 110 | CPI imm | 第191回 |
00 000 111 | RLC | 第166回 |
00 001 111 | RRC | 第166回 |
00 010 111 | RAL | 第166回 |
00 011 111 | RAR | 第166回 |
11 000 011 | JMP addr | 第61回 |
11 011 010 | JC addr | 第63回 |
11 010 010 | JNC addr | 第63回 |
11 001 010 | JZ addr | 第63回 |
11 000 010 | JNZ addr | 第63回 |
11 110 010 | JP addr | 第63回 |
11 111 010 | JM addr | 第63回 |
11 101 010 | JPE addr | 第63回 |
11 100 010 | JPO addr | 第63回 |
11 001 101 | CALL addr | 第97回 |
11 011 100 | CC addr | 第97回 |
11 010 100 | CNC addr | 第97回 |
11 001 100 | CZ addr | 第97回 |
11 000 100 | CNZ addr | 第97回 |
11 110 100 | CP addr | 第97回 |
11 111 100 | CM addr | 第97回 |
11 101 100 | CPE addr | 第97回 |
11 100 100 | CPO addr | 第97回 |
11 001 001 | RET | 第98回 |
11 011 000 | RC | 第98回 |
11 010 000 | RNC | 第98回 |
11 001 000 | RZ | 第98回 |
11 000 000 | RNZ | 第98回 |
11 110 000 | RP | 第98回 |
11 111 000 | RM | 第98回 |
11 101 000 | RPE | 第98回 |
11 100 000 | RPO | 第98回 |
11 vvv 111 | RST vec | 第217回 |
11 011 011 | IN port | 第106回 |
11 010 011 | OUT port | 第106回 |
00 pp0 001 | LXI rp, imm1 | |
11 pp0 101 | PUSH rr | 第69回 |
11 pp0 001 | POP rr | 第70回 |
00 110 010 | STA addr | 第64回 |
00 111 010 | LDA addr | 第64回 |
11 101 011 | XCHG | 第91回 |
11 100 011 | XTHL | 第100回 |
11 111 001 | SPHL | 第93回 |
11 101 001 | PCHL | 第93回 |
00 pp1 001 | DAD rp | 第212回 |
00 pp0 010 | STAX rx | 第66回 |
00 pp1 010 | LDAX rx | 第66回 |
00 pp0 011 | INX rp | 第95回 |
00 pp1 011 | DCX rp | 第95回 |
00 101 111 | CMA | 第209回 |
00 110 111 | STC | 第167回 |
00 111 111 | CMC | 第167回 |
00 100 111 | DAA | 第223回 |
00 100 010 | SHLD addr | 第104回 |
00 101 010 | LHLD addr | 第104回 |
11 111 011 | EI | |
11 110 011 | DI | |
00 000 000 | NOP | 第156回 |
説明回が空欄の命令は、とうとう、EIとDIだけになりました。
もう本当にあと一息のところまできましたけれど、ここへきて、かなりペースが落ちてきてしまいました。
さすがに、いささか息切れ状態です。
この前に上の表を整理したのが[第208回]で、日付を確認しましたら、4月19日になっています。
もう、それから1ヶ月以上経ってしまいました。
なのに、その間に説明した命令は、CMA、DAD、RST、DAAのわずか4命令のみですから、いかにも遅い、です。
それだけ、苦戦しているのです。
[第222回](5月8日)に、最終図面のチェック作業中とのご報告をいたしました。
それから、はや2週間が過ぎてしまいましたけれど、チェック作業は、まだ終わりません。
いやあ、大変なことは大変なのですけれど、まあ、とんでもないことに、ほんと、とんでもない作業がはまりこんでしまって、この1週間というもの、もう首までどっぷり泥沼状態でもがいておりました。
その間、「つくるCPU」の作業は完全に停止、しておりました。
本業の方、製品のバグ取りで、大変だったのです。
やっとのことで、そのとんでもないムシ(bug)を発見して、退治できたものですから、1週間ぶりの戦線復帰です。
いうまでもないことですが、ムシといったってノミやゴキブリのことではありません。
プログラムに隠れてひそんでいるやっかいなプログラムミスのことです。
そのプログラムミスを発見する作業のことをデバッグ(debug)といいます。
bugは直訳すると、虫なのです。
たしかに、ちょっと見には発見できなくて、見つけ出すのに苦労するのが常ですから、これをムシと言わずに、なんと言おう、という感じです。
あ。ちなみに、かのエドガー・アラン・ポーの「黄金虫」の原題は、”The Gold−bug”です。
それはともかく、やっと久しぶりに図面のチェック作業も再開しましたので、近いうちに、また進捗状況をご報告するようにいたします。
さて、命令の説明です。
●EI命令とDI命令
最後に残った命令、EI(Enable Interrupts)、DI(Disable Interrupts)は、共にその名が示しているように、割込み(Interrupt)のための命令です。
割込みとは、通常のプログラムの実行の流れとは関係なく、外部から割込み信号を入力することによって、その実行中のプログラムを一時停止しておいて、特定のアドレスに書かれているプログラムを優先実行する仕組みのことです。
8080では、CPUがリセットされて(または電源ONからスタートして)、プログラムの実行を開始したとき、つまり初期状態では、割込みは受けつけられません(Z80やPICなどでも、そうなっています)。
プログラムの中で、このEI命令を実行すると、はじめて割込みが受けつけられるようになります。
そのようにして、割込みは受けつけられるようになりますが、プログラムの実行内容によっては、今は割込みを受けつけては困る、という状況もでてきます。
そのようなときに、DI命令を実行すると、それ以後、再びEI命令が実行されるまでの間は、外部から割込み信号を入力しても、割込みは発生しません。
ようするに、EIとDIは、そのように、割込みを「許可」する、「禁止」する、という働きをするだけの命令です。
うう。ちょっと…。
説明に苦慮しています…。
「割込み許可」とか、「割込み禁止」とか、と言ったって、「そもそも、割込み、って一体なんなのさ。全然わかんないよー」とか言われてしまうと、もう、そこから先へは進めません。
やっぱり、先に「割込み」について、もう少し、突っ込んで説明をした方がよいかもしれません。
本日は時間もなくなってしまいましたので、そのあたりについては、次回までに頭を整理してみることにします。
2009.5.22upload
前へ
次へ
ホームページトップへ戻る