16.02.2013 Aufrufe

24531904_j

24531904_j

24531904_j

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

OUTS/OUTSB/OUTSW/OUTSD—Output String to Port<br />

オペコード 命令 説明<br />

6E OUTS DX, DS:(E)SI アドレス DS:(E)SI のバイトを DX の I/O ポートに出力する。<br />

6F OUTS DX, DS:SI アドレス DS:SI のワードを DX の I/O ポートに出力する。<br />

6F OUTS DX, DS:ESI アドレス DS:ESI のダブルワードを DX の I/O ポートに出力する。<br />

6E OUTSB アドレス DS:(E)SI のバイトを DX の I/O ポートに出力する。<br />

6F OUTSW アドレス DS:SI のワードを DX の I/O ポートに出力する。<br />

6F OUTSD アドレス DS:ESI のダブルワードを DX の I/O ポートに出力する。<br />

説明<br />

これらの命令は、 データを第2 オペラン ド ( ソース・ オペランド ) から第1 オペラン ド<br />

( デステ ィ ネーシ ョ ン ・ オペラン ド ) で指定された I/O ポー トにコピーする。 ソース ・ オペ<br />

ランドは、 アド レス DS:ESI のメモリ ・ロケーションである( オペラン ド ・ サイズ属性が 16<br />

の場合は、 SI レジスタがソース ・ インデックス ・ レジスタとして使用される )。 DS セグメ<br />

ントをセグメント ・オーバライド ・プリフィックスでオーバライドすることができる。<br />

デステ ィ ネーシ ョ ン ・ オペラン ド は、 I/O ポー ト ・アドレス 0 ~ 65535 にアクセスできる<br />

ように、 DX レジスタでなければならない。 8 ビットのI/O ポー トにアクセスする場合<br />

は、 ポー ト ・ サイズはオペコ ー ド に よ って決ま る。 16 ビッ トまたは32 ビッ トのI/O ポー<br />

トにアクセスする場合は、 ポート ・サイズはオペランド ・サイズ属性によって決まる。<br />

OUTSB、 OUTSW、 OUTSD ニーモニッ クは、 それぞれ OUTS 命令のバイ ト 版、 ワ ー ド<br />

版、 ダブルワ ー ド 版のシ ノ ニムであ る (OUTS 命令では、 命令の中で "DS:ESI" を明示的<br />

に指定しなければならない )。<br />

バイ ト、 ワー ド、 またはダブルワー ドがメモリ ・ ロケーシ ョ ンから I/O ポ ー ト に転送 さ<br />

れた後、 ESI レジスタは EFLAGS レジスタ内のDF フラグの設定に従って自動的にイン<br />

クリメントまたはデクリメントされる。 (DF フラグが0 である場合は、 ESI レジスタは<br />

インク リ メン ト される。 DF フラグが1 である場合は、 ESI レジスタはデクリメント され<br />

る。 ) ESI レ ジ ス タ は、 バイ ト 操作の場合は 1、 ワー ド操作の場合は 2、 ダブルワー ド操<br />

作の場合は 4、 それぞれインク リ メン ト またはデク リ メン ト される。<br />

OUTS、 OUTSB、 OUTSW、 OUTSD 命令は、 前に REP プリフィックスを付けると、 ECX<br />

バイ ト、 ワー ド、 またはダブルワー ドのブロ ッ ク入力を行える。 REP プリフィックスの<br />

説明については、 3:713 ページの 「REP/REPE/REPZ/REPNE/REPNZ—Repeat String<br />

Operation Prefix」 を参照のこ と。<br />

OUTS、 OUTSB、 OUTSW、 または OUTSD 命令の実行後、 プ ロ セ ッ サは、 OUT トランザ<br />

ク シ ョ ンの完了を確認してか ら、 次の命令の実行を開始する。 ただし、 OUT トランザク<br />

シ ョ ンが ま だ完了していな く て も 、 次の命令がプ リ フ ェ ッ チ さ れる場合がある。<br />

この命令は、 プロセッサのI/O アドレス空間にあるI/O ポー トのアクセスだけに有用であ<br />

る。<br />

I/O トランザクションは、すべての先行するデータ・メモリ操作の後で実行される。これ<br />

以降のデータ・メモリ操作は、I/O トランザクションを通ることができない。<br />

Itanium ベース・システム環境では、I/O ポートの参照は、IOBase レジスタで指定される<br />

64 ビット仮想アドレスに、4K バイト仮想ページ当たり 4 ポートずつマッピングされる。<br />

オペレーティング・システムは、Itanium アーキテクチャの TLB を利用して、任意の 4 つ<br />

の I/O ポートへのアクセス許可を付与または拒否できる。I/O ポート空間は、オペレーティ<br />

ング・システム・コードによって、任意の 64 ビット物理メモリ・ロケーションにマッピ<br />

ングされる。CFLG.io = 1 かつ CPL > IOPL の場合は、TSS を参照して、I/O 許可を与える<br />

かどうかを決定する。CFLG.io = 0 または CPL

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!