ХАНДЫФАР
Инструкция AAS
Корректировка регистра AL после вычитания
AAS - Корректировка регистра AL после вычитания
Корректирует результат вычитания двух распакованных значений BCD для создания распакованного результата BCD. Регистр al является подразумеваемым исходным и целевым операндом для этой инструкции. Инструкция aas полезна только тогда, когда она следует за инструкцией sub, которая вычитает одно распакованное значение BCD из другого и сохраняет результат в байтах в регистре al. Затем инструкция aaa корректирует содержимое регистра al таким образом, чтобы оно содержало правильный 1-значный результат распаковки BCD.
Если в результате вычитания был получен десятичный перенос, регистр ah уменьшается на 1, и устанавливаются флаги CF и AF. Если десятичный перенос не произошёл, флаги CF и AF снимаются, а регистр ah остаётся неизменным. В любом случае регистр al остаётся с четырьмя верхними битами, установленными в 0.
Флаги AF и CF устанавливаются равными 1, если имеется десятичное значение; в противном случае они сбрасываются до 0. Флаги OF, SF, ZF и PF не определены.
Предположим, что регистр ax содержит распакованное значение 1410, (010416). После выполнения sub al, 5 регистр ax (01FE16), число 51010. После корректировки содержимого регистра al, значение регистра ax будет (000916). 14 - 5 = 9.
Инструкция AAS
Корректировка регистра AL после вычитания
AAS - Корректировка регистра AL после вычитания
Корректирует результат вычитания двух распакованных значений BCD для создания распакованного результата BCD. Регистр al является подразумеваемым исходным и целевым операндом для этой инструкции. Инструкция aas полезна только тогда, когда она следует за инструкцией sub, которая вычитает одно распакованное значение BCD из другого и сохраняет результат в байтах в регистре al. Затем инструкция aaa корректирует содержимое регистра al таким образом, чтобы оно содержало правильный 1-значный результат распаковки BCD.
Если в результате вычитания был получен десятичный перенос, регистр ah уменьшается на 1, и устанавливаются флаги CF и AF. Если десятичный перенос не произошёл, флаги CF и AF снимаются, а регистр ah остаётся неизменным. В любом случае регистр al остаётся с четырьмя верхними битами, установленными в 0.
Флаги AF и CF устанавливаются равными 1, если имеется десятичное значение; в противном случае они сбрасываются до 0. Флаги OF, SF, ZF и PF не определены.
Предположим, что регистр ax содержит распакованное значение 1410, (010416). После выполнения sub al, 5 регистр ax (01FE16), число 51010. После корректировки содержимого регистра al, значение регистра ax будет (000916). 14 - 5 = 9.