![]() |
|
![]() ![]() ![]() |
|
xRom2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 10.5.2011 Репутация: нет Всего: нет |
знаковое число находится в dx:ax, надо разделить его на cx (тоже знаковое), но заранее известно что произойдет переполнение. Как разделить числа в два или более приемов чтобы получился корректный результат?
|
|||
|
||||
500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: нет Всего: 14 |
когдаж вы бросите кодить в 16 битах? ))))
пс а fpu задействовать нельзя? -------------------- |
|||
|
||||
xRom2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 10.5.2011 Репутация: нет Всего: нет |
Дак мне принцип нужен был, те же проблемы всплывут и при 32битной арифметике, и при 64битной, какая собственно разница? А фпу использовать и пришлось, ибо целочисленно разделить в общем случае одно число на другое - это такой код городить, что ну его фтопку.
|
|||
|
||||
Чупакабро |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 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. |
|||
|
||||
Mikl_ |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm: Общие вопросы" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |