Поиск:

Ответ в темуСоздание новой темы Создание опроса
> деление знаковых целых чисел, 16 битными регистрами 32битное число 
:(
    Опции темы
xRom2
Дата 23.5.2011, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 10.5.2011

Репутация: нет
Всего: нет



знаковое число находится в dx:ax, надо разделить его на cx (тоже знаковое), но заранее известно что произойдет переполнение. Как разделить числа в два или более приемов чтобы получился корректный результат? 
PM MAIL   Вверх
500mhz
Дата 25.5.2011, 01:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



когдаж вы бросите кодить в 16 битах? ))))


пс
а fpu задействовать нельзя?


--------------------

PM MAIL ICQ   Вверх
xRom2
Дата 25.5.2011, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 10.5.2011

Репутация: нет
Всего: нет



Дак мне принцип нужен был, те же проблемы всплывут и при 32битной арифметике, и при 64битной, какая собственно разница? А фпу использовать и пришлось, ибо целочисленно разделить в общем случае одно число на другое - это такой код городить, что ну его фтопку.
PM MAIL   Вверх
Чупакабро
Дата 23.6.2011, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 27.2.2007

Репутация: нет
Всего: 4



а как все-таки поделить двойное слово на двойное слово (без знака)?
не используя fpu и 32-битных регистров.
очень нужно
--------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00459B8B in module 'Project1.exe'. Read of address 0000019C'. Process stopped. Use Step or Run to continue.
PM MAIL   Вверх
Mikl_
Дата 25.7.2011, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 6
Всего: 14



Чупакабро
Алгоритм беззнакового деления с числа (c*10000h+d) на число (a*10000h+b) заключается в следующем. Вычислить такие q и r, что c=a*r+q  (r частное от деления c на a, а q остаток). 
равенство c=a*r+q означает, что c*10000h+d=(a*r+q)*10000h+d=
r*(a*10000h+b)+q*10000h+d−r*b

Число q*10000h+d−r*b считается остатком первоначального деления; если оно отрицательно, следует производить повторяющийся декремент r и связанный с этим пересчет q до тех пор, пока остаток q*10000h+d−r*b не станет положительным
Те же рассуждения используют при делении 64- и 128-разрядных чисел на 64- и 128-разрядные

Это сообщение отредактировал(а) Mikl_ - 8.8.2011, 09:07
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0984 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.