8086
 
   レジスタセット
 
図1:レジスタセット
FIG1.jpg(21218 byte)

8086のレジスタセットは専用レジスタ形式を採っています。 歴史的にはインテルの最初の16ビットのプロセッサです。
その前には8ビットプロセッサの8085がありますが、これは8080と同じレジスタセットのプロセッサでした。
8080はレジスタペアが3本ありましたが、8086のレジスタは AX, BX, CX, DX の4本で上下を8ビットレジスタとして使えますから8080を少し拡張した程度になっています。
これはインテルの8ビットプロセッサのユーザのアセンブラプログラムの変更を容易にすることを考慮したと思われます。
8086で特徴的なのは64Kバイト以上の連続したプログラムやデータを簡単に扱えないことがあります。 8085と同じ40ピンのパッケージに収めることを最優先にしたためにメモリ空間を狭めたことが原因と推測されます。
8086はメモリ空間を3種類の専用領域に分割して CS, DS, SS, ES の4本のセグメントレジスタに登録します。
BP, SI, DI の3本のインデックスレジスタを持っていますがセグメント内の相対的な位置を示します、 プログラムカウンタの IP やスタックポインタの SP も同様です。

 
   フラグレジスタ

8080/8085 のフラグレジスタを上位に8ビット拡張するかたちになっています。

 
図2:フラグレジスタ
FIG2.jpg(17687 byte)

フラグは命令に起因して1か0になりますので詳しくは命令の項を参照してください 概要は次のとおりです。

  • キャリー
    演算によってレジスタの最上位ビットからの桁上げがあった場合に1になります。 またレジスタのビット移動に本フラグを介在させる命令があります。
  • パリティ
    演算によってレジスタの1になっているビットが偶数個である場合に1になります。
  • 補助キャリー
    レジスタのビット3からビット4への桁上げがあったとき1になります。 BCDの演算を行ったときの10進補正に使われます。
  • ゼロ
    演算によってレジスタが0になったとき1になります。
  • 符号
    演算によってレジスタの最上位ビットが1のとき1になります。 正負をもつ数値の符号は最上位のビットに設定されています。
  • トラップ
    本フラグを1にすると1命令が終了する毎に割り込みが発生します。
  • 割り込みイネーブル
    本フラグを1にすると制御可能な割り込みを有効にします。
  • 方向
    命令を連続的に実行させるときに自動的にレジスタのSIやDIを増減させる場合があり、その指標になります。
  • オーバーフロー
    演算で正負をもつ数値が正の範囲または負の範囲を超えたとき1になります。
 
   セグメント

8086は64Kバイト以上のメモリ空間を扱えますが全レジスタが16ビットなので、これで直接に 指定することはできません。
メモリ空間の操作にはセグメントレジスタが関わりますが、これも16ビットです。
8086ではセグメントレジスタは16ビットですがメモリ空間に反映させるときは値を16倍にします。 これによって8086のメモリ空間は64Kバイトの16倍で1024Kバイトになります。
メモリ空間は1024Kバイトありますが64Kバイト以上のプログラムでは、その境界でセグメントレジスタを 変更しなければなりません。 データも64Kバイト以上の操作では、その境界でセグメントレジスタを変更しなければなりません。 そうしなければ64Kバイトの先頭に戻ってしまいます。
アセンブリ言語で全部を作っていればさして問題ではないのですがコンパイラを使う場合には上記の問題 をコンパイラがどのように処理しているかにかかっておりコンパイラ次第ということになります。
C言語でプログラムを書く場合にも8086特有の問題を気にしなければならないという弱点になっています。
80386では IP, SP, BP, SI, DI が32ビット化されてプロセッサの持つ全メモリ空間を指定できるようになりました。
8080では HL レジスタで16ビットのメモリ空間を操作していたので8086でも同じことをする必要があったということですが 、それなら20ビットのレジスタを持つことになります。 モトローラは8ビットのプロセッサの次に内部32ビットの68000を出してきましたがバスインターフェースは アドレスバスが24ビットでデータバスが16ビットです。 これらの中途半端な状態が解消したのは内部も外部も32ビット化した80386や68020になってからでした。
セグメントの問題を抱えた8086ですがパッケージは8080と同じ40ピンでした68000にはセグメントのような問題はなかった のですがパッケージは64ピンでした今ではPLCCでもフラットパッケージでも64ピンなら小さなICですが当時は 2.54mmピッチのDIPで巨大という印象を持ちました。
8080でやっていたことが8086ではできなかったことがセグメントの由来です。

 
   セグメントレジスタ

今までの8ビットのプロセッサではなかったことですが1Mバイトのメモリ空間を64Kバイトに分割して使います。 今までになかったことと言うのはメモリ空間の大きさのことではなくメモリ空間が論理的メモリ空間と物理的 メモリ空間の2本立てになったことです。
例えば論理的メモリ空間の番地の 1234H は 物理的メモリ空間の 11234H でもあるし 21234H でもあるし 13574H でもあり得ます。 それぞれセグメントレジスタが 1000H2000H1234H の場合です。
8080 の場合ではプログラムが書かれたときに指定されたメモリ位置で実行するしかなかったのです 、100Hとプログラムの開始番地が指定されていたら実行時には100Hに配置してから実行するしか ありませんでした。
8086 では実行時のセグメントレジスタの値によって物理的メモリ空間のどこに配置されていても構いません。 「実行時」にと言うところが重要な点です。
他にも重要な点は 論理的メモリ空間であれば複数のプログラムが同じ番地を異なった目的で使用しても支障がないことです 物理的メモリ空間によって 部品としての実メモリ の同じ位置にも違う位置にもセグメントレジスタの値で操作できるからです。

