Я хочу написать программу masm m86, которая вычисляет большие факториалы (результаты до 128 бит), но я не уверен, как это сделать. Я написал версию, которая вычисляет до 32 бит, как я могу ее изменить, чтобы она работала для больших чисел?Факториал для больших чисел
0
A
ответ
1
128 бит слишком большой для команды mul, что экономит только 64-битный результат (EDX (32 бит) + EAX (32 бит)).
Чтобы в первую очередь вам понадобилось 4 DWORDS памяти для хранения результата 128 бит. Затем вы должны заменить свой mul ebx;
на какой-то вызов процедуры, который может обрабатывать умножение на 128 бит. Код может быть примерно таким:
.data
;...
bignum dword 1, 0, 0, 0; initial answer = 0000 0000 0000 0001h
....
call largemul; replace for mul ebx
....
largemul proc;
mov ebx, 10 ;EBX = multiplier
mov eax, [bignum]
mul ebx ;EDX:EAX = EAX*EBX
mov [bignum], eax ;save result
mov ecx, edx ;save carried part in ECX
mov eax, [bignum+4]
mul ebx
add eax, ecx ;add carried part from previous multiplication
mov [bignum+4], eax
mov ecx, edx
mov eax, [bignum+8]
mul ebx
add eax, ecx
mov [bignum+8], eax
mov eax, [bignum+8]
mul ebx
add eax, ecx
mov [bignum+12], eax
largemul endp;
Смежные вопросы
- 1. Найти факториал больших чисел
- 2. Мультипликатор больших целых чисел (факториал)
- 3. Типы для больших чисел
- 4. Слишком много времени для больших чисел
- 5. Факториалы больших чисел
- 6. ASM печать больших чисел
- 7. Факториал большого числа
- 8. Сумма простых чисел для больших чисел
- 9. Первичная факторизация для больших чисел
- 10. вычисление Комбинация для больших чисел
- 11. CSS Кернинг для больших чисел
- 12. Факториал двоичных чисел, не так, как кажется
- 13. Поразрядное сравнение больших чисел
- 14. Сортировка больших чисел
- 15. C++ Обработка больших чисел
- 16. Суммирование больших чисел
- 17. Факторизация больших чисел
- 18. Сравнение больших чисел
- 19. Matlab: Сохранение больших чисел
- 20. Генерация больших случайных чисел
- 21. Факториал цикла
- 22. Факториал на языках семейства C
- 23. Модификация модуля больших чисел
- 24. Математическое представление больших чисел?
- 25. Отдел больших чисел
- 26. Отливки больших чисел
- 27. Modulo умножения больших чисел
- 28. Смещение больших чисел
- 29. C: Печать больших чисел
- 30. Вычитание больших целых чисел