24531904_j

24531904_j 24531904_j

16.02.2013 Aufrufe

STOS/STOSB/STOSW/STOSD—Store String Data オペコード 命令 説明 AA STOS ES:(E)DI AL をアドレス ES:(E)DI にストアする。 AB STOS ES:DI AX をアドレス ES:DI にストアする。 AB STOS ES:EDI EAX をアドレス ES:EDI にストアする。 AA STOSB AL をアドレス ES:(E)DI にストアする。 AB STOSW AX をアドレス ES:DI にストアする。 AB STOSD EAX をアドレス ES:EDI にストアする。 説明 バイ ト、 ワー ド、 またはダブルワー ド をそれぞれ AL、 AX、 または EAX レジスタからデ スティネーション・オペランドにストアする。 デスティネーション・オペランドは、 ア ドレスES:EDI のメモリ ・ ロケーションである ( オペラン ド ・ サイズ属性が 16 の場合は、 DI レジスタがソース ・ インデックス ・ レジスタとして使用される )。 ES セグメン ト は、 セグメン ト ・ オーバライ ド ・ プ リ フ ィ ッ クスでオーバライ ド できない。 STOSB、 STOSW、 STOSD ニーモニッ クは、 それぞれ STOS 命令のバイ ト 版、 ワ ー ド 版、 ダブルワー ド版のシノニムである。 これらのニーモニッ クは使い方が簡単であるが、 タ イプ ・ チェ ッ クやセグメント ・ チェ ッ クの機能を持たない (STOS 命令では、 命令の中で "ES:EDI" を明示的に指定しなければならない )。 バイ ト、 ワー ド、 またはダブルワー ドが AL、 AX、 または EAX レジスタからメモリ ・ ロ ケ ー シ ョ ン に転送 さ れた後、 EDI レジスタは EFLAGS レジスタのDF フ ラ グの設定に 従 っ て自動的に イ ン ク リ メ ン ト ま たはデ ク リ メ ン ト さ れる。 (DF フラグが0 である場合 は、 EDI レジスタはインクリメント される。 DF フラグが1 である場合は、 EDI レジスタ はデク リ メン ト される。 ) EDI レ ジ ス タ は、 バイ ト 操作の場合は 1、 ワー ド操作の場合は 2、 ダブル ワ ー ド 操作の場合は 4、 それぞれインク リ メン ト またはデク リ メン ト される。 STOS、 STOSB、 STOSW、 STOSD 命令は、 前に REP プリフィックスを付けることによ り、 ECX バイ ト、 ワー ド、 またはダブルワー ドのブロ ッ ク ・ ロー ド を行える。 しかし通 常は、 デー タをス ト アするにはその前に AL、 AX、 または EAX レジスタに転送する必要 がある ので、 こ れ ら の命令はルー プ構造体で使用 さ れる方が多い。 REP プリフィックス の説明については、 3:713 ページの 「REP/REPE/REPZ/REPNE/REPNZ—Repeat String Operation Prefix」 を参照のこ と。 操作 IF (byte store) THEN DEST ← AL; THEN IF DF = 0 THEN (E)DI ← 1; ELSE (E)DI ← -1; FI; ELSE IF (word store) THEN DEST ← AX; THEN IF DF = 0 THEN DI ← 2; ELSE DI ← -2; FI; 3:756 第 3 巻 : IA-32 基本命令リファレンス

STOS/STOSB/STOSW/STOSD—Store String Data ( 続き ) FI; FI; ELSE (* doubleword store *) DEST ← EAX; THEN IF DF = 0 THEN EDI ← 4; ELSE EDI ← -4; FI; 影響を受けるフラグ なし。 追加の Itanium ベース・システム環境例外 Itanium アーキテクチャ ・ レジスタ ・ フォルト Itanium アーキテクチャ ・ メモリ ・ フォル ト NaT レ ジ ス タ参照アボ ー ト 。 VHPT データ ・ フォル ト、 ネス ト された TLB フォルト、 データ TLB フォルト、 代替データTLB フォルト、 デー タ・ページ不在フォルト、 データNaT ページ参照アボー ト、 データ・キー・ ミス・フォルト、 データ・キー許可 フォルト、 データ・アクセス権フォルト、 データ・アクセ ス・ビット ・フォルト、 データ・ダーティ ・ビット ・フォ ルト。 保護モード例外 #GP(0) デステ ィ ネー シ ョ ンが書き込み不可能なセグメ ン ト にある 場合。 メモリ ・ オペランドの実効アドレスが ES セグメン ト の範 囲外の場合。 ES レジスタの内容がNULL セグメン ト ・ セレク タの場 合。 #PF ( フォルト ・コード ) ペー ジ ・ フ ォ ル ト が発生した場合。 #AC(0) 現行特権レベルが 3 のときに、 アライメント ・チェックが イネーブルにされていて、 アライメントが合わないメモリ 参照が行われた場合。 実アドレス・モード例外 #GP メモリ ・ オペランドの実効アドレスが CS、 DS、 ES、 FS または GS セグ メ ン ト の範囲外の場合。 #SS メモリ ・ オペランドの実効アドレスが SS セグメン ト の範 囲外の場合。 第 3 巻 : IA-32 基本命令リファレンス 3:757

STOS/STOSB/STOSW/STOSD—Store String Data ( 続き )<br />

FI;<br />

FI;<br />

ELSE (* doubleword store *)<br />

DEST ← EAX;<br />

THEN IF DF = 0<br />

THEN EDI ← 4;<br />

ELSE EDI ← -4;<br />

FI;<br />

影響を受けるフラグ<br />

なし。<br />

追加の Itanium ベース・システム環境例外<br />

Itanium アーキテクチャ ・<br />

レジスタ ・ フォルト<br />

Itanium アーキテクチャ ・<br />

メモリ ・ フォル ト<br />

NaT レ ジ ス タ参照アボ ー ト 。<br />

VHPT データ ・ フォル ト、 ネス ト された TLB フォルト、<br />

データ TLB フォルト、 代替データTLB フォルト、 デー<br />

タ・ページ不在フォルト、 データNaT ページ参照アボー<br />

ト、 データ・キー・ ミス・フォルト、 データ・キー許可<br />

フォルト、 データ・アクセス権フォルト、 データ・アクセ<br />

ス・ビット ・フォルト、 データ・ダーティ ・ビット ・フォ<br />

ルト。<br />

保護モード例外<br />

#GP(0) デステ ィ ネー シ ョ ンが書き込み不可能なセグメ ン ト にある<br />

場合。<br />

メモリ ・ オペランドの実効アドレスが ES セグメン ト の範<br />

囲外の場合。<br />

ES レジスタの内容がNULL セグメン ト ・ セレク タの場<br />

合。<br />

#PF ( フォルト ・コード ) ペー ジ ・ フ ォ ル ト が発生した場合。<br />

#AC(0) 現行特権レベルが 3 のときに、 アライメント ・チェックが<br />

イネーブルにされていて、 アライメントが合わないメモリ<br />

参照が行われた場合。<br />

実アドレス・モード例外<br />

#GP メモリ ・ オペランドの実効アドレスが CS、 DS、 ES、 FS<br />

または GS セグ メ ン ト の範囲外の場合。<br />

#SS メモリ ・ オペランドの実効アドレスが SS セグメン ト の範<br />

囲外の場合。<br />

第 3 巻 : IA-32 基本命令リファレンス 3:757

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!