プロセッサで動いているプログラムを2種類に分ける構造が導入されていると思います。 すなわち論理的メモリ空間の中だけで動くプログラムと物理的メモリ空間も操作しながら動くプログラム の2種類です。 ユーザープログラムとシステムプログラムの関係、アプリーケーションとオペレーティングシステムの関係 に分離されていきます。

次にメモリ空間を機能的に分ける構造が導入されています、 8080 のときにもアセンブリ言語ではプログラムを書くときにコード領域やデータ領域を定義する文が用意されて いて使っていました。 8086 では論理的メモリ空間を コード を置くところと データ を置くところと スタック を置くところに分けることができます。 これらは3種類のセグメントレジスタを使って実現されています。 すなわちプログラムカウンタの IP は暗黙的にコード用のセグメントレジスタで番地を指します。 スタックポインタの SP は暗黙的にスタック用のセグメントレジスタで番地を指します。 その他のメモリ操作ではは暗黙的にデータ用のセグメントレジスタで番地を指します。 コードスタックデータ が別々の論理的メモリ空間に配置されるようになりました。


8086で方向づけを行い80286で大枠を作り80386で実用化させて以降のプロセッサで完成発展させていったと言うことになるでしょう。 大型計算機で行っていたことをマイクロプロセッサに導入する端緒を作ったことになると思います。
大型計算機の技術は高価な装置なのでなるべく大勢の人間で使用することで費用対効果の単価をさげることでたくさん購入してもらいたいと 言うのが発端だと思います。
コンピュータの開発も速度は遅くてもいいから望みの機能を一から作らなくても部分的な変更で得られる装置 と言う事が主眼だったと思います。 部分的な変更とは仕事の組み合わせと言うことであり仕事とはコンピュータの命令であり組み合わせるとは時間軸上に積み重ねると言うことです。 遅くてもいいけど複雑な仕事ができる能力をもつ機械と言うのがコンピュータの本質です。
マイクロコンピュータは大型計算機と違って最初から大量に購入されないと採算の合わない半導体メーカの取り組んでいる 商品なのですがコンピュータの苦手な速度の向上や大規模化のための集積度の向上など半導体技術の進歩は著しいものがあった と思いますがマイクロコンピュータの実現するコンピュータ技術の方向性は大型計算機と違った方向を目指したほうがよかったのではないかと思う 今日この頃です。

 
   レジスタCS

本レジスタは コードセグメントレジスタ と呼び16倍されてレジスタ IP に加算されて命令を読み出す番地になります。


 
   レジスタDS

本レジスタは データセグメントレジスタ と呼び暗黙的に データ を操作する番地に16倍されて加算されます。 レジスタ SI の間接番地指定は暗黙的に本レジスタが当てられます。


 
   レジスタSS

本レジスタは スタックセグメントレジスタ と呼び暗黙的に スタック を操作する番地に16倍されて加算されます。 レジスタ BP の間接番地指定は暗黙的に本レジスタが当てられます。


 
   レジスタES

本レジスタは エクストラセグメントレジスタ と呼び一部の命令で暗黙的に データ を操作する番地に16倍されて加算されます。 レジスタ DI の間接番地指定は暗黙的に本レジスタが当てられます。


 
   初期化

初期化で値の確定するのは下記のレジスタです。

  • IP : 0000H
  • CS : FFFFH
  • DS : 0000H
  • SS : 0000H
  • ES : 0000H

プログラムの読み取りの開始番地は FFFF0H からになります。

 
   メモリ操作

8ビットのプロセッサが8ビットのデータバスでメモリを操作するように 16ビットのプロセッサが16ビットのデータバスでメモリを操作すれば8ビットと同じ考え方ですが 8086では8ビットデータも扱えるようになっていますのでプロセッサとメモリの関係が複雑になっています。
例えば8ビットのプロセッサの 8080 では0〜3の4番地があれば4バイトのデータを操作できるように 16ビットのプロセッサでも0〜3の4番地があれば4ワードのデータが操作できるようにしてよかった訳ですが 実際には 8086 では16ビットのデータバスにひとつの番地を割り付けるのではなく上下の8ビットでふたつの番地を割り付けています。
MOV 1234H,AX は1234H番地への書き込み操作が1回ですが MOV 1235H,AX の場合は 1234H 番地で 上位 8ビットにレジスタ AX下位 8ビットを書き込み、 1236H 番地で 下位 8ビットにレジスタ AX上位 8ビットの書き込みで書き込み操作が2回になります。
これらはプログラムの実行速度に影響がありますがプログラムを書く場合に意識しなくても 8086 が暗黙的に実行してくれます。 しかし奇数番地から2バイト命令が長く配置されている場合は偶数番地から配置されている場合よりも2倍のメモリ操作を 実施していることになります。 8086 を論理設計する場合はプログラムでもデータでもメモリ操作にこのことを留意する必要があります。 Pentium32 ビットのプロセッサですがデータバスは 64 ビットになっているので 32 ビットの境界をまたぐデータでも 1回 のメモリ操作で済ませるようになっています。 8086 を新規に論理設計する場合にはデータバスを32ビットにするとメモリ操作の論理を簡素化できて速度の向上もできると思います。


