Студопедия

Главная страница Случайная лекция


Мы поможем в написании ваших работ!

Порталы:

БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика



Мы поможем в написании ваших работ!




Переполнения и прерывания

Читайте также:
  1. Аппаратные прерывания
  2. Переполнения
  3. Программные прерывания

Повышение производительности

Деление двойного слова на слово

Деление слова на байт

Деление

Операция деления для беззнаковых данных выполняется коман­дой DIV, а для знаковых — ID1V. Ответственность за подбор подходящей команды лежит на программисте.

Существуют две основные операции деления:

 

Делимое находится в регистре АХ, а делитель — в байте памяти или а однобайтовом регистре. После деления остаток получается в реги­стре АН, а частное — в AL. Так как однобайтовое частное очень мало (максимально +255 (шест.РР) для беззнакового деления и +127 (шест.ТР) для знакового), то данная операция имеет ограниченное ис­пользование.

Делимое находится в регистровой паре DX:AX, а делитель — в сло­ве памяти или а регистре. После деления остаток получается в регистре DX, а частное в регистре АХ. Частное в одном слове допускает макси­мальное значение +32767 (uiecT.FFFF) для беззнакового деления и + 16383 (iuecT.7FFF) для знакового.

В единственном операнде команд DIV и IDIV указывается дели­тель. Рассмотрим следующую команду:

DIV DIVISOR

В случае, если поле DIVISOR определено как байт (DB), то опера­ция предполагает деление слова на байт. В случае, если поле DIVISOR определено как слово (DW), то операция предполагает деление двойного слова на слово.

При делении, например, 13 на 3, получается результат 4 1/3. Част­ное есть 4, а остаток — 1. Заметим, что ручной калькулятор выдает в этом случае результат 4,333.... Значение содержит целую часть (4) и дробную часть (,333). Значение 1/3 и 333... есть дробные части, в то время как 1 есть остаток от деления.

Беззнаковое деление: Команда DIV

Команда DIV делит беззнаковые числа.

Знаковое деление: Команда IDIV

Команда IDIV (Integer Divide) выполняет деление знаковых чисел.

При делении на степень числа 2 (2,4, и так далее) более эффектив­ным является сдвиг вправо на требуемое число битов. В следующих при­мерах предположим, что делимое находится в регистре АХ:

Деление на 2:

 

SHR AX,1 Деление на 8:

MOV CL,3 SHR AX.CL

Используя команды DIV и особенно IDIV, очень просто вызвать переполнение. Прерывания приводят (по крайней мере в системе, ис­пользуемой при тестировании этих программ) к непредсказуемым ре­зультатам. В операциях деления предполагается, что частное значитель­но меньше, чем делимое.

Деление на ноль всегда вызывает прерывание. Но деление на 1 ге­нерирует частное, которое равно делимому, что может также легко вы­звать прерывание.

Рекомендуется использовать следующее правило: если делитель — байт, то его значение должно быть меньше, чем левый байт (АН) делите­ля: если делитель — слово, то его значение должно быть меньше, чем ле­вое слово (DX) делителя.

При использовании команды IDIV необходимо учитывать тот факт, что либо делимое, либо делитель могут быть отрицательными, а так как сравниваются абсолютные значения, то необходимо использовать команду NEG для временного перевода отрицательного значения в по­ложительное.


<== предыдущая страница | следующая страница ==>
Умножение двойного слова на двойное слово | Преобразование знака

Дата добавления: 2014-03-11; просмотров: 446; Нарушение авторских прав




Мы поможем в написании ваших работ!
lektsiopedia.org - Лекциопедия - 2013 год. | Страница сгенерирована за: 0.002 сек.