Intel 8008

Intel 8008の最新ニュースをまとめて検索!

インテル 8008 マイクロプロセッサ

Intel 8008(インテル 8008、i8008)は、インテルによって開発製造された初期のマイクロプロセッサであり、1972年4月に発表された。

目次

[編集] 概要

本来はComputer Terminal Corporation(CTC)からの委託で、同社のプログラム可能な端末 Datapoint 2200で使用する予定だった。しかし、チップの提供が遅れたことと性能がCTCの目標に達しなかったため、2200には使われなかった(因みにDP2200は結局TTL素子で製作された)。インテルとCTCの契約により、インテルはそのチップを他の顧客に販売する許可を得ていた。

8008とその後継のCISCプロセッサの命令セットにはCTCの設計に基づいた部分が多く含まれている。

チップは、(18ピンのDIPパッケージであるためにピン数が制限されていたので)ひとつの8ビットバスしか持たず、それをサポートするために大規模な外付け回路が必要とされた。たとえば14ビットアドレスで16Kバイトのメモリにアクセスできるようにしようとすると、外部にメモリアドレスレジスタ (MAR) を設けてアドレス出力をラッチする必要があった(アドレス出力が1サイクルでは完了しないため)。8008は、8本の入力ポートと24本の出力ポートにアクセスできる。

単位時間当たりの命令実行回数 (MIPS) では4ビットのIntel 4004Intel 4040に若干負けるのだが、8008は8ビットの演算ができ、大きなメモリ空間にアクセスできたため、4ビットチップと比較して3~4倍の計算能力があるといわれた。

端末制御用に作られたものとしては納得できる設計だったが、他の用途に使うには困難がありすぎた。初期のごく少数のコンピュータ(最初に採用した会社はリコーといわれる)がこのマイクロプロセッサを使って設計されたが、一般に使われるようになったと言えるのは次の大幅に改良を加えられたIntel 8080である。

[編集] アーキテクチャ

  • メモリ空間は14ビット(16KB)。
  • I/Oは入力ポートが8個、出力ポートが24個。
  • A,B,C,D,E,H,Lの8ビットレジスタと、8レベルのハードウェアスタック(うち1つはプログラムカウンタ)、S,Z,P,Cのフラグをもつ。
  • メモリへのアクセスはMレジスタ(HLレジスタペアによる間接指定)でしか行えない。それ以外のレジスタによる間接指定や、アドレス直接指定によるアクセスはできない。
  • 16ビットレジスタという概念は存在しない。B,C,D,Eレジスタは単なる8ビットレジスタである。
  • スタックポインタはレジスタとしては存在しない。また、コール・リターン以外にスタックを操作する命令も存在しない。

[編集] 命令セット

  • 命令長は1~3バイト。OPコードはすべて1バイト。2バイト命令は1バイトの即値、3バイト命令(ジャンプ・コール)は2バイトのアドレスをもつ。
  • ニーモニックのOPコードはすべて3文字。
  • RST/INP/OUT命令を除き、機械語でオペランドを持たない命令(1バイト命令)はニーモニックでもオペランドを持たない。すなわち機械語のOPコードにエンコードされているレジスタ指定はニーモニックでもOPコードに含まれる。その結果、「LCD」「LED」「ACE」「SUM」などといった特徴あるニーモニックが存在する。

以下に命令一覧を示す。

  • rはレジスタA,B,C,D,E,H,L,Mを表す。
  • nは8ビット即値を表す。
  • nnは16(14)ビットアドレスを表す。

[編集] 転送命令

Lrr
8ビットレジスタ間の転送。LMMは存在しない。
LrI
8ビットレジスタに即値をロードする。

[編集] 算術演算命令