新規にプロセッサを設計する場合には操作するデータサイズの種類を少なくして プロセッサの論理を簡素にして速度を向上するのに16ビットなら16ビット以下のデータを扱わないようにするのは8ビットのプロセッサ が4ビットのレジスタを持たないように考慮されてよいと思います。

 
   命令

8086の命令は可変長の命令形態をとっており1バイトから6バイトの長さの命令があります。 8086の命令はメモリ番地の指定方法が豊富なCISCのプロセッサの典型で大枠としての基本構造はあるものの 複雑で命令解析の論理設計は難解です、インテルのチップはマイクロコードで命令解析をしていると思われ ます。
RISCのプロセッサでは命令数も少なく固定長の命令でメモリ番地の指定方法も必要最小限にとどめています。 このことが命令構造の単純化に大きく貢献しています命令解析の論理設計も容易です。

 
   構造

命令の構造を MOV 命令の例で概観します。

  • 命令種別  MOV 命令は11種類がありますが 命令種別 の値が違うものや 命令種別 に当てられているビット数が異なるものがあります。
  • データ方向  即値をレジスタやメモリに記憶する命令の場合は不用なのでこのビットには他の機能が配置されて命令構造が変わっているものがあります。
  • 16ビット  データの大きさをバイトかワードで示すビットですが同じ MOV 命令の中でも位置が違っているものやこのビットを持たないものもあります。 
  • レジスタモード  データ操作の種類を示しています例の場合はレジスタ同士なのでレジスタモードです他の場合はメモリモードですが 閾値 しきいち の大きさやありなしの種類で分かれます。 このバイトを必要としない命令には付けられません。

 
図3: MOV R16d,R16s
FIG3.jpg(11488 byte)

8086の命令の標準的な構造は 図3 のようなものでこの後に 閾値 しきいち や即値や番地が続く場合もあります。


8086には先にも述べたように命令構造の厳格な一貫性はありませんがほぼ 図4 のようになっています。 これはメモリかレジスタの2個のデータを操作する命令の情報を表現する構造です、ほかに 番地を即値で表したりデータを即値で表す場合にはバイトが追加されます。 また簡単な命令では2バイト目が無いものや番地やデータの即値になっているものもあります。 図4regopcode の拡張に使っている命令もあります。

 
図4: 基本命令構造
FIG4.jpg(51365 byte)


命令の解析は命令語を全部読み取らないとできませんが8086は可変長命令なので命令語を 全部読み取るためには命令語の長さを知る必要があります。 8086では簡単な命令では1バイト目で標準的な命令では2バイト目まで読めば命令長が分かります。

 
図9: セグメントレジスタ割り当て
FIG9.jpg(12185 byte)
 
   MOV命令
 
   MOV AX ,mem

命令の第一バイトで命令長を特定できます、第二、三バイトはメモリを指定する番地です。 番地はセグメントレジスタ DS の値を16倍したものと加算して有効番地になります。 セグメントレジスタ DS 以外を使う場合はセグメントを指定する命令を本命令の直前に実行すると セグメントレジスタを変更できます。

 
図5: MOV AX ,mem
FIG5.jpg(10658 byte)

本命令ではフラグレジスタは変化しません。
レジスタ AX は他のレジスタと同機能の命令よりも本命令のように特別に短い命令符が割り当てられている場合があります。

 
図6A: MOV AX ,mem (奇数)
FIG6A.jpg(19169 byte)

 
図6B: MOV AX ,mem (偶数)
FIG6B.jpg(19348 byte)

 
   MOV AL ,mem

命令の第一バイトで命令長を特定できます、第二、三バイトはメモリを指定する番地です。 番地はセグメントレジスタ DS の値を16倍したものと加算して有効番地になります。 セグメントレジスタ DS 以外を使う場合はセグメントを指定する命令を本命令の直前に実行すると セグメントレジスタを変更できます。

 
図7: MOV AL ,mem
FIG7.jpg(10584 byte)

本命令ではフラグレジスタは変化しません。
レジスタ AL は他のレジスタと同機能の命令よりも本命令のように特別に短い命令符が割り当てられている場合があります。

 
図8A: MOV AL ,mem (奇数)
FIG8.jpg(18801 byte)

 
図8B: MOV AL ,mem (偶数)
FIG9.jpg(21579 byte)

 
   MOV mem ,AX

命令の第一バイトで命令長を特定できます、第二、三バイトはメモリを指定する番地です。 番地はセグメントレジスタ DS の値を16倍したものと加算して有効番地になります。 セグメントレジスタ DS 以外を使う場合はセグメントを指定する命令を本命令の直前に実行すると セグメントレジスタを変更できます。

 
図10: MOV mem ,AX
FIG10.jpg(10379 byte)

本命令ではフラグレジスタは変化しません。
レジスタ AX は他のレジスタと同機能の命令よりも本命令のように特別に短い命令符が割り当てられている場合があります。

 
図11A: MOV mem ,AX (奇数)
FIG11A.JPG

 
図11B: MOV mem ,AX (偶数)
FIG11B.JPG 19170

 
   MOV mem ,AL

命令の第一バイトで命令長を特定できます、第二、三バイトはメモリを指定する番地です。 番地はセグメントレジスタ DS の値を16倍したものと加算して有効番地になります。 セグメントレジスタ DS 以外を使う場合はセグメントを指定する命令を本命令の直前に実行すると セグメントレジスタを変更できます。

 
図12: MOV mem ,AL
FIG12.jpg(10253 byte)

