Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: деление  (Прочитано 6982 раз)
0 Пользователей и 4 Гостей смотрят эту тему.
ЛюдMila
Гость
« : 20-06-2009 14:32 » new

в отладчике debug.exe следует вычислить A/B
A=620h, B=310h.
при выполнении кода (фрагмент)
...
mov ax,[bx] // в ax значение A
mov dx,[bx+2] // в dx значение B
idiv dx
...
происходит ошибка (приложение debug.exe закрывается).
не пойму, в чем ошибка?
или для операции деления при таких исходных данных следует использовать другой оператор, а не idiv, какой же?

(вычисляю в debug.exe, потому что так надо для контрольной работы Улыбаюсь)
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 20-06-2009 16:01 » 

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

              |   DX   ||   AX   |        |  AH   ||  AL   |
   До деления:|Ст.часть||Мл.часть|  После:|Остаток||Частное|
              |     Делимое      |
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Phodopus
Интересующийся

ru
Offline Offline

« Ответ #2 : 29-06-2009 12:31 » 

остается только добавить что DX:AX для 16-битового кода и EAX для 32х битового
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines