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 и команды , , , ,