本命令ではフラグレジスタは変化しません。
レジスタ AL は他のレジスタと同機能の命令よりも本命令のように特別に短い命令符が割り当てられている場合があります。

 
図13A: MOV mem ,AL (奇数)
FIG13A.jpg(20559 byte)

 
図13B: MOV mem ,AL (偶数)
FIG13B.jpg(20451 byte)

 
   MOV R16d,R16s

図4 の基本命令構造の命令です。

 
図14: MOV R16d,R16s
FIG14.jpg(4938 byte)


本命令ではフラグレジスタは変化しません。

 
図15A: MOV R16d,AX
FIG15A.jpg(21871 byte)


 
図15B: MOV R16d,BX
FIG15B.jpg(24350 byte)


 
図15C: MOV R16d,CX
FIG15C.jpg(23030 byte)


 
図15D: MOV R16d,DX
FIG15D.jpg(23369 byte)


 
図15E: MOV R16d,SI
FIG15E.jpg(24016 byte)


 
図15F: MOV R16d,DI
FIG15F.jpg(23751 byte)


 
図15G: MOV R16d,BP
FIG15G.jpg(24139 byte)


 
図15H: MOV R16d,SP
FIG15H.jpg(24468 byte)


 
   MOV R8d,R8s

図4 の基本命令構造の命令です。

 
図16: MOV R8d,R8s
FIG16.jpg(4853 byte)


本命令ではフラグレジスタは変化しません。

 
図17A: MOV R8d,AL
FIG17.jpg(21244 byte)


 
図17B: MOV R8d,AH
FIG17B.jpg(22623 byte)


 
図17C: MOV R8d,BL
FIG17C.jpg(23225 byte)


 
図17D: MOV R8d,BH
FIG17D.jpg(22669 byte)


 
図17E: MOV R8d,CL
FIG17E.jpg(23167 byte)


 
図17F: MOV R8d,CH
FIG17F.jpg(24075 byte)


 
図17G: MOV R8d,DL
FIG17G.jpg(22788 byte)


 
図17H: MOV R8d,DH
FIG17H.jpg(22746 byte)


 
   MOV R16d,mem

図4 の基本命令構造に番地を指定するための2バイトが追加されています。

 
図18: MOV R16d,mem
FIG18.jpg(9296 byte)


本命令ではフラグレジスタは変化しません。

 
図19A: MOV R16d,mem (奇数)
FIG19A.jpg(41746 byte)
続き


 
図19B: MOV R16d,mem (偶数)
FIG19B.jpg(41879 byte)
続き


 
   MOV R16d,[BX]

図4 の基本命令構造の命令です。

 
図21: MOV R16d,[BX]
FIG21.jpg(6186 byte)


本命令ではフラグレジスタは変化しません。

 
図20A: MOV R16d,[BX] (奇数)
FIG20A.jpg(35516 byte)


 
図20B: MOV R16d,[BX] (偶数)
FIG20B.jpg(36148 byte)


 
   MOV R16d,[SI]

図4 の基本命令構造の命令です。

 
図22: MOV R16d,[SI]
FIG22.jpg(5233 byte)


本命令ではフラグレジスタは変化しません。

 
図23A: MOV R16d,[SI] (奇数)
FIG23A.jpg(36357 byte)


 
図23B: MOV R16d,[SI] (偶数)
FIG23B.jpg(35053 byte)


 
   MOV R16d,[DI]

図4 の基本命令構造の命令です。

 
図24: MOV R16d,[DI]
FIG24.jpg(5249 byte)


本命令ではフラグレジスタは変化しません。

 
図25A: MOV R16d,[DI] (奇数)
FIG25A.jpg(36027 byte)


 
図25B: MOV R16d,[DI] (偶数)
FIG25B.jpg(36808 byte)


 
   MOV R16d,[BX+SI]

図4 の基本命令構造の命令です。

 
図26: MOV R16d,[BX+SI]
FIG26.jpg(4650 byte)


本命令ではフラグレジスタは変化しません。

 
図27A: MOV R16d,[BX+SI] (奇数)
FIG27A.jpg(34082 byte)


 
図27B: MOV R16d,[BX+SI] (偶数)
FIG27B.jpg(36718 byte)


 
   MOV R16d,[BX+DI]

図4 の基本命令構造の命令です。

 
図28: MOV R16d,[BX+DI]
FIG28.jpg(4946 byte)


本命令ではフラグレジスタは変化しません。

 
図29A: MOV R16d,[BX+DI] (奇数)
FIG29A.jpg(32269 byte)


 
図29B: MOV R16d,[BX+DI] (偶数)
FIG29B.jpg(33042 byte)


 
   MOV R16d,[BP+SI]

図4 の基本命令構造の命令です。

 
図30: MOV R16d,[BP+SI]
FIG30.jpg(4778 byte)


本命令ではフラグレジスタは変化しません。

 
図31A: MOV R16d,[BP+SI] (奇数)
FIG31A.jpg(33166 byte)


 
図31B: MOV R16d,[BP+SI] (偶数)
FIG31B.jpg(35026 byte)


 
   MOV R16d,[BP+DI]

図4 の基本命令構造の命令です。

 
図32: MOV R16d,[BP+DI]
FIG32.jpg(4610 byte)


