i8008
|
Intel 8008 Data 8bit / Address Bus 14bit Cycle 200KHz〜800KHz (1972) |
●8008のピン配列
| Vdd | 1 | 18 | INT | |
| D7 | 2 | 17 | READY | |
| D6 | 3 | 16 | φ1 | |
| D5 | 4 | 15 | φ2 | |
| D4 | 5 | 14 | SYNC | |
| D3 | 6 | 13 | S0 | |
| D2 | 7 | 12 | S1 | |
| D1 | 8 | 11 | S2 | |
| D0 | 9 | 10 | Vcc |
●8008の命令
命令(ニーモニック)は以下の構成となっている。
ニーモニック [オペランド]
オペランド表記は以下の通りである。
※「r」は8bitレジスタ「A,B,C,D,E,H,L,M=(HL)」を表す
「A」レジスタは演算結果を格納する「アキュムレータ」(Accumulator:演算結果累積装置)として扱われる
※「f」は1bitフラグ「S,Z,P,C」を表す
フラグは演算結果の状態を表す
「S」:最上位bit(8bit)が「1」の場合、成立
「Z」:「0」の場合、成立
「P」:「1」のbitが偶数個の場合、成立
「C」:桁あふれ(Carry)、もしくは桁の繰り下がり(Borrow)があった場合、成立
※「n」は8bitのイミディエイト値(Immediate Operand)を表す
※「aa」は16bitアドレス値を表す
(「i8008」の場合事実上14bit[16KB]となる)
●転送命令
| ニーモニック | 動作 |
|---|---|
| Lnn | データレジスタ間のデータ転送(メモリアクセス用の「M」同士では行えない) |
| LrI n | 指定したレジスタへ即値をロード(読込) |
ex.) LED →「E」レジスタから「D」レジスタへデータを転送
ex.) LAI 0→「A」レジスタに即値「0」をロード
※後にアセンブリ言語としては「8080」互換となり、「Lnn」→「MOV r,r」「LnI」→「MVI r,n」となる
以下、他の命令も同様のため「i8080」を参照のこと。
●算術演算命令 (対象は「A」レジスタのみ)
| ニーモニック | 動作 |
|---|---|
| ADr | レジスタの内容を「A」レジスタに加算 |
| ADI n | イミディエイト値を「A」レジスタに加算 |
| ACr | レジスタの内容と「C」フラグの値を「A」レジスタに加算 |
| ACI n | イミディエイト値と「C」フラグの値を「A」レジスタに加算 |
| SUr | レジスタの内容を「A」レジスタから減算 |
| SUI n | イミディエイト値を「A」レジスタから減算 |
| CPr | レジスタの内容を「A」レジスタから減算するが、結果は格納しない(=比較) |
| CPI n | イミディエイト値を「A」レジスタから減算するが、結果は格納しない(=比較) |
| INr | 「A」レジスタをインクリメント |
| DCr | 「A」レジスタをデクリメント |
●論理演算命令 (対象は「A」レジスタのみ)
| ニーモニック | 動作 |
|---|---|
| NDr | レジスタの内容と「A」レジスタの論理積 |
| NDI n | イミディエイト値と「A」レジスタの論理積 |
| ORr | レジスタの内容と「A」レジスタの論理和 |
| ORI n | イミディエイト値と「A」レジスタの論理和 |
| XRr | レジスタの内容と「A」レジスタの排他的論理和 |
| XRI n | イミディエイト値と「A」レジスタの排他的論理和 |
●ローテート命令 (対象は「A」レジスタと「C」フラグのみ)
| ニーモニック | 動作 |
|---|---|
| RLC | 「A」レジスタの内容と「C」フラグを連結して左ローテート |
| RRC | 「A」レジスタの内容と「C」フラグを連結して右ローテート |
| RAL | 「A」レジスタの内容を左ローテート |
| RAR | 「A」レジスタの内容を右ローテート |
●分岐制御命令
| ニーモニック | 動作 |
|---|---|
| JMP aa | 指定アドレスにジャンプ |
| JFf aa | フラグが0のとき、指定アドレスにジャンプ |
| JTf aa | フラグが1のとき、指定アドレスにジャンプ |
| CAL aa | 指定アドレスをサブルーチンコール |
| CFf aa | フラグが0のとき、指定アドレスをサブルーチンコール |
| CTf aa | フラグが1のとき、指定アドレスをサブルーチンコール |
| RST n | n(0〜7)*8番地をコール(割込) |
| RET | サブルーチンから復帰 |
| RFf | フラグが0のとき、サブルーチンから復帰 |
| RTf | フラグが1のとき、サブルーチンから復帰 |
●入出力命令 (対象は「A」レジスタのみ)
| ニーモニック | 動作 |
|---|---|
| INP n | ポートn(0〜7)の内容を「A」レジスタに入力 |
| OUT n | 「A」レジスタの内容をポートn(8〜23)に出力 |
●CPU制御命令
| ニーモニック | 動作 |
|---|---|
| NOP | 何もしない |
| HLT | CPUを停止し、割込を待つ |