Intel 8085(「エイティエイティファイブ」)は、Intelが製造し、1976年3月に発表された8ビットマイクロプロセッサです。 [ 2 ]より有名なIntel 8080とバイナリ互換性があります。これは、Intelが開発した最後の8ビットマイクロプロセッサです。部品番号の「5」は、8080の+5、-5、+12Vと比較して、8085が単一の+5ボルト(V)電源を使用していることを強調しており、当時ほとんどが+ 5Vであったシステムに8085を統合しやすくしました。
もう一つの大きな変更点は、4つの新しい割り込みピンと、入力ピンと出力ピンが独立したシリアルポートが追加されたことです。シンプルなシステムではこれだけで十分な場合が多く、この機能を提供するための個別の集積回路が不要になっただけでなく、結果としてコンピュータバスも簡素化されました。8080と比較した命令セットの変更点は、これらのピンを使用したデータの読み書き命令のみでした。
8085は40ピンDIPパッケージで提供されます。新しいピン配置のため、アドレスバス(AD 0~AD 7 )の8ビットをデータバスと多重化する必要がありました。つまり、完全な16ビットアドレスを指定するには、8ビットのパスを2つ経由して送信する必要があり、そのうちの1つを74LS373などの別個のハードウェアを使用して一時的にラッチする必要があります。インテルは、アドレスラッチを内蔵したサポートチップをいくつか製造しました。これには、アドレスラッチ、2KBのEPROM 、16ピンのI/Oを備えた8755、および256バイトのRAM 、22ピンのI/O、14ビットのプログラマブルタイマー/カウンタを備えた8155が含まれます。アドレス/データバスの多重化により、8085とこれらのメモリおよびI/Oチップ間のPCBトラック数が削減されました。
8085は8080の改良版ではあったものの、1970年代後半から1980年代初頭にかけて、デスクトップコンピュータ市場の大部分を占めるようになったZilog Z80にその地位を奪われてしまった。
コンピュータでは広く使われなかったものの、8085はマイクロコントローラとして長きにわたり活躍した。 1970年代後半にDECtape IIコントローラやVT102ビデオ端末といった製品に組み込まれると、8085はこれらの製品のライフサイクルを通じて新規生産に利用され続けた。