本命令ではフラグレジスタは変化しません。

 
図33A: MOV R16d,[BP+DI] (奇数)
FIG33A.jpg(34060 byte)


 
図33B: MOV R16d,[BP+DI] (偶数)
FIG33B.jpg(34835 byte)


 
   MOV R16d,[SI+d8]

図4 の基本命令構造の命令です。 d8 を指定するための1バイトが追加されています。

 
図34: MOV R16d,[SI+d8]
FIG34.jpg(6093 byte)


本命令ではフラグレジスタは変化しません。

 
図35A: MOV R16d,[SI+d8] (奇数)
FIG35A.jpg(34322 byte)


 
図35B: MOV R16d,[SI+d8] (偶数)
FIG35B.jpg(34900 byte)


 
   MOV R16d,[DI+d8]

図4 の基本命令構造の命令です。 d8 を指定するための1バイトが追加されています。

 
図36: MOV R16d,[DI+d8]
FIG36.jpg(6252 byte)


本命令ではフラグレジスタは変化しません。

 
図37A: MOV R16d,[DI+d8] (奇数)
FIG37A.jpg(35356 byte)


 
図37B: MOV R16d,[DI+d8] (偶数)
FIG37B.jpg(34656 byte)


 
   MOV R16d,[BX+d8]

図4 の基本命令構造の命令です。 d8 を指定するための1バイトが追加されています。

 
図38: MOV R16d,[BX+d8]
FIG38.jpg(6249 byte)


本命令ではフラグレジスタは変化しません。

 
図39A: MOV R16d,[BX+d8] (奇数)
FIG39A.jpg(35455 byte)


 
図39B: MOV R16d,[BX+d8] (偶数)
FIG39B.jpg(34969 byte)


 
   MOV R16d,[BP+d8]

図4 の基本命令構造の命令です。 d8 を指定するための1バイトが追加されています。

 
図40: MOV R16d,[BP+d8]
FIG40.jpg(5999 byte)


本命令ではフラグレジスタは変化しません。

 
図41A: MOV R16d,[BP+d8] (奇数)
FIG41A.jpg(34867 byte)


 
図41B: MOV R16d,[BP+d8] (偶数)
FIG41B.jpg(36304 byte)


 
   MOV R16d,[BX+SI+d8]

図4 の基本命令構造の命令です。 d8 を指定するための1バイトが追加されています。

 
図42: MOV R16d,[BX+SI+d8]
FIG42.jpg(6291 byte)


本命令ではフラグレジスタは変化しません。

 
図43A: MOV R16d,[BX+SI+d8] (奇数)
FIG43A.jpg(37861 byte)


 
図43B: MOV R16d,[BX+SI+d8] (偶数)
FIG43B.jpg(37880 byte)


 
   MOV R16d,[BX+DI+d8]

図4 の基本命令構造の命令です。 d8 を指定するための1バイトが追加されています。

 
図44: MOV R16d,[BX+DI+d8]
FIG44.jpg(6547 byte)


本命令ではフラグレジスタは変化しません。

 
図45A: MOV R16d,[BX+DI+d8] (奇数)
FIG45A.jpg(37801 byte)


 
図45B: MOV R16d,[BX+DI+d8] (偶数)
FIG45B.jpg(37882 byte)


 
   MOV R16d,[BP+SI+d8]

図4 の基本命令構造の命令です。 d8 を指定するための1バイトが追加されています。

 
図46: MOV R16d,[BP+SI+d8]
FIG46.jpg(6294 byte)


本命令ではフラグレジスタは変化しません。

 
図47A: MOV R16d,[BP+SI+d8] (奇数)
FIG47A.jpg(38108 byte)


 
図47B: MOV R16d,[BP+SI+d8] (偶数)
FIG47B.jpg(36366 byte)


 
   MOV R16d,[BP+DI+d8]

図4 の基本命令構造の命令です。 d8 を指定するための1バイトが追加されています。

 
図48: MOV R16d,[BP+DI+d8]
FIG48.jpg(6033 byte)


本命令ではフラグレジスタは変化しません。

 
図49A: MOV R16d,[BP+DI+d8] (奇数)
FIG49A.jpg(39191 byte)


 
図49B: MOV R16d,[BP+DI+d8] (偶数)
FIG49B.jpg(37756 byte)


 
   MOV R16d,[SI+d16]

図4 の基本命令構造の命令です。 d16 を指定するための2バイトが追加されています。

 
図50: MOV R16d,[SI+d16]
FIG50.jpg(7991 byte)


本命令ではフラグレジスタは変化しません。

 
図51A: MOV R16d,[SI+d16] (奇数)
FIG51A.jpg(39778 byte)


 
図51B: MOV R16d,[SI+d16] (偶数)
FIG51B.jpg(36969 byte)


 
   MOV R16d,[DI+d16]

図4 の基本命令構造の命令です。 d16 を指定するための2バイトが追加されています。

 
図52: MOV R16d,[DI+d16]
FIG52.jpg(8791 byte)


本命令ではフラグレジスタは変化しません。

 
図53A: MOV R16d,[DI+d16] (奇数)
FIG53A.jpg(39403 byte)


 
図53B: MOV R16d,[DI+d16] (偶数)
FIG53B.jpg(38561 byte)


 
   MOV R16d,[BP+d16]

図4 の基本命令構造の命令です。 d16 を指定するための2バイトが追加されています。

 
図54: MOV R16d,[BP+d16]
FIG54.jpg(8788 byte)


