Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Как и умножение, деление чисел без знака и со знаком также реализуется двумя командами:
Деление целых без знака (divide): DIV ор
Деление целых со знаком (integer divide): IDIV ор
Первая из этих команд предназначена для деления беззнаковых целых чисел, а вторая - для деления знаковых чисел, в остальном же эти команды действуют одинаково:
деление слова на байт:
АН:=АХ mod op, AL:=AX div op (op: r8, m8)
деление двойного слова на слово:
DX:=(DX,AX) mod op, AX:=(DX,AX) div op (op: rl6, ml6)
Как видно, в этих командах местонахождение первого операнда (делимого) и результата фиксировано и потому явно не указывается. Указывается только второй операнд (делитель), который может находиться в регистре или в ячейке памяти, но не может быть непосредственным операндом.
При делении слова на байт делимое обязано находиться в регистре АХ, а делитель должен быть байтом. При делении двойного слова на слово делимое обязано находиться в двух регистрах - в DX (старшая часть делимого) и в АХ (младшая часть), а делитель должен иметь размер слова.
В области целых чисел "настоящее" деление невозможно, и в ПК под делением понимают получение сразу двух величин - неполного частного (div) и остатка (mod). Оба этих числа помещаются на место делимого: его старшая часть заменяется на остаток, а младшая - на неполное частное. Оба этих числа имеют один и тот же размер, совпадающий с размером второго операнда (делителя).
Если через функцию trunc (x) обозначить отбрасывание дробной части вещественного числа х, тогда операции div и mod определяются следующим образом:
а div b - trunc (a/b)
a mod b = а-b*(а div b)
Примеры:
13 div 4 =trunc (3.25)= 3 13 mod 4 =13-4*3 = 1
(-13)div 4 =trunc(-3.25)= -3 (-13)mod 4 =(-13)-4*(-3) = -1
13 div(-4) =trunc(-3.25)= -3 13 mod(-4) =13-(-4)*(-3) = 1
(-13)div(-4) =trunc(3.25)= 3 (-13)mod (-4) =(-13)-(-4)*3 = -1
И, наконец, отметим, что при выполнении команды деления возможно появление ошибки с названием "деление на 0 или переполнение". Она возникает в двух случаях:
MOV AX, 600
MOV BH, 2
DIV ВН; 600 div 2 = 300, но 300 не вмещается в AL
При такой ошибке ПК прекращает выполнение программы.
Дата публикования: 2014-12-08; Прочитано: 588 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!