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.

IDIV—Signed Divide<br />

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

F6 /7 IDIV r/m8 AX ( ただし、AH の内容は AL の符号拡張でなければならない ) を<br />

r/m バイトで符号付き除算する。<br />

( 結果 : AL= 商、AH= 剰余 )<br />

F7 /7 IDIV r/m16 DX:AX ( ただし、DX の内容は AX の符号拡張でなければならない )<br />

を r/m ワードで符号付き除算する。<br />

( 結果 : AX= 商、DX= 剰余 )<br />

F7 /7 IDIV r/m32 EDX:EAX ( ただし、EDX の内容は EAX の符号拡張でなければなら<br />

ない ) を r/m ダブルワードで符号付き除算する。<br />

( 結果 : EAX= 商、EDX= 剰余 )<br />

説明<br />

AL、 AX、 または EAX レジスタの値をソース ・ オペランドで( 符号付き で ) 割り、 結果<br />

をそれぞれAX、 DX:AX、 または EDX:EAX レジスタにストアする。 ソース ・ オペラン<br />

ド に は、 汎用レ ジ ス タ ま たは メ モ リ ・ ロ ケ ー シ ョ ン を使用で き る。 こ の命令の処理は、<br />

以下の表に示す よ う にオペラ ン ド ・ サイ ズに依存する。<br />

表 1-13. IDIV オペランド<br />

オペランド・サイズ 被除数 除数 商 剰余 商の範囲<br />

ワード / バイト AX r/m8 AL AH −128 ~ +127<br />

ダブルワード / ワード DX:AX r/m16 AX DX −32,768 ~ +32,767<br />

クワッドワード / ダブルワード EDX:EAX r/m32 EAX EDX −2 31 ~ 232 − 1<br />

整数でない結果は 0 に向か っ て切 り 捨て られる。 剰余の符号は、 常に被除数の符号 と 同<br />

じである。剰余の絶対値は、常に除数の絶対値より小さい。オーバフローは、OF フラグ<br />

ではな く、 #DE ( 除算エラ ー ) 例外で示される。<br />

操作<br />

IF SRC = 0<br />

THEN #DE; (* divide error *)<br />

FI;<br />

IF OpernadSize = 8 (* word/byte operation *)<br />

THEN<br />

temp ← AX / SRC; (* signed division *)<br />

IF (temp > 7FH) OR (temp < 80H)<br />

(* if a positive result is greater than 7FH or a negative result is less than 80H *)<br />

THEN #DE; (* divide error *) ;<br />

ELSE<br />

AL ← temp;<br />

AH ← AX SignedModulus SRC;<br />

FI;<br />

ELSE<br />

IF OpernadSize = 16 (* doubleword/word operation *)<br />

THEN<br />

temp ← DX:AX / SRC; (* signed division *)<br />

IF (temp > 7FFFH) OR (temp < 8000H)<br />

(* if a positive result is greater than 7FFFH *)<br />

(* or a negative result is less than 8000H *)<br />

THEN #DE; (* divide error *) ;<br />

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!