Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > деление знаковых целых чисел


Автор: xRom2 23.5.2011, 19:07
знаковое число находится в dx:ax, надо разделить его на cx (тоже знаковое), но заранее известно что произойдет переполнение. Как разделить числа в два или более приемов чтобы получился корректный результат? 

Автор: 500mhz 25.5.2011, 01:44
когдаж вы бросите кодить в 16 битах? ))))


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

Автор: xRom2 25.5.2011, 21:08
Дак мне принцип нужен был, те же проблемы всплывут и при 32битной арифметике, и при 64битной, какая собственно разница? А фпу использовать и пришлось, ибо целочисленно разделить в общем случае одно число на другое - это такой код городить, что ну его фтопку.

Автор: Чупакабро 23.6.2011, 10:24
а как все-таки поделить двойное слово на двойное слово (без знака)?
не используя fpu и 32-битных регистров.
очень нужно

Автор: Mikl_ 25.7.2011, 10:40
Чупакабро, 
Алгоритм беззнакового деления с числа (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-разрядные

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)