本命令ではフラグレジスタは変化しません。

 
図55A: MOV R16d,[BP+d16] (奇数)
FIG55A.jpg(40408 byte)


 
図55B: MOV R16d,[BP+d16] (偶数)
FIG55B.jpg(39168 byte)


 
   MOV R16d,[BX+d16]

図4 の基本命令構造の命令です。 d16 を指定するための2バイトが追加されています。

 
図56: MOV R16d,[BX+d16]
FIG56.jpg(9021 byte)


本命令ではフラグレジスタは変化しません。

 
図57A: MOV R16d,[BX+d16] (奇数)
FIG57A.jpg(39783 byte)


 
図57B: MOV R16d,[BX+d16] (偶数)
FIG57B.jpg(38770 byte)


 
   MOV R16d,[BX+SI+d16]

図4 の基本命令構造の命令です。 d16 を指定するための2バイトが追加されています。

 
図58: MOV R16d,[BX+SI+d16]
FIG58.jpg(8864 byte)


本命令ではフラグレジスタは変化しません。

 
図59A: MOV R16d,[BX+SI+d16] (奇数)
FIG59A.jpg(38065 byte)


 
図59B: MOV R16d,[BX+SI+d16] (偶数)
FIG59B.jpg(38286 byte)


 
   MOV R16d,[BX+DI+d16]

図4 の基本命令構造の命令です。 d16 を指定するための2バイトが追加されています。

 
図60: MOV R16d,[BX+DI+d16]
FIG60.jpg(8037 byte)


本命令ではフラグレジスタは変化しません。

 
図61A: MOV R16d,[BX+DI+d16] (奇数)
FIG61A.jpg(38368 byte)


 
図61B: MOV R16d,[BX+DI+d16] (偶数)
FIG61B.jpg(40570 byte)


 
   MOV R16d,[BP+SI+d16]

図4 の基本命令構造の命令です。 d16 を指定するための2バイトが追加されています。

 
図62: MOV R16d,[BP+SI+d16]
FIG62.jpg(8883 byte)


本命令ではフラグレジスタは変化しません。

 
図63A: MOV R16d,[BP+SI+d16] (奇数)
FIG63A.jpg(39570 byte)


 
図63B: MOV R16d,[BP+SI+d16] (偶数)
FIG63B.jpg(37985 byte)


 
   MOV R16d,[BP+DI+d16]

図4 の基本命令構造の命令です。 d16 を指定するための2バイトが追加されています。

 
図64: MOV R16d,[BP+DI+d16]
FIG64.jpg(8815 byte)


本命令ではフラグレジスタは変化しません。

 
図65A: MOV R16d,[BP+DI+d16] (奇数)
FIG65A.jpg(40146 byte)


 
図65B: MOV R16d,[BP+DI+d16] (偶数)
FIG65B.jpg(40360 byte)


 
   MOV R8d,mem

図4 の基本命令構造の命令です。 番地を指定するための2バイトが追加されています。

 
図66: MOV R8d,mem
FIG66.jpg(9045 byte)


本命令ではフラグレジスタは変化しません。

 
図67A: MOV R8d,mem (奇数)
FIG67A.jpg(38924 byte)


 
図67B: MOV R8d,mem (偶数)
FIG67B.jpg(37962 byte)


 
   MOV R8d,[BX]

図4 の基本命令構造の命令です。

 
図68: MOV R8d,[BX]
FIG68.jpg(4646 byte)


本命令ではフラグレジスタは変化しません。

 
図69A: MOV R8d,[BX] (奇数)
FIG69A.jpg(29744 byte)


 
図69B: MOV R8d,[BX] (偶数)
FIG69B.jpg(30505 byte)


 
   MOV R8d,[SI]

図4 の基本命令構造の命令です。

 
図70: MOV R8d,[SI]
FIG70.jpg(4706 byte)


本命令ではフラグレジスタは変化しません。

 
図71A: MOV R8d,[SI] (奇数)
FIG71A.jpg(34603 byte)


 
図71B: MOV R8d,[SI] (偶数)
FIG71B.jpg(34487 byte)


 
   MOV R8d,[DI]

図4 の基本命令構造の命令です。

 
図72: MOV R8d,[DI]
FIG72.jpg(5050 byte)


本命令ではフラグレジスタは変化しません。

 
図73A: MOV R8d,[DI] (奇数)
FIG73A.jpg(34321 byte)


 
図73B: MOV R8d,[DI] (偶数)
FIG73B.jpg(34961 byte)


 
   MOV R8d,[BX+SI]

図4 の基本命令構造の命令です。

 
図74: MOV R8d,[BX+SI]
FIG74.jpg(5144 byte)


本命令ではフラグレジスタは変化しません。

 
図75A: MOV R8d,[BX+SI] (奇数)
FIG75A.jpg(34223 byte)


 
図75B: MOV R8d,[BX+SI] (偶数)
FIG75B.jpg(34166 byte)


 
   MOV R8d,[BX+DI]

図4 の基本命令構造の命令です。

 
図76: MOV R8d,[BX+DI]
FIG76.jpg(5070 byte)


本命令ではフラグレジスタは変化しません。

 
図77A: MOV R8d,[BX+DI] (奇数)
FIG77A.jpg(31982 byte)


 
図77B: MOV R8d,[BX+DI] (偶数)
FIG77B.jpg(32718 byte)


 
   MOV R8d,[BP+SI]

