ХАНДЫФАР
Инструкция DAA
Десятичная корректировка регистра AL после сложения
DAA - Десятичная корректировка регистра AL после сложения.
Корректирует сумму двух упакованных значений BCD для создания упакованного результата BCD. Регистр al является подразумеваемым исходным и целевым операндами. Инструкция daa полезна только тогда, когда она следует за инструкцией add, которая добавляет (двоичное сложение) два 2-значных, упакованных значения BCD и сохраняет результат в байтах в регистре al. Затем инструкция daa корректирует содержимое регистра al таким образом, чтобы оно содержало правильный 2-значный, упакованный результат BCD. Если обнаружен десятичный перенос, флаги CF и AF устанавливаются соответственно.
Флаги CF и AF устанавливаются, если корректировка значения приводит к переносу десятичной дроби в любой цифре результата. Флаги SF, ZF и PF устанавливаются в соответствии с результатом. Флаг OF не определён.
Предположим, что регистр al содержит уже упакованное значение (3816), а регистр bl содержит уже упакованное значение (4516). После выполнения инструкции add al, bl а регистр al будет содержать значение (7D16), а не (8316), затем и инструкция daa корректирует результат в регистре al что бы было правильное упакованное значение. Это тоже самое что и 38 + 45 = 83.
Инструкция DAA
Десятичная корректировка регистра AL после сложения
DAA - Десятичная корректировка регистра AL после сложения.
Корректирует сумму двух упакованных значений BCD для создания упакованного результата BCD. Регистр al является подразумеваемым исходным и целевым операндами. Инструкция daa полезна только тогда, когда она следует за инструкцией add, которая добавляет (двоичное сложение) два 2-значных, упакованных значения BCD и сохраняет результат в байтах в регистре al. Затем инструкция daa корректирует содержимое регистра al таким образом, чтобы оно содержало правильный 2-значный, упакованный результат BCD. Если обнаружен десятичный перенос, флаги CF и AF устанавливаются соответственно.
Флаги CF и AF устанавливаются, если корректировка значения приводит к переносу десятичной дроби в любой цифре результата. Флаги SF, ZF и PF устанавливаются в соответствии с результатом. Флаг OF не определён.
Предположим, что регистр al содержит уже упакованное значение (3816), а регистр bl содержит уже упакованное значение (4516). После выполнения инструкции add al, bl а регистр al будет содержать значение (7D16), а не (8316), затем и инструкция daa корректирует результат в регистре al что бы было правильное упакованное значение. Это тоже самое что и 38 + 45 = 83.