16.02.2013 Aufrufe

24531904_j

24531904_j

24531904_j

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

POPA/POPAD—Pop All General-Purpose Registers<br />

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

61 POPA DI、SI、BP、BX、DX、CX、AX をポップする。<br />

61 POPAD EDI、ESI、EBP、EBX、EDX、ECX、EAX をポップする。<br />

説明<br />

ダブルワー ド (POPAD) またはワー ド (POPA) をスタ ッ クから汎用レジスタにポップする。<br />

レジスタがロード される順番は、 ( オペラン ド ・ サイズ属性が 32 である場合は ) EDI、<br />

ESI、 EBP、 EBX、 EDX、 ECX、 EAX であ り、 ( オペラン ド ・ サイズ属性が 16 である場<br />

合は ) DI、 SI、 BP、 BX、 DX、 CX、 AX である。 これらの命令は、 PUSHA/PUSHAD 命<br />

令の逆の操作を実行する。 ESP レジスタまたは SP レジスタのスタック上の値は無視され<br />

る。 その代わりに、 ESP レジスタまたは SP レジスタは、 各レジスタがロード された後に<br />

インク リ メン ト される。<br />

POPA ( すべてをポ ッ プ ) ニーモニッ クおよび POPAD ( すべてのダブルをポ ッ プ ) ニーモ<br />

ニックは、 同じオペコードを参照する。 POPA 命令は、 オペラ ン ド ・ サイ ズ属性が 16 で<br />

ある と きに使用するためのものであり、 POPAD 命令は、 オペラ ン ド ・ サ イ ズ属性が 32<br />

である と き に使用す る ための も のである。 一部のアセンブ ラ は、 ( 必要な場合に は オペラ<br />

ンド ・サイズ・オーバライド ・プリフィックス[66H] を使用して ) POPA が使用される と<br />

きはオペランド ・サイズを 16 に、 POPAD が使用される と き は 32 に強制する。 他のアセ<br />

ンブラは、 これらのニーモニッ クをシノニム (POPA/POPAD) として取り扱い、 オペラン<br />

ド ・ サイズ属性の現在の設定を使用して、 使用されているニーモニ ッ ク に関係な く 、 ス<br />

タックからポップする値のサイズを決定できる。<br />

操作<br />

IF OperandSize = 32 (* instruction = POPAD *)<br />

THEN<br />

EDI ← Pop();<br />

ESI ← Pop();<br />

EBP ← Pop();<br />

increment ESP by 4 (* skip next 4 bytes of stack *)<br />

EBX ← Pop();<br />

EDX ← Pop();<br />

ECX ← Pop();<br />

EAX ← Pop();<br />

ELSE (* OperandSize = 16, instruction = POPA *)<br />

DI ← Pop();<br />

SI ← Pop();<br />

BP ← Pop();<br />

increment ESP by 2 (* skip next 2 bytes of stack *)<br />

BX ← Pop();<br />

DX ← Pop();<br />

CX ← Pop();<br />

AX ← Pop();<br />

FI;<br />

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

なし。<br />

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!