戻る

i8008

Intel 8008
Data 8bit / Address Bus 14bit
Cycle 200KHz〜800KHz
(1972)

●8008のピン配列

Vdd1 18INT
D72 17READY
D63 16φ1
D54 15φ2
D45 14SYNC
D36 13S0
D27 12S1
D18 11S2
D09 10Vcc

●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何もしない
HLTCPUを停止し、割込を待つ

[TOPに戻る]