i8086
|
Intel 8086 Data 16bit / Address Bus 20bit Cycle 5.0MHz〜10.0MHz (1978) |
基本的なアーキテクチャは「i8080」からの拡張である。
(ただし、直接の互換性はない)
データバスを16bitにし、アドレス変換用「セグメントレジスタ」により20bit(1MB)のアドレス空間を得た。
「セグメント」は、互換性とソフトウェア開発期間の短期化が図れた一方、「64KBの壁」が立ちはだかることとなり、その存在は功罪ともにある。
互換品としてNEC「V30」などがある。
姉妹型:「i8088」
1979年にリリースされた、外部データバスを8bitにした廉価版。
互換品としてNEC「V20」などがある。
後継型:「i80286」
1984年にリリースされた、性能強化版。
6MHz〜12MHzで駆動し、「パイプライン」処理に対応。
組込用に周辺ICをオンダイ(On Die:Dieは半導体チップのことであり、チップ上にあるという意味)に組み込んだ「i80186」もある。
これの外部データバス8bit版が「i80188」である。
後継型:「i386」(参考)
「i80286」で追加された「プロテクトモード」「リアルモード」がリセットなしで変更可能になった。
「プロテクトモード」では「仮想86モード」という複数の「i8086」を仮想動作させるモードが追加された。
汎用レジスタは完全32bitとなる。
その結果アドレス空間は4GB、セグメントも同様に最大4GBとなった。
後継型:「i486」(参考)
新たに設計が見直され、登場した後継プロセッサ。
内部での実行を一部を除いて「ワイヤードロジック」に変更し、高速化を図っている。
後継型:「Pentium」(参考)
本来は「i586」だが、数字のみだと商標登録が不可であった問題があった(386や486に「SX」などが付いている理由はそれである)。
そこで、ギリシャ語で「5」を表す「Penta」とラテン語の「要素」を意味する「ium」から名付けられた。
「スーパースケーラ」を採用している。
この後のシリーズでもこの名前は長く使われていった。
●8086のピン配列
| Vss | 1 | 40 | Vcc | |
| AD14 | 2 | 39 | AD15 | |
| AD13 | 3 | 38 | A16/S3 | |
| AD12 | 4 | 37 | A17/S4 | |
| AD11 | 5 | 36 | A18/S5 | |
| AD10 | 6 | 35 | A19/S6 | |
| AD9 | 7 | 34 | BHE/S7 | |
| AD8 | 8 | 33 | MN/MX | |
| AD7 | 9 | 32 | RD | |
| AD6 | 10 | 31 | Hold | |
| AD5 | 11 | 30 | HLDA | |
| AD4 | 12 | 29 | WR | |
| AD3 | 13 | 28 | M/IQ | |
| AD2 | 14 | 27 | DT/R | |
| AD1 | 15 | 26 | DEN | |
| AD0 | 16 | 25 | ALE | |
| NMI | 17 | 24 | INTA | |
| DNTR | 18 | 23 | TEST | |
| CLK | 19 | 22 | READY | |
| Vss | 20 | 21 | RESET |
●8086の特徴
レジスタセットは以下の構成となっている。
レジスタを連結して使う場合は「R1:R2」と表す。
| 16bit | 8bit | 8bit | 備考 |
|---|---|---|---|
| AX | AL | AH | 汎用レジスタ |
| BX | BL | BH | 汎用レジスタ |
| CX | CL | CH | 汎用レジスタ |
| DX | DL | CH | 汎用レジスタ |
| SI | 汎用レジスタ(インデックスレジスタとして使用可能) | ||
| DI | 汎用レジスタ(インデックスレジスタとして使用可能) | ||
| BP | 汎用レジスタ:ベースポインタ | ||
| SP | 汎用レジスタ:スタックポインタ | ||
| CS | セグメントレジスタ:コードセグメント | ||
| DS | セグメントレジスタ:データセグメント | ||
| ES | セグメントレジスタ:エクストラセグメント | ||
| SS | セグメントレジスタ:スタックセグメント | ||
| IP | 命令ポインタ | ||
| FLAGS | ステータスフラグ |
「FLAGS」で示されるフラグの内容は以下の構成となっている。
| bit | 略号 | フラグ | セットされるケース |
|---|---|---|---|
| 11 | OF | オーバーフロー | MSB(Most Significant Bit:最上位bit)への桁の繰り上がり(Overflow)もしくは桁の繰り下がり(Borrow)発生時 |
| 10 | DF | ディスティネーション | STD命令実行(DF=1のとき、文字列操作はインデックスレジスタがデクリメントされる) |
| 9 | IF | 割込許可 | 外部(ハードウェア)割込許可時 |
| 8 | TF | トラップ | シングルステップモード指定時 |
| 7 | SF | サイン | MSB=1の場合(負数) |
| 6 | ZF | ゼロ | 結果が0の場合 |
| 4 | AF | 補助(AUX)キャリー | 算術演算のbit3/4間(Half)でOverflowもしくはBorrow発生時 |
| 2 | PF | パリティフラグ | 下位8bitの「1」が偶数個の場合 |
| 0 | CF | キャリー | MSBからのOverflowもしくはBorrow発生時 |
●8086の命令
ニーモニック [DEST[,SRC]]
データの流れは「DEST」←「SRC」となる。
オペランドは0〜2個。
オペランドに指定可能なものは以下の通りである。
(特定の即値で指定される場合もある)
| 略号 | 意味 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| R | 汎用レジスタ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| A | 汎用レジスタ「AX」または「AL」 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| RW | 16bit汎用レジスタ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| M | メモリ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| MW | メモリ(WORD:16bit) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ML | メモリ(LONG WORD:32bit) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| RM | レジスタまたはメモリ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| I | 即値(イミディエイト値) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| IB | 8bit即値(イミディエイト値) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| SR | セグメントレジスタ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| LS | ラベル(SHORT) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| LN | ラベル(NEAR) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| LF | ラベル(FAR) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| コール、ジャンプ命令で使用 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| SHORT | SHORT値 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| L | ラベル | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ストリング命令と80x86拡張命令で使用 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| SRC | ソースメモリオペランド(セグメントレジスタのオーバーライドが使用可能) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| DST | デスティネーションメモリオペランド(セグメントレジスタは「ES」に固定) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
命令(ニーモニック)は以下の構成となっている。
●一般命令
| ニーモニック | OP1 | OP2 | 動作 |
|---|---|---|---|
| MOV | A/M, R/RM, R/RM, SR | M/A RM/R I RM | OP2をOP1に格納 |
| XCHG | AX/RW, R, | RW/AX RM | OP1とOP2を入替 |
| LEA | RW, | M | MをRWにロード(読込) |
| LDS | RW, | ML | MLの上位を「DS」、下位をOP1にロード |
| LES | RW, | ML | MLの上位を「ES」、下位をOP1にロード |
| LAHF | - | - | 「FLAGS」下位8bitを「AH」にロード |
| SAHF | - | - | 「FLAGS」下位8bitに「AH」からロード |
| ADD | R/RM, A/RM, | RM/R I | OP1とOP2を加算し、OP1に格納 |
| ADC | R/RM, A/RM, | RM/R I | OP1とOP2とCFを加算し、OP1に格納 |
| SUB | R/RM, A/RM, | RM/R I | OP1からOP2を減算し、OP1に格納 |
| SBB | R/RM, A/RM, | RM/R I | OP1からOP2とCFを減算し、OP1に格納 |
| MUL | RM | - | OP1:通常→「AX」にOP1を符号なし乗算し、「DX:AX」に格納 OP1:8bit→「AL」にOP1を符号なし乗算し、「AX」に格納 |
| IMUL | RM | - | OP1:通常→「AX」にOP1を符号付き乗算し、「DX:AX」に格納 OP1:8bit→「AL」にOP1を符号付き乗算し、「AX」に格納 |
| DIV | RM | - | OP1:通常→「DX:AX」をOP1で符号なし除算し、商を「AX」、余りを「DX」に格納 OP1:8bit→「AX」をOP1で符号なし除算し、商を「AL」、余りを「AH」に格納 |
| IDIV | RM | - | OP1:通常→「DX:AX」をOP1で符号付き除算し、商を「AX」、余りを「DX」に格納 OP1:8bit→「AX」をOP1で符号付き除算し、商を「AL」、余りを「AH」に格納 |
| INC | RW RM | - - | OP1をインクリメント(+1) |
| DEC | RW RM | - - | OP1をデクリメント(-1) |
| AND | R/RM, A/RM, | RM/R I | OP1とOP2の論理積をOP1に格納 |
| OR | R/RM, A/RM, | RM/R I | OP1とOP2の論理和をOP1に格納 |
| XOR | R/RM, A/RM, | RM/R I | OP1とOP2の排他的論理和をOP1に格納 |
| TEST | R/RM, A/RM, | RM/R I | OP1とOP2の論理積を行う(OP1には格納しない=テスト) |
| NEG | RM | - | OP1の2の補数を得る(符号反転) |
| NOT | RM | - | OP1の1の補数を得る(bit反転) |
| CMP | R/RM, A/RM, | RM/R I | OP1からOP2を減算(OP1には格納しない=比較) |
| ROL | RM, | 1/CL | OP1を左ローテート(OP2はカウント) |
| ROR | RM, | 1/CL | OP1を右ローテート(OP2はカウント) |
| RCL | RM, | 1/CL | OP1をCarry付きで左ローテート(OP2はカウント) |
| RCR | RM, | 1/CL | OP1をCarry付きで右ローテート(OP2はカウント) |
| SHL | RM, | 1/CL | OP1を左bitシフト(OP2はカウント) |
| SHR | RM, | 1/CL | OP1を右bitシフト(OP2はカウント) |
| SAL | RM, | 1/CL | OP1をMSBは保存した状態で左bitシフト(OP2はカウント) |
| SAR | RM, | 1/CL | OP1をMSBは保存した状態で右bitシフト(OP2はカウント) |
| AAA | - | - | 加算結果の「AL」をUnpack BCD補正(Carry時は「AH」をインクリメント) |
| AAS | - | - | 減算結果の「AL」をUnpack BCD補正(Borrow時は「AH」をデクリメント) |
| AAM | - | - | 乗算結果の「AL」をUnpack BCD補正し、結果を「AX」に格納 |
| DAA | - | - | 加算結果の「AL」をPack BCD補正し、結果を「AX」に格納 |
| DAS | - | - | 減算結果の「AL」をPack BCD補正し、結果を「AX」に格納 |
| AAD | - | - | 「AX」を2進数補正 |
| CWD | - | - | 「AL」のMSBを「AH」の全bitにコピー(符号拡張) |
| CBW | - | - | 「AX」のMSBを「DX」の全bitにコピー(符号拡張) |
| XLAT | -/M | - | 「BX」+「AL」を「AL」に格納(テーブル変換)、「SR」使用時はダミーOPとしてMを使用 |
| CLC | - | - | CFをクリア(0にセット) |
| CLD | - | - | DFをクリア |
| CLI | - | - | IFをクリア |
| STC | - | - | CFをセット(1にセット) |
| STD | - | - | DFをセット |
| STI | - | - | IFをセット |
| CMI | - | - | CFを反転 |
| PUSH | RW/M/SR | - | 「SP」→-2、「SS;[SP]」にOP1を格納(スタックのプッシュ) |
| PUSHF | - | - | フラグレジスタをスタックへプッシュ |
| POP | RW/M/SR | - | 「SP」→+2、「SS;[SP]」をOP1へ格納(スタックのポップ) |
| POPF | - | - | フラグレジスタへスタックをポップ |
| IN | A, | IB/DX | I/Oポートから「AL/AX」に入力 |
| OUT | IB/DX, | A | I/Oポートに「AL/AX」を出力 |
| ESC | I, | RM | 数値演算コプロセッサ命令の簡略形(OP1はコプロ命令を表す6bit値) |
●ストリング命令
| ニーモニック> | OP1 | OP2 | 動作 | |
|---|---|---|---|---|
| LODS | SRC | - | 「AX(AL)」に「[SI]」をロード 「SI」を更新 | |
| LODSB | SRC | - | LODSのbyte版 | |
| LODSW | SRC | - | LODSのword版 | |
| STOS | DEST | - | 「AX(AL)」を「ES:[DI]」をストア 「DI」を更新 | |
| STOSB | DEST | - | STOSのbyte版 | |
| STOSW | DEST | - | STOSのword版 | |
| MOVS | DEST, | SRC | 「[SI]」を「ES:[DI] 」に転送 「SI」「DI」を更新 | |
| MOVSB | DEST, | SRC | MOVSのbyte版 | |
| MOVSW | DEST, | SRC | MOVSのword版 | |
| CMPS | SRC, | DEST | 「SI」と「ES:[DI]」を比較 「SI」「DI」を更新 | |
| CMPSB | SRC, | DEST | CMPSのbyte版 | |
| CMPSW | SRC, | DEST | CMPSのword版 | |
| SCAS | DEST | - | 「AX(AL)」と「ES:[DI] 」を比較 「DI」を更新 | |
| SCASB | DEST | - | SCASのbyte版 | |
| SCASW | DEST | - | SCASのword版 |
●プリフィックス命令
| ニーモニック | OP1 | OP2 | 動作 |
|---|---|---|---|
| LOCK | - | - | 次命令の実行時にバスロック信号を発生(マルチプロセッサ対応) |
| REP | - | - | 「CX」≠0の時、「CX」をデクリメントし後続のストリング命令を実行 「CX」≠0 かつZF=1の時、「CX」=0になるまで繰り返す(「CX」=0の時は実行されない) |
| REPE | - | - | REPと同じ |
| REPZ | - | - | REPと同じ |
| REPNE | - | - | REPの「ZF=0」条件違い |
| REPNZ | - | - | REPNEと同じ |
●ジャンプ命令
| ニーモニック | OP1 | OP2 | 動作 |
|---|---|---|---|
| JMP | SHORT L LN LF RW MW ML | - - - - - - - | 8bit自己相対ジャンプ 16bit/32bit絶対間接ジャンプ 16bit自己相対ジャンプ 32bit絶対ジャンプ 16bit/32bitレジスタ間接ジャンプ 16bitメモリ間接ジャンプ 32bitメモリ間接ジャンプ |
| JA | SHORT | - | 「CF」「ZF」の論理和が0のとき分岐(>:Unsigned) |
| JNBE | L | - | 「CF」「ZF」の論理和が0のとき分岐(>:Unsigned) |
| JAE | SHORT | - | 「CF」が0のとき分岐(≧:Unsigned) |
| JNB | L | - | 「CF」が0のとき分岐(≧:Unsigned) |
| JB | SHORT | - | 「CF」が1のとき分岐(<:Unsigned) |
| JNAE | L | - | 「CF」が1のとき分岐(<:Unsigned) |
| JCXZ | SHORT/L | - | 「CX」が0のとき分岐 |
| JG | SHORT | - | 「SF」「OF」の排他的論理和と「ZF」の論理和が0のとき分岐(>:Signed) |
| JNLE | L | - | 「SF」「OF」の排他的論理和と「ZF」の論理和が0のとき分岐(>:Signed) |
| JGE | SHORT | - | 「SF」「OF」の排他的論理和が0のとき分岐(≧:Signed) |
| JNL | L | - | 「SF」「OF」の排他的論理和が0のとき分岐(≧:Signed) |
| JL | SHORT | - | 「SF」「OF」の排他的論理和が1のとき分岐(<:Signed) |
| JNGE | L | - | 「SF」「OF」の排他的論理和が1のとき分岐(<:Signed) |
| JLE | SHORT | - | 「SF」「OF」の排他的論理和と「ZF」の論理和が1のとき分岐(≦:Signed) |
| JNG | L | - | 「SF」「OF」の排他的論理和と「ZF」の論理和が1のとき分岐(≦:Signed) |
| JNO | SHORT/L | - | 「OF」が0のとき分岐 |
| JO | SHORT/L | - | 「OF」が1のとき分岐 |
| JNS | SHORT/L | - | 「SF」が0のとき分岐(正数) |
| JS | SHORT/L | - | 「SF」が1のとき分岐(負数) |
| JE | SHORT | - | 「ZF」が1のとき分岐(=0) |
| JZ | L | - | 「ZF」が1のとき分岐(=0) |
| JNE | SHORT | - | 「ZF」が0のとき分岐(≠0) |
| JNZ | L | - | 「ZF」が0のとき分岐(≠0) |
| JNP | SHORT | - | 「PF」が0のとき分岐 |
| JPO | L | - | 「PF」が0のとき分岐 |
| JP | SHORT | - | 「PF」が1のとき分岐 |
| JPE | L | - | 「PF」が1のとき分岐 |
| LOOP | SHORT/L | - | 「CX」をデクリメントし、「CX」≠0なら分岐 |
| LOOPE | SHORT | - | 「CX」をデクリメントし、「CX」≠0かつ「ZF」≠0なら分岐 |
| LOOPZ | L | - | 「CX」をデクリメントし、「CX」≠0かつ「ZF」≠0なら分岐 |
| LOOPNE | SHORT | - | 「CX」をデクリメントし、「CX」≠0かつ「ZF」=0なら分岐 |
| LOOPNZ | L | - | 「CX」をデクリメントし、「CX」≠0かつ「ZF」=0なら分岐 |
●コール・リターン命令
| ニーモニック | OP1 | OP2 | 動作 |
|---|---|---|---|
| CALL | LN LF RW MW ML | - - - - - | 16bit自己相対コール 32bit絶対コール 16bit/32bitレジスタ間接コール 16bitメモリ間接コール 32bitメモリ間接コール |
| RET | -/I | - | サブルーチンからのリターン |
| RETN | -/I | - | NEARサブルーチンからのリターン |
| RETF | -/I | - | FARサブルーチンからのリターン |
| IRET | - | - | 割込先からのリターン(フラグレジスタを復元) |
●その他命令
| ニーモニック | OP1 | OP2 | 動作 |
|---|---|---|---|
| NOP | - | - | 何もしない |
| WAIT | - | - | WAIT状態にする |
| HLT | - | - | HALT状態にする |
| INT | 3/IB | - | ソフトウェア割込 |
| INTO | - | - | OFセット時にソフトウェア割込4を発生 |
●80x86拡張命令
| ニーモニック | OP1 | OP2 | 動作 |
|---|---|---|---|
| PUSHA | - | - | 「DI,SI,BP,SP,BX,DX,CX,AX」を同順でプッシュ |
| POPA | - | - | 「DI,SI,BP,SP,BX,DX,CX,AX」を同順でポップ |
| ENTER | I, | IB | スタックフレームの作成 「BP」をプッシュ OP2の分「[BP]」より上のフレームポインタをプッシュ 「BP」に「BP」プッシュ時の「SP」を格納 「SP」からOP1を減算 |
| LEAVE | - | - | スタックフレームの解放 「SP」に「BP」を格納 「BP」をポップ |
| INS | DEST, | DX | 「DX」で指定したI/Oポートから「ES:[DI]」に入力 「DI」を更新 |
| INSB | DEST, | DX | INSのbyte版 |
| INSW | DEST, | DX | INSのword版 |
| OUTS | DX, | DEST | 「DX」に指定されたI/Oポートへ「[SI]」から出力 「SI」を更新 |
| OUTSB | DX, | DEST | OUTSのbyte版 |
| OUTSW | DX, | DEST | OUTSのword版 |