8085は、Intel 8080をベースにした従来型のフォン・ノイマン設計です。8080とは異なり、データバスに状態信号を多重化するのではなく、8ビットのデータバスを16ビットアドレスバスの下位8ビットと多重化することで、ピン数を40に制限しています。状態信号は、専用のバス制御信号ピンと、S0およびS1という2つの専用バス状態IDピンによって提供されます。ピン40は電源(+ 5V)に、ピン20はグランドに使用されます。ピン39はホールドピンとして使用されます。
Intel 8085 プロセッサはnMOS回路を使用して設計され、後の「H」バージョンは、元々は高速スタティック RAM 製品向けに開発された Intel の強化 nMOS プロセスであるHMOS II (「高性能 MOS」) で実装されました。[ 3 ] 8080 とは異なり、8085 は競合プロセッサと同様に 5 ボルトの電源を 1 つだけ必要とします。8085 には約 6,500 個のトランジスタが含まれています。[ 4 ]
8085は、8224(クロックジェネレータ)と8228(システムコントローラ)の機能をチップ上に統合することで、集積度を高めています。同時代の類似設計(Z80など)と比較した場合の欠点は、バスのデマルチプレクサが必要となる点です。しかし、Intel 8155、8355、8755メモリチップのアドレスラッチにより直接インターフェースが可能となるため、8085とこれらのチップを組み合わせれば、ほぼ完全なシステムが構築できます。
8085 には、新しい割り込みをサポートする拡張機能があり、マスク可能なベクタ割り込みが 3 つ (RST 7.5、RST 6.5、RST 5.5)、マスク不可能な割り込み(TRAP) が 1 つ、外部サービス割り込み (INTR) が 1 つあります。これら 5 つの割り込みはそれぞれプロセッサ上に個別のピンがあり、シンプルなシステムでは個別の割り込みコントローラのコストを回避できます。RST 7.5 割り込みはエッジトリガ (ラッチ) ですが、RST 5.5 と 6.5 はレベルセンシティブです。TRAP を除くすべての割り込みは、EI 命令で有効化され、DI 命令で無効化されます。さらに、SIM (割り込みマスクの設定) 命令と RIM (割り込みマスクの読み取り) 命令 (8085 で 8080 の設計に由来しない唯一の命令) を使用すると、マスク可能な RST 割り込み 3 つを個別にマスクできます。これら 3 つはすべて、通常の CPU リセット後にマスクされます。 SIMとRIMは、グローバル割り込みマスクの状態と3つの独立したRST割り込みマスクの状態の読み取り、同じ3つの割り込みの保留割り込み状態の読み取り、RST 7.5トリガーラッチフリップフロップのリセット(保留割り込みを処理せずにキャンセル)、およびSODピンとSIDピンを介したシリアルデータの送受信を、すべてプログラム制御下で互いに独立して実行できます。
SIMとRIMはそれぞれ4クロックサイクル(Tステート)で実行されるため、SIDのサンプリングやSODの切り替えは、8155のポートなど、I/Oポートやメモリマップドポートを介して信号を切り替えたりサンプリングしたりするよりもはるかに高速に行えます。(このように、SIDは8085と同時代の6502 CPUのSO[「Set Overflow」]ピンと比較できます。)
8080と同様に、8085は外部から生成されるウェイトステート(ピン35、READY)によって低速メモリに対応でき、 HOLD信号とHLDA信号(ピン39と38)を使用したダイレクトメモリアクセス(DMA)機能も備えています。8080からの改良点として、8085は直接接続された圧電結晶を駆動でき、内蔵クロックジェネレータによって、結晶周波数の半分の周波数で高振幅の2相クロック 信号が生成されます(例えば、6.14MHzの結晶を使用した場合、3.07MHzのクロックが生成されます )。この内部クロックは出力ピンから出力され、周辺機器や他のCPUを、信号が出力されるCPUと同期させて駆動することができます。 8085は外部発振器によってクロック供給することもできるため、システム全体で共通のクロックをすべてのCPUに用いる同期マルチプロセッサシステムで8085を使用したり、ビデオソースや高精度時間基準などの外部時間基準にCPUを同期させたりすることが可能となる。
8085 は、 8080 のバイナリ互換の後継機です。8080 の完全な命令セットをサポートし、命令の動作もまったく同じで、CPU フラグに対するすべての影響も含まれます (ただし、AC フラグを異なる方法で設定する AND/ANI 演算は除きます)。[ 5 ]これは、8080 で正常に動作するオブジェクト コード (ROM または RAM 内の任意のプログラム イメージ) の大部分は、翻訳や変更なしで 8085 で直接実行できることを意味します。 (例外として、タイミングが重要なコードや、前述の AC フラグ設定の違い、または文書化されていない CPU 動作の違いに敏感なコードなどがあります。) 8085 の命令タイミングは 8080 とわずかに異なります。INR、DCR、およびよく使用される MOV r,r 命令などの一部の 8 ビット操作は 1 クロック サイクル速くなっていますが、スタック PUSH (16 ビット SP レジスタをデクリメントする) などの 16 ビット操作を含む命令は、一般的に 1 サイクル遅くなっています。実行されなかった条件付きジャンプは、8085では3クロック速くなります。既に述べたように、8085で新しく追加されたのはSIM命令とRIM命令だけです。[ nb 1 ]
プロセッサには、プログラマがアクセスできる7つの8ビットレジスタ(A、B、C、D、E、H、L)があり、Aはアキュムレータとも呼ばれます。残りの6つのレジスタは、特定の命令に応じて、独立したバイトレジスタとして、または3つの16ビットレジスタペア(BC、DE、HL、またはIntelのドキュメントではB、D、Hと表記)として使用できます。
一部の命令では、HL を (限定的な) 16 ビットのアキュムレータとして使用します。8080 と同様に、HL が指すメモリ アドレスの内容は、擬似レジスタ M としてアクセスできます。また、16 ビットのプログラム カウンタと、メモリへの 16 ビットのスタック ポインタ(8008 の内部スタックを置き換える) も備えています。PUSH PSW、POP PSW などの命令は、プログラム ステータス ワード (アキュムレータとフラグ) に影響を与えます。アキュムレータは算術演算と論理演算の結果を格納し、フラグ レジスタ ビット (符号、ゼロ、補助キャリー、パリティ、キャリー フラグ) は、これらの演算の結果に応じて設定またはクリアされます。符号フラグは、結果が負の符号を持つ場合 (つまり、アキュムレータのビット 7 が設定されている場合) に設定されます。補助キャリー フラグまたはハーフ キャリー フラグは、ビット 3 からビット 4 へのキャリーが発生した場合に設定されます。アキュムレータのパリティ(1ビットの数)が偶数の場合、パリティフラグは1に設定され、奇数の場合はクリアされます。演算結果が0の場合、ゼロフラグが設定されます。最後に、アキュムレータの7ビット目(最上位ビット)からキャリーが発生した場合、キャリーフラグが設定されます。
他の多くの8ビットプロセッサと同様に、簡潔さを保つため、すべての命令は1バイトでエンコードされています(レジスタ番号は含まれますが、即値データは含まれません)。一部の命令の後には、即値オペランド、メモリ アドレス、またはポート番号となる1バイトまたは2バイトのデータが続きます。レジスタやフラグを一切変更しないNOP「何もしない」命令があります。より大規模なプロセッサと同様に、マルチレベルのプロシージャ呼び出しと戻り(ジャンプのように条件付きで実行可能)のためのCALLおよびRET命令、およびマシン スタック上の任意の16ビット レジスタ ペアを保存および復元する命令があります。また、固定アドレス00h、08h、10h、...、38hにあるサブルーチン用の8つの1バイト呼び出し命令(RST)があります。これらは、対応する割り込みサービス ルーチンを呼び出すために外部ハードウェアから提供されることを想定していますが、高速システム コールとしてもよく使用されます。高度な命令の一つにXTHLがあり、これはレジスタペアHLをスタックポインタが示すアドレスに格納されている値と交換するために使用されます。
2 オペランド 8 ビット算術論理演算 (ALU) はすべて、8 ビットアキュムレータ(A レジスタ) 上で動作します。2 オペランド 8 ビット演算の場合、もう一方のオペランドは、即値、別の 8 ビットレジスタ、または 16 ビットレジスタペア HL でアドレス指定されるメモリセルのいずれかになります。アキュムレータ以外の宛先を持つことができる 8 ビット ALU 演算は、単項インクリメント命令またはデクリメント命令のみであり、2 オペランド 8 ビット演算と同様に、任意の 8 ビットレジスタまたは HL でアドレス指定されるメモリ上で動作します。MOV 命令を使用すると、任意の 2 つの 8 ビットレジスタ間、および任意の 8 ビットレジスタと HL でアドレス指定されるメモリセル間で直接コピーがサポートされます。また、MVI 命令を使用すると、即値を上記のいずれの宛先にも移動できます。 MOV命令は通常のエンコード方式(オペコード空間全体のほぼ4分の1を使用)のため、レジスタを自身にコピーする冗長なコード(例えばMOV B,B)が存在しますが、遅延以外にはほとんど役に立ちません。[注2 ]しかし、HLアドレスのセルから自身へのコピー(つまりMOV M,M)は、代わりにHLT命令をエンコードし、外部リセットまたはマスク解除割り込みが発生するまで実行を停止します。[注3 ]
8085は8ビットプロセッサですが、16ビット演算もいくつか備えています。3つの16ビットレジスタペア(BC、DE、HL)またはSPのいずれかに、16ビットの即値をロード(LXIを使用)、インクリメントまたはデクリメント(INXおよびDCXを使用)、またはHLへの加算(DADを使用)を行うことができます。LHLDは直接アドレス指定メモリからHLをロードし、SHLDも同様にHLを格納します。XCHG演算はHLとDEの値を交換します。XTHLはスタックにプッシュされた最後の項目とHLを交換します。HLを自身に加算すると、1つの命令で16ビットの算術左シフトが実行されます。フラグに影響を与える唯一の16ビット命令はDAD(BC、DE、HL、またはSPをHLに加算)で、キャリーフラグを更新して24ビット以上の加算と左シフトを容易にします。スタックポインタをHLに加算すると、(再帰的な)スタックフレーム内の変数にインデックスを付けるのに便利です。スタックフレームは DAD SP および SPHL を使用して割り当てることができ、計算されたポインタへの分岐は PCHL を使用して実行できます。これらの機能により、PL/M、Pascal、Cなどの言語を16 ビット変数でコンパイルして 8085 マシン コードを生成することが可能になります。16 ビットの減算およびビット単位の論理演算は 8 ビット単位で実行されます。プログラム コード (サブルーチン ライブラリ) で実装する必要のある演算には、符号付き整数の比較、乗算、除算などがあります。
8080と8085の違いを強調表示しています。8080と比較して、8085はクロック数が多い場合↑、少ない場合↓、または両方の組み合わせとなる場合があります↕。一部の記号の説明については、表の下部を参照してください。
8085アセンブラの開発過程で、ソフトウェアエンジニアのWolfgang DehnhardtとVilly M. Sorensenによって、文書化されていない命令とフラグが多数発見された。これらの命令は16ビットオペランドを使用し、ワードの間接ロードとストア、減算、シフト、ローテート、オフセット操作などが含まれる。[ 6 ] また、2つの新しいフラグも実装された。少なくとも1つのセカンドソースメーカーが新しい命令を文書化した。[ 7 ]
8085が設計されたもののまだ発表されていなかった時点で、多くの設計者は、すでに市場に出回っている競合製品よりも劣っていると感じていた。次世代の16ビットCPUである8086はすでに開発中だった。インテルは、次期8086 CPUの設計を迅速化および簡素化するために、8085の新しい12個の命令のうち10個を文書化しないという土壇場での決定を下した。[ 8 ]
8085は、ポートマップドI/OとメモリマップドI/Oの両方をサポートしています。専用の入出力命令を使用して、最大256個の入出力(I/O)ポートをサポートし、ポートアドレスをオペランドとして使用します。ポートマップドI/Oは、アドレス空間が限られているプロセッサで有利になる場合があります。ポートマップドI/Oバスサイクル中、8ビットのI/Oアドレスは、16ビットアドレスバスの下位半分と上位半分の両方にCPUによって出力されます。
メモリマップドI/O用に設計されたデバイスは、LDA(16ビットアドレスからアキュムレータをロードする)命令やSTA(指定された16ビットアドレスにアキュムレータをストアする)命令、またはメモリオペランドを持つその他の命令を使用してアクセスすることもできます。メモリマップドI/O転送サイクルは、バス上では通常のメモリアクセスサイクルとして認識されます。
Intel は、MDS-80 マイクロプロセッサ システムとして知られる、8080 および 8085 用の開発システムを製造しました。最初の開発システムには 8080 プロセッサが搭載されていました。後に ICE (インサーキット エミュレータ) を含む 8085 および 8086 のサポートが追加されました。これは、CPU、モニター、および 8 インチ フロッピー ディスク ドライブ 1 台を内蔵した、約 20 インチ立方体 (Intel のコーポレート ブルー) の大型で重いデスクトップ ボックスです。後に、フロッピー ドライブを 2 台追加した外部ボックスが利用可能になりました。ISISオペレーティングシステムが動作し、エミュレータ ポッドと外部 EPROM プログラマも動作させることができます。このユニットは、開発システム専用に設計された Multibus カード ケージを使用しています。驚くほど多くのスペア カード ケージとプロセッサが販売されたため、Multibus は別の製品として開発されました。
後期のiPDSは、約8インチ× 16インチ × 20インチのポータブルユニットで、ハンドルが付いています。小型の緑色の画面、上部に内蔵されたキーボード、5¼インチフロッピーディスクドライブを備え、ISIS-IIオペレーティングシステムが動作します。また、2つ目の8085プロセッサを搭載でき、両方のプロセッサが同時に独立して動作する限定的なマルチプロセッサ動作が可能です。画面とキーボードは切り替え可能で、一方のプロセッサでプログラムをアセンブル(大きなプログラムは時間がかかります)しながら、もう一方のプロセッサでファイルを編集できます。バブルメモリオプションと、EPROM、Intel 8048および8051プログラミングモジュールなど、さまざまなプログラミングモジュールを備えており、これらは側面に差し込むことでスタンドアロンのデバイスプログラマを置き換えます。Intelは、8080/8085アセンブラに加えて、PL/M-80やPascal用のコンパイラ、 EPROMに書き込んで使用できるようにプログラムをリンクおよび静的に配置するツールセットなど、多数のコンパイラを開発しました。組み込みシステム。
低価格版の「MCS-85システム設計キット」(SDK-85)ボードには、8085 CPU、デバッグモニタプログラムを含む8355 ROM、8155 RAM、22個のI/Oポート、8279 16進キーパッド、8桁7セグメントLED、およびTTY(テレタイプ)が搭載されています。20 mA 電流ループシリアルインターフェース。もう 1 つの 2K×8 8755 EPROM 用のパッドと、もう 1 つの256バイトの RAMと8155 I/Oタイマー/カウンタはオプションで追加可能です。データ、制御信号、アドレス信号はすべてデュアルピンヘッダーで利用可能で、広いプロトタイプ作成エリアが確保されています。
8085プロセッサは、初期のパーソナルコンピュータのいくつかで使用されました。たとえば、TRS-80モデル100シリーズでは、OKI製の80C85(MSM80C85ARS)が使用されました。NMOS /HMOS 8085プロセッサのCMOSバージョン80C85には、複数のメーカーが存在します。IBMは、IBM System/23 Datamasterで、リファレンス4178615として隠蔽された8085を使用しました。 [ 12 ]ソビエト連邦では、 IM1821VM85A(ロシア語:ИМ1821ВМ85А)という名称で80C85クローンが開発されました。2016年はまだ生産中だった。[ 13 ]一部のメーカーは、追加の説明書などの追加機能を備えたバリエーションを提供している。
8085の耐放射線バージョンは、1990年代から2000年代初頭にかけて、CRRES、Polar、FAST、Cluster、HESSI、火星探査車Sojourner [ 14 ]、THEMISなど、 NASAとESAのいくつかの宇宙物理ミッションの搭載機器データプロセッサに使用されました。スイスの企業SAIAは、1980年代に、プログラマブルロジックコントローラのPCA1シリーズのCPUとして8085と8085-2を使用しました。
Pro-Log社は、CPU、RAM、ROM/EPROM用ソケット、I/O、外部バスインターフェースを備えたSTDバスフォーマットのカードに、8085プロセッサと関連ハードウェアを搭載しました。付属の命令セットリファレンスカードでは、Intel 8085 CPUについて全く異なるニーモニックが使用されています。この製品は、Intelのマルチバスカード製品群の直接の競合製品でした。
Western DigitalのWD1003-SCSは、ST506スタイルのディスクドライブとインターフェースする1:1インターリーブSCSIディスクコントローラです。これは、RAMにDMAアクセスが必要だったため、利用可能なマイクロコントローラの能力をわずかに超えた組み込み8085アプリケーションの一例です。[ 15 ]
8085 CPUは、インテルがシステム構築のために開発したチップファミリーの一つです。これらのサポートチップの多くは、他のプロセッサでも使用されていました。インテル8088プロセッサを搭載した初代IBM PCは、これらのチップをいくつか使用していました。現在では、同等の機能はVLSIチップ、具体的には「サウスブリッジ」チップによって提供されています。
多くの工学系大学では、マイクロプロセッサ入門コースで8085プロセッサが使用されています。プリント基板、8085、および関連ハードウェアで構成されたトレーニングキットが様々な企業から提供されています。これらのキットには通常、完全なドキュメントが付属しており、学生は1つのコースでハンダ付けからアセンブリ言語プログラミングまでを習得できます。また、8085のアーキテクチャと命令セットは学生にとって理解しやすいものです。教育用および趣味用の8085ベースのシングルボードコンピュータの共有プロジェクト版については、この記事の外部リンクセクションに記載されています。
8085マイクロプロセッサ向けにはソフトウェアシミュレータが用意されており、グラフィカル環境でオペコードの実行をシミュレーションできる。
CPU は Intel 8080A CPU と 100% ソフトウェア互換性があります。
シミュレーター:
ボード: