24531904_j
24531904_j 24531904_j
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
- Seite 718 und 719: RCL/RCR/ROL/ROR-—Rotate ( 続き
- Seite 720 und 721: RDMSR—Read from Model Specific Re
- Seite 722 und 723: RDPMC—Read Performance-Monitoring
- Seite 724 und 725: RDTSC—Read Time-Stamp Counter (
- Seite 726 und 727: REP/REPE/REPZ/REPNE /REPNZ—Repeat
- Seite 728 und 729: RET—Return from Procedure オペ
- Seite 730 und 731: RET—Return from Procedure ( 続
- Seite 732 und 733: RET—Return from Procedure ( 続
- Seite 734 und 735: ROL/ROR—Rotate 「RCL/RCR/ROL/ROR
- Seite 736 und 737: SAHF—Store AH into Flags オペ
- Seite 738 und 739: SAL/SAR/SHL/SHR—Shift ( 続き )
- Seite 740 und 741: SAL/SAR/SHL/SHR—Shift ( 続き )
- Seite 742 und 743: SBB—Integer Subtraction with Borr
- Seite 744 und 745: SCAS/SCASB/SCASW/SCASD—Scan Strin
- Seite 746 und 747: SETcc—Set Byte on Condition オ
- Seite 748 und 749: SETcc—Set Byte on Condition ( 続
- Seite 750 und 751: SGDT/SIDT—Store Global/Interrupt
- Seite 752 und 753: SHLD—Double Precision Shift Left
- Seite 754 und 755: SHLD—Double Precision Shift Left
- Seite 756 und 757: SHRD—Double Precision Shift Right
- Seite 758 und 759: SIDT—Store Interrupt Descriptor T
- Seite 760 und 761: SLDT—Store Local Descriptor Table
- Seite 762 und 763: SMSW—Store Machine Status Word (
- Seite 764 und 765: STD—Set Direction Flag オペコ
- Seite 766 und 767: STI—Set Interrupt Flag ( 続き )
- Seite 770 und 771: STOS/STOSB/STOSW/STOSD—Store Stri
- Seite 772 und 773: STR—Store Task Register ( 続き
- Seite 774 und 775: SUB—Subtract ( 続き ) 保護モ
- Seite 776 und 777: TEST—Logical Compare ( 続き )
- Seite 778 und 779: VERR, VERW—Verify a Segment for R
- Seite 780 und 781: WAIT/FWAIT—Wait オペコード
- Seite 782 und 783: WBINVD—Write Back and Invalidate
- Seite 784 und 785: WRMSR—Write to Model Specific Reg
- Seite 786 und 787: XADD—Exchange and Add ( 続き )
- Seite 788 und 789: XCHG—Exchange Register/Memory wit
- Seite 790 und 791: XLAT/XLATB—Table Look-up Translat
- Seite 792 und 793: XOR—Logical Exclusive OR ( 続き
- Seite 794 und 795: EMMS—Empty MMX State オペコー
- Seite 796 und 797: MOVD—Move 32 Bits ( 続き ) 追
- Seite 798 und 799: MOVQ—Move 64 Bits オペコード
- Seite 800 und 801: PACKSSWB/PACKSSDW—Pack with Signe
- Seite 802 und 803: PACKSSWB/PACKSSDW—Pack with Signe
- Seite 804 und 805: PACKUSWB—Pack with Unsigned Satur
- Seite 806 und 807: PADDB/PADDW/PADDD—Packed Add (
- Seite 808 und 809: PADDSB/PADDSW—Packed Add with Sat
- Seite 810 und 811: PADDSB/PADDSW—Packed Add with Sat
- Seite 812 und 813: PADDUSB/PADDUSW—Packed Add Unsign
- Seite 814 und 815: PAND—Logical AND オペコード
- Seite 816 und 817: PANDN—Logical AND NOT オペコ
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