Инструкция DAA


Лучшие книги по Ассемблеру Лучшие книги по Ассемблеру

Сделал подборку не новых, но проверенных книг по программированию на языке ассемблера. Если вы также как и я любите погружаться на низкий уровень, в те закоулки мира программирования, куда не всем путь открыт, то посмотрите. Возможно, что-то вам понравится. Подробнее...

Команда DAA в Ассемблере выполняет десятичную коррекцию после сложения. Синтаксис:

DAA

Инструкция DAA корректирует результат сложения двух упакованных BCD-значений. В зависимости от результата эта команда может изменять флаги CF, ZF, SF, OF, PF, AF.

Алгоритм работы команды DAA:

  • Если младшие четыре бита (младшая цифра) в регистре AL больше 9 или AF = 1, то:
    • AL = AL + 6
    • AF = 1
    • CF = CF или Перенос последнего сложения
  • Иначе AF = 0
  • Если AL > 9Fh или CF = 1, то:
    • AL = AL + 60h
    • CF = 1
  • Иначе CF = 0

Пример на ассемблере:

.model tiny
.code
ORG 100h

start:

MOV  AL,  33h   ; AL = 33h
ADD  AL,  49h   ; AL = 33h + 48h
DAA             ; AL = 82h

RET

END start

Команда DAA:

  • Получает двоичное число, которое является результатом выполнения команд ADD или ADC
  • Преобразует это число в упакованный десятичный формат

В приведенном выше примере складываются два упакованных десятичных числа 33h (51) и 49h (73). В итоге получается число 7Ch (124). Младшая цифра результата Сh, больше, чем 9, поэтому выполняется коррекция результата по описанному выше алгоритму:

  • К значению регистра AL прибавляем 6 (124 + 6 = 130 = 82h)
  • Флаг AF устанавливаем в 1

Коррекция старшей цифры не выполняется, так как значение в AL меньше, чем 9F (см. алгоритм выше).

Напоследок, как всегда, о происхождении аббревиатуры DAA.

DAA - это Decimal Adjust after Addition (десятичная коррекция после сложения).



Первые шаги в программирование Первые шаги в программирование

Главный вопрос начинающего программиста – с чего начать? Вроде бы есть желание, но иногда «не знаешь, как начать думать, чтобы до такого додуматься». У человека, который никогда не имел дело с информационными технологиями, даже простые вопросы могут вызвать большие трудности и отнять много времени на решение. Подробнее...

Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su