図4 の基本命令構造の命令です。

 
図78: MOV R8d,[BP+SI]
FIG78.jpg(5150 byte)


本命令ではフラグレジスタは変化しません。

 
図79A: MOV R8d,[BP+SI] (奇数)
FIG79A.jpg(39404 byte)


 
図79B: MOV R8d,[BP+SI] (偶数)
FIG79B.jpg(38845 byte)


 
   MOV R8d,[BP+DI]

図4 の基本命令構造の命令です。

 
図80: MOV R8d,[BP+DI]
FIG80.jpg(5091 byte)


本命令ではフラグレジスタは変化しません。

 
図81A: MOV R8d,[BP+DI] (奇数)
FIG81A.jpg(38402 byte)


 
図81B: MOV R8d,[BP+DI] (偶数)
FIG81B.jpg(38438 byte)


 
   MOV R8d,[SI+d8]

図4 の基本命令構造の命令です。 d8 を指定するための1バイトが追加されています。

 
図82: MOV R8d,[SI+d8]
FIG82.jpg(6929 byte)


本命令ではフラグレジスタは変化しません。

 
図83A: MOV R8d,[SI+d8] (奇数)
FIG83A.jpg(38024 byte)


 
図83B: MOV R8d,[SI+d8] (偶数)
FIG83B.jpg(35563 byte)


 
   MOV R8d,[DI+d8]

図4 の基本命令構造の命令です。 d8 を指定するための1バイトが追加されています。

 
図84: MOV R8d,[DI+d8]
FIG84.jpg(6510 byte)


本命令ではフラグレジスタは変化しません。

 
図85A: MOV R8d,[DI+d8] (奇数)
FIG85A.jpg(38375 byte)


 
図85B: MOV R8d,[DI+d8] (偶数)
FIG85B.jpg(37218 byte)


 
   MOV R8d,[BP+d8]

図4 の基本命令構造の命令です。 d8 を指定するための1バイトが追加されています。

 
図86: MOV R8d,[BP+d8]
FIG86.jpg(6865 byte)


本命令ではフラグレジスタは変化しません。

 
図87A: MOV R8d,[BP+d8] (奇数)
FIG87A.jpg(37375 byte)


 
図87B: MOV R8d,[BP+d8] (偶数)
FIG87B.jpg(37501 byte)


 
   MOV R8d,[BX+d8]

図4 の基本命令構造の命令です。 d8 を指定するための1バイトが追加されています。

 
図88: MOV R8d,[BX+d8]
FIG88.jpg(6709 byte)


本命令ではフラグレジスタは変化しません。

 
図89A: MOV R8d,[BX+d8] (奇数)
FIG89A.jpg(33678 byte)


 
図89B: MOV R8d,[BX+d8] (偶数)
FIG89B.jpg(31992 byte)


 
   MOV R8d,[BX+SI+d8]

図4 の基本命令構造の命令です。 d8 を指定するための1バイトが追加されています。

 
図90: MOV R8d,[BX+SI+d8]
FIG90.jpg(6578 byte)


本命令ではフラグレジスタは変化しません。

 
図91A: MOV R8d,[BX+SI+d8] (奇数)
FIG91A.jpg(38378 byte)


 
図91B: MOV R8d,[BX+SI+d8] (偶数)
FIG91B.jpg(37369 byte)


 
   MOV R8d,[BX+DI+d8]

図4 の基本命令構造の命令です。 d8 を指定するための1バイトが追加されています。

 
図92: MOV R8d,[BX+DI+d8]
FIG92.jpg(6584 byte)


本命令ではフラグレジスタは変化しません。

 
図93A: MOV R8d,[BX+DI+d8] (奇数)
FIG93A.jpg(36013 byte)


 
図93B: MOV R8d,[BX+DI+d8] (偶数)
FIG93B.jpg(35231 byte)


 
   MOV R8d,[BP+SI+d8]

図4 の基本命令構造の命令です。 d8 を指定するための1バイトが追加されています。

 
図94: MOV R8d,[BP+SI+d8]
FIG94.jpg(6597 byte)


本命令ではフラグレジスタは変化しません。

 
図95A: MOV R8d,[BP+SI+d8] (奇数)
FIG95A.jpg(40229 byte)


 
図95B: MOV R8d,[BP+SI+d8] (偶数)
FIG95B.jpg(41561 byte)


 
   MOV R8d,[BP+DI+d8]

図4 の基本命令構造の命令です。 d8 を指定するための1バイトが追加されています。

 
図96: MOV R8d,[BP+DI+d8]
FIG96.jpg(6740 byte)


本命令ではフラグレジスタは変化しません。

 
図97A: MOV R8d,[BP+DI+d8] (奇数)
FIG97A.jpg(43505 byte)


 
図97B: MOV R8d,[BP+DI+d8] (偶数)
FIG97B.jpg(40078 byte)


 
   MOV R8d,[SI+d16]

図4 の基本命令構造の命令です。 d16 を指定するための2バイトが追加されています。

 
図98: MOV R8d,[SI+d16]
FIG98.jpg(8698 byte)


本命令ではフラグレジスタは変化しません。

 
図99A: MOV R8d,[SI+d16] (奇数)
FIG99A.jpg(42163 byte)


 
図99B: MOV R8d,[SI+d16] (偶数)
FIG99B.jpg(38075 byte)


 
   MOV R8d,[DI+d16]

