ХАНДЫФАР
Инструкция AAA
Корректировка регистра AL после сложения.
AAA - Корректировка регистра AL после сложения
Корректирует сумму двух распакованных значений BCD для создания результата распаковки BCD. Регистр al является подразумеваемым исходным и целевым операндом для этой инструкции. Инструкция aaa полезна только тогда, когда она следует за инструкцией add, которая добавляет (двоичное сложение) два распакованных значения BCD и сохраняет результат в байтах в регистре al. Затем инструкция aaa корректирует содержимое регистра al таким образом, чтобы оно содержало правильный 1-значный распакованный BCD результат.
Если при сложении получается десятичный перенос, регистр ah увеличивается на 1, и устанавливаются флаги CF и AF. Если десятичного переноса не было, флаги CF и AF снимаются, а регистр ah остаётся неизменным. В любом случае биты с 4 по 7 регистра al сбрасываются до 0.
Флаги AF и CF устанавливаются в 1, если корректировка приводит к переносу десятичной дроби; в противном случае они сбрасываются до 0. Флаги OF, SF, ZF и PF не определены.
Предположим, что регистр al содержит 510, (0516), регистр bl содержит 710, (0716). После выполнения add al, bl регистр al будет содержать 1210, (0С16). Затем выполняется инструкция aaa которая корректирует содержимое регистра al и в результате регистр ax содержит 010216. 5 + 7 = 12.
Инструкция AAA
Корректировка регистра AL после сложения.
AAA - Корректировка регистра AL после сложения
Корректирует сумму двух распакованных значений BCD для создания результата распаковки BCD. Регистр al является подразумеваемым исходным и целевым операндом для этой инструкции. Инструкция aaa полезна только тогда, когда она следует за инструкцией add, которая добавляет (двоичное сложение) два распакованных значения BCD и сохраняет результат в байтах в регистре al. Затем инструкция aaa корректирует содержимое регистра al таким образом, чтобы оно содержало правильный 1-значный распакованный BCD результат.
Если при сложении получается десятичный перенос, регистр ah увеличивается на 1, и устанавливаются флаги CF и AF. Если десятичного переноса не было, флаги CF и AF снимаются, а регистр ah остаётся неизменным. В любом случае биты с 4 по 7 регистра al сбрасываются до 0.
Флаги AF и CF устанавливаются в 1, если корректировка приводит к переносу десятичной дроби; в противном случае они сбрасываются до 0. Флаги OF, SF, ZF и PF не определены.
Предположим, что регистр al содержит 510, (0516), регистр bl содержит 710, (0716). После выполнения add al, bl регистр al будет содержать 1210, (0С16). Затем выполняется инструкция aaa которая корректирует содержимое регистра al и в результате регистр ax содержит 010216. 5 + 7 = 12.