Как стать программистом Как устроен компьютер. Что такое программа. Как написать свою программу. И многое другое узнаете вы из этой книги. Получить бесплатно! |
Инструкция 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 (десятичная коррекция после сложения).
Подписаться на Дзен-канал
Вступить в группу "Основы программирования" Подписаться на рассылки по программированию |
Первые шаги в программирование
Главный вопрос начинающего программиста – с чего начать? Вроде бы есть желание, но иногда «не знаешь, как начать думать, чтобы до такого додуматься». У человека, который никогда не имел дело с информационными технологиями, даже простые вопросы могут вызвать большие трудности и отнять много времени на решение. Подробнее... |