ХАНДЫФАР
Инструкция AAD
Корректировка регистра AX перед делением
AAD - Корректировка регистра AX перед делением
AAD imm8 - Корректировка регистр AX перед делением на числовое основание imm8
Корректирует две распакованные цифры BCD (наименее значимую цифру в регистре al и наиболее значимую цифру в регистре ah) таким образом, чтобы операция деления, выполненная над результатом, давала правильное распакованное значение BCD. Инструкция aad полезна только тогда, когда она предшествует инструкции div, которая делит (двоичное деление) скорректированное значение в регистре ax на распакованное значение BCD.
Инструкция aad устанавливает значение в регистре al равным (al + (10 * ah)), а затем очищает регистр ah до 00h. Значение в регистре ax тогда равно двоичному эквиваленту исходного распакованного двузначного числа (основание 10) в регистрах ah и al.
Обобщённая версия этой инструкции позволяет корректировать две неупакованные цифры любой числовой базы, устанавливая байт imm8 в выбранную числовую базу (например, 08h для восьмеричной системы счисления, 0Ah для десятичной системы счисления или 0Ch для чисел с основанием 12). Мнемоника aad интерпретируется всеми ассемблерами как означающая корректировку значений ASCII (база 10). Чтобы скорректировать значения в другой базе чисел, инструкция должна быть закодирована вручную машинным кодом (D5 imm8).
Флаги SF, ZF и PF устанавливаются в соответствии с результирующим двоичным значением в регистре AL; флаги OF, AF и CF не определены.
Предположим, что регистр ax содержит (010716), регистр bl содержит 210, (0216). После выполнения aad регистр al будет содержать 1710, (1116), число 17 в шестнадцатеричном формате. Затем выполняется инструкция div которая выполняет деление значения в регистре al на значение в регистре bl. В результате регистр ax содержит 010816. В регистре al сохраняется частное от деления, а в регистре ah - остаток. 17 / 2 = 8, остаток - 1.
Инструкция AAD
Корректировка регистра AX перед делением
___________AAD - Корректировка регистра AX перед делением
___________AAD imm8 - Корректировка регистр AX перед делением на числовое основание imm8
Корректирует две распакованные цифры BCD (наименее значимую цифру в регистре al и наиболее значимую цифру в регистре ah) таким образом, чтобы операция деления, выполненная над результатом, давала правильное распакованное значение BCD. Инструкция aad полезна только тогда, когда она предшествует инструкции div, которая делит (двоичное деление) скорректированное значение в регистре ax на распакованное значение BCD.
Инструкция aad устанавливает значение в регистре al равным (al + (10 * ah)), а затем очищает регистр ah до 00h. Значение в регистре ax тогда равно двоичному эквиваленту исходного распакованного двузначного числа (основание 10) в регистрах ah и al.
Обобщённая версия этой инструкции позволяет корректировать две неупакованные цифры любой числовой базы, устанавливая байт imm8 в выбранную числовую базу (например, 08h для восьмеричной системы счисления, 0Ah для десятичной системы счисления или 0Ch для чисел с основанием 12). Мнемоника aad интерпретируется всеми ассемблерами как означающая корректировку значений ASCII (база 10). Чтобы скорректировать значения в другой базе чисел, инструкция должна быть закодирована вручную машинным кодом (D5 imm8).
Флаги SF, ZF и PF устанавливаются в соответствии с результирующим двоичным значением в регистре AL; флаги OF, AF и CF не определены.
Предположим, что регистр ax содержит (010716), регистр bl содержит 210, (0216). После выполнения aad регистр al будет содержать 1710, (1116), число 17 в шестнадцатеричном формате. Затем выполняется инструкция div которая выполняет деление значения в регистре al на значение в регистре bl. В результате регистр ax содержит 010816. В регистре al сохраняется частное от деления, а в регистре ah - остаток. 17 / 2 = 8, остаток - 1.