操作碼 |
指令 |
說明 |
27 |
DAA |
執行加法之後,對 AL 進行十進制調整 |
調整兩個壓縮 BCD 值之和,以產生壓縮 BCD 結果。AL 暫存器是隱含的源運算元與目標運算元。DAA 指令僅用在特定的 ADD 指令之後,該指令將兩個 2 位數的壓縮 BCD 值相加(二進制加法),並將位元組結果儲存到 AL 暫存器的。接著,DAA 指令調整 AL 暫存器中的內容,使之包含正確的 2 位壓縮 BCD 結果。如果檢測到十進制進位,則相應設定 CF 與 AF 標誌。
IF (((AL AND 0FH) > 9) or AF 1)
THEN
AL AL + 6;
CF CF OR CarryFromLastAddition; (* CF OR carry from AL AL + 6 *)
AF 1;
ELSE
AF 0;
FI;
IF ((AL AND F0H) > 90H) or CF 1)
THEN
AL AL + 60H;
CF 1;
ELSE
CF 0;
FI;
ADD AL, BL Before: AL=79H BL=35H EFLAGS(OSZAPC)=XXXXXX
After: AL=AEH BL=35H EFLAGS(0SZAPC)=110000
DAA Before: AL=AEH BL=35H EFLAGS(OSZAPC)=110000
After: AL=14H BL=35H EFLAGS(0SZAPC)=X00111
DAA Before: AL=2EH BL=35H EFLAGS(OSZAPC)=110000
After: AL=04H BL=35H EFLAGS(0SZAPC)=X00101
如果調整結果值時導致結果中的任何數字產生十進制進位,則設定 CF 與 AF 標誌(請參閱上面的“操作”部分)。SF、ZF 及 PF 標誌根據結果設定。OF 標誌未定義。
無。