Команды деления целых чисел
В операции деления так же, как и при умножении учитывается знак, а правило расположения операндов отражается в таблице. При делении может возникать прерывание ”деление на 0”. Такой результат может получиться не только, когда делитель равен 0, но и в следующих случаях: 1) при умножении чисел без знака для ситуации первой строки таблицы делимое более чем в 256 раз больше делителя, 2) при умножении чисел без знака для ситуации второй строки таблицы делимое более чем в 65636 раз больше делителя, 3) при делении чисел со знаком для ситуации первой строки таблицы делимое более чем в 128 раз больше значения делителя, 4) при делении чисел со знаком для ситуации второй строки таблицы делимое более чем в 32768 раз больше значения делителя. Процесс выполнения деления двух неупакованных BCD-чисел может быть представлен в формате неупакованных BCD-чисел. Для этого перед операцией деления в регистре АХ получают две неупакованные цифры делимого. Далее командой AAD преобразуется число в двоичное, которое затем является делимым в операции DIV. Причем в дальнейшей операции DIV двоичное число делится на неупакованную BCD-цифру, находящуюся в байтовом регистре или в байтовой ячейке памяти. Результат операции получается так, как описано первой строкой таблицы. Понятно, что с применением этих команд можно выполнять очень простые операции деления, но команду AAD можно использовать и в контексте преобразования упакованного (или неупакованного) десятичного числа из диапазона 00-99 в двоичный эквивалент.
|