ADr
8ビットレジスタの内容をAレジスタに加算する。
ADI n
即値をAレジスタに加算する。
ACr
8ビットレジスタの内容とCフラグをAレジスタに加算する。
ACI n
即値とCフラグをAレジスタに加算する。
SUr
8ビットレジスタの内容をAレジスタから減算する。
SUI n
即値をAレジスタから減算する。
SBr
8ビットレジスタの内容とCフラグ(ボロー)をAレジスタから減算する。
SBI n
即値とCフラグ(ボロー)をAレジスタから減算する。
CPr
8ビットレジスタの内容をAレジスタから減算するが、結果は格納しない。
CPI n
即値をAレジスタから減算するが、結果は格納しない。
INr
8ビットレジスタの内容をインクリメントする。INMは存在しない。
DCr
8ビットレジスタの内容をデクリメントする。DCMは存在しない。

[編集] 論理演算命令

NDr
8ビットレジスタの内容とAレジスタの論理積をとる。
NDI n
即値とAレジスタの論理積をとる。
ORr
8ビットレジスタの内容とAレジスタの論理和をとる。
ORI n
即値とAレジスタの論理和をとる。
XRr
8ビットレジスタの内容とAレジスタの排他的論理和をとる。
XRI n
即値とAレジスタの排他的論理和をとる。

[編集] ローテート命令

RLC
Aレジスタの内容とCフラグを連結して左ローテートする。
RRC
Aレジスタの内容とCフラグを連結して右ローテートする。
RAL
Aレジスタの内容を左ローテートする。
RAR
Aレジスタの内容を右ローテートする。

[編集] ジャンプ・コール・リターン命令

JMP nn
指定の番地にジャンプする。
JFZ nn
Zフラグが0のとき指定の番地にジャンプする。
JTZ nn
Zフラグが1のとき指定の番地にジャンプする。
JFC nn
Cフラグが0のとき指定の番地にジャンプする。
JTC nn
Cフラグが1のとき指定の番地にジャンプする。
JFP nn
Pフラグが0のとき指定の番地にジャンプする。
JTP nn
Pフラグが1のとき指定の番地にジャンプする。
JFS nn
Sフラグが0のとき指定の番地にジャンプする。
JTS nn
Sフラグが1のとき指定の番地にジャンプする。
CAL nn
指定の番地をコールする。
CFZ nn
Zフラグが0のとき指定の番地をコールする。
CTZ nn
Zフラグが1のとき指定の番地をコールする。
CFC nn
Cフラグが0のとき指定の番地をコールする。
CTC nn
Cフラグが1のとき指定の番地をコールする。
CFP nn
Pフラグが0のとき指定の番地をコールする。
CTP nn
Pフラグが1のとき指定の番地をコールする。
CFS nn
Sフラグが0のとき指定の番地をコールする。
CTS nn
Sフラグが1のとき指定の番地をコールする。
RST p
(p=0~7) p*8番地をコールする。割り込み用。
RET
リターンする。
RFZ
Zフラグが0のときリターンする。
RTZ
Zフラグが1のときリターンする。
RFC
Cフラグが0のときリターンする。
RTC
Cフラグが1のときリターンする。
RFP
Pフラグが0のときリターンする。
RTP
Pフラグが1のときリターンする。
RFS
Sフラグが0のときリターンする。
RTS
Sフラグが1のときリターンする。

[編集] 入出力命令

INP p
(p=0~7)Aレジスタに入力する。
OUT p
(p=8~23)Aレジスタの内容を出力する。

[編集] CPU制御命令

NOP
何もしない。
HLT
CPUを停止し、割り込みを待つ。

[編集] 余談

・CPUの元祖となったIntel 4004の「4004」という名称は開発コードがそのまま商品名になったものである。しかし、世間では4ビットCPUだから4004なのだと勘違いされ、そのまま広く認知されてしまった。8008の発表の時、Intelは世間の混乱を招かないために開発コード1201を8008と改名して発表した経緯がある。

最終更新 2009年9月15日 (火) 23:54 (日時は個人設定で未設定ならばUTC)。
【Intel 8008】変更履歴

ご利用上の注意