Справочник по языку Ассемблера IBM PC

AAA


(Ascii Adjust after Addition)

ASCII-коррекция после сложения

 

Схема команды:  aaa 

Назначение: корректировка неупакованного результата сложения двух одноразрядных неупакованных BCD-чисел.


Алгоритм работы:

проанализировать значение младшего полубайта регистра al и значение флага af;

если (значение младшего полубайта регистра al >9) или (AF=1), то выполнить следующие действия:

увеличить значение al на 6;



очистить старший полубайт регистра al;

увеличить значение ah на 1;

установить флаги: af = 1, cf = 1,

иначе сбросить флаги af = 0 и cf = 0.

Состояние флагов после выполнения команды:

11 07 06 04 02 00
OF SF ZF AF PF CF
? r ? r

Применение:


Обычно команда aaa используется после сложения каждого разряда распакованных BCD-чисел командой add. Каждая цифра неупакованного BCD-числа занимает младший полубайт байта. Если результат сложения двух одноразрядных BCD-чисел больше 9, то число в младшем полубайте результата не есть BCD-число. Поэтому результат нужно корректировать командой aaa. Эта команда позволяет сформировать правильное BCD-число в младшем полубайте и запомнить единицу переноса в старший разряд путем увеличения содержимого регистра ah на 1.


К примеру, сложить два неупакованных BCD-числа: 08 + 05:

        mov     ah,08h  ;ah=08h         mov     al,05h  ;al=05h         add     al,ah   ;al=al+ah=05h+08h=0dh — не BCD-число         xor     ah,ah   ;ah=0         aaa             ;ah=01h,al=03h — результат скорректирован         

См. также: урок 8, приложение 7 и команды , , , ,



Содержание раздела