図4 の基本命令構造の命令です。 d16 を指定するための2バイトが追加されています。

 
図100: MOV R8d,[DI+d16]
FIG100.jpg(8952 byte)


本命令ではフラグレジスタは変化しません。

 
図101A: MOV R8d,[DI+d16] (奇数)
FIG101A.jpg(42212 byte)


 
図101B: MOV R8d,[DI+d16] (偶数)
FIG101B.jpg(40188 byte)


 
   MOV R8d,[BP+d16]

図4 の基本命令構造の命令です。 d16 を指定するための2バイトが追加されています。

 
図102: MOV R8d,[BP+d16]
FIG102.jpg(9089 byte)


本命令ではフラグレジスタは変化しません。

 
図103A: MOV R8d,[BP+d16] (奇数)
FIG103A.jpg(40024 byte)


 
図103B: MOV R8d,[BP+d16] (偶数)
FIG103B.jpg(41826 byte)


 
   MOV R8d,[BX+d16]

図4 の基本命令構造の命令です。 d16 を指定するための2バイトが追加されています。

 
図104: MOV R8d,[BX+d16]
FIG104.jpg(8904 byte)


本命令ではフラグレジスタは変化しません。

 
図105A: MOV R8d,[BX+d16] (奇数)
FIG105A.jpg(35579 byte)


 
図105B: MOV R8d,[BX+d16] (偶数)
FIG105B.jpg(34800 byte)


 
   MOV R8d,[BX+SI+d16]

図4 の基本命令構造の命令です。 d16 を指定するための2バイトが追加されています。

 
図106: MOV R8d,[BX+SI+d16]
FIG106.jpg(8966 byte)


本命令ではフラグレジスタは変化しません。

 
図107A: MOV R8d,[BX+SI+d16] (奇数)
FIG107A.jpg(37878 byte)


 
図107B: MOV R8d,[BX+SI+d16] (偶数)
FIG107B.jpg(37417 byte)


 
   MOV R8d,[BX+DI+d16]

図4 の基本命令構造の命令です。 d16 を指定するための2バイトが追加されています。

 
図108: MOV R8d,[BX+DI+d16]
FIG108.jpg(8925 byte)


本命令ではフラグレジスタは変化しません。

 
図109A: MOV R8d,[BX+DI+d16] (奇数)
FIG109A.jpg(37715 byte)


 
図109B: MOV R8d,[BX+DI+d16] (偶数)
FIG109B.jpg(39761 byte)


 
   MOV R8d,[BP+SI+d16]

図4 の基本命令構造の命令です。 d16 を指定するための2バイトが追加されています。

 
図110: MOV R8d,[BP+SI+d16]
FIG110.jpg(8960 byte)


本命令ではフラグレジスタは変化しません。

 
図111A: MOV R8d,[BP+SI+d16] (奇数)
FIG111A.jpg(45874 byte)


 
図111B: MOV R8d,[BP+SI+d16] (偶数)
FIG111B.jpg(44692 byte)


 
   MOV R8d,[BP+DI+d16]

図4 の基本命令構造の命令です。 d16 を指定するための2バイトが追加されています。

 
図112: MOV R8d,[BP+DI+d16]
FIG112.jpg(9014 byte)


本命令ではフラグレジスタは変化しません。

 
図113A: MOV R8d,[BP+DI+d16] (奇数)
FIG113A.jpg(42982 byte)


 
図113B: MOV R8d,[BP+DI+d16] (偶数)
FIG113B.jpg(45701 byte)


 
   MOV SRd,R16s

図4 の基本命令構造の命令ですが受けのレジスタがセグメントレジスタです。

 
図114: MOV SRd,R16s
FIG114.jpg(4543 byte)


 
図116: セグメントレジスタ選択
FIG116.jpg(7231 byte)


本命令ではフラグレジスタは変化しません。

 
図115: MOV SRd,R16s
FIG115A.jpg(73874 byte)
FIG115B.jpg(19169 byte)
 
   MOV SRd,mem

図4 の基本命令構造の命令ですが受けのレジスタがセグメントレジスタです。 番地を指定するための2バイトが追加されています。 セグメントレジスタの選択は 図116 を見てください。

 
図117: MOV SRd,mem
FIG117.jpg(9129 byte)


本命令ではフラグレジスタは変化しません。

 
図118A: MOV SRd,mem (偶数)
FIG118A.jpg(39173 byte)


 
図118B: MOV SRd,mem (奇数)
FIG118B.jpg(38602 byte)


 
   MOV SRs,R16d

図4 の基本命令構造の命令ですが受けのレジスタがセグメントレジスタです。 セグメントレジスタの選択は 図116 を見てください。

 
図119: MOV SRs,R16d
FIG119.jpg(5640 byte)


本命令ではフラグレジスタは変化しません。

 
図120: MOV SRs,R16d
FIG120A.jpg(73722 byte)
FIG120B.jpg(3579 byte)


 
   MOV mem,SRs

図4 の基本命令構造の命令ですが送りのレジスタがセグメントレジスタです。 番地を指定するための2バイトが追加されています。 セグメントレジスタの選択は 図116 を見てください。

 
図121: MOV mem,SRs
FIG121.jpg(9399 byte)


本命令ではフラグレジスタは変化しません。

 
図122A: MOV mem,SRs (奇数)
FIG122A.jpg(41594 byte)


 
図122B: MOV mem,SRs (偶数)
FIG122B.jpg(38636 byte)