| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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-разрядные |