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.

DAS—Decimal Adjust AL after Subtraction<br />

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

2F DAS 減算後に AL を 10 進調整する。<br />

説明<br />

2 つのパ ッ ク BCD 値間の減算結果を調整して、 パ ッ ク BCD 結果を作成する。 AL レジス<br />

タは、 こ の命令の暗黙のソ ース兼デステ ィ ネ ー シ ョ ン ・ オペラン ド である。 DAS 命令<br />

は、 一方の 2 桁のパ ッ ク BCD 値から も う一方の 2 桁のパ ッ ク BDC 値を引き (2 進減算 )、<br />

バイ ト の結果を AL レジスタにストアする SUB 命令の次に実行した と き に限 り 有効であ<br />

る。 そこで、 DAS 命令が AL レジスタの内容を調整して、 正しい 2 桁のパ ッ ク BCD 結<br />

果に ま と める。 10 進ボローが検出された場合は、 ボローに従って CF および AF フラグ<br />

がセッ ト される。<br />

操作<br />

IF (AL AND 0FH) > 9 OR AF = 1<br />

THEN<br />

AL ← AL − 6;<br />

CF ← CF OR BorrowFromLastSubtraction; (* CF OR borrow from AL ← AL − 6 *)<br />

AF ← 1;<br />

ELSE AF ← 0;<br />

FI;<br />

IF ((AL > 9FH) or CF = 1)<br />

THEN<br />

AL ← AL − 60H;<br />

CF ← 1;<br />

ELSE CF ← 0;<br />

FI;<br />

例<br />

SUB AL, BL Before: AL=35H BL=47H EFLAGS(OSZAPC)=XXXXXX<br />

After: AL=EEH BL=47H EFLAGS(0SZAPC)=010111<br />

DAA Before: AL=EEH BL=47H EFLAGS(OSZAPC)=010111<br />

After: AL=88H BL=47H EFLAGS(0SZAPC)=X10111<br />

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

値の調整に よ っ て結果の ど ち ら かの桁に 10 進ボロ ーが生じた場合は、 CF および AF フ<br />

ラグがセッ ト される ( 上記の 「操作」 の項を参照 )。 SF、 ZF、 PF フラグが結果に従って<br />

セッ ト される。 OF フ ラ グは未定義。<br />

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

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

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

例外 ( すべての操作モード )<br />

なし。<br />

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

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!