0 / 0 / 0
Регистрация: 09.03.2015
Сообщений: 49
|
||||||
1 | ||||||
Перемножить два больших числа26.04.2015, 15:53. Показов 3915. Ответов 26
Метки нет (Все метки)
Проблема состоит в том что надо перемножить два больших числа(из инструментов у меня lzasm+insight и всё это под freedos-oм)
https://yadi.sk/i/Eva3mnUzgFdVv Вопрос правильно ли идёт умножение двух чисел 0B5E0*0C137
0
|
26.04.2015, 15:53 | |
Ответы с готовыми решениями:
26
Перемножить два шестнадцатеричных числа Перемножить два числа Передать в макрос два списка и перемножить 1 элемент из 1-го списка с 1 эл. из 2-го, потом 2 и т.д. Получить из массива два других массива чисел больших 5 и остальных |
0 / 0 / 0
Регистрация: 09.03.2015
Сообщений: 49
|
|
27.04.2015, 10:52 [ТС] | 21 |
Ethereal, а почему так же не получается с делением(div), отладчик вообще вылетает, хоть числа я не менял!!
0
|
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
|
|
27.04.2015, 11:32 | 22 |
А ты улови фишку.
Когда ты умножаешь два 16-разрядных числа, то результат 32-разрязный. Поэтому он и распихивается по двум регистрам. А когда ты делишь нужно 32-разрядное делить на 16-разрядное. Команда div bр , к примеру, поделит 32-х разрядное число в регистровой паре dx:ax на bp В результате частное окажется в ax, а остаток в dx Добавлено через 2 минуты mov ax, 0B5E0h mov bp, 0C137h mul bp ;в результате DX=8944h AX=0F320h div bp ;в результате AX=0B5E0h DX=0
1
|
0 / 0 / 0
Регистрация: 09.03.2015
Сообщений: 49
|
||||||
27.04.2015, 14:07 [ТС] | 23 | |||||
Ethereal, всё равно бредняк выходит, при делении двух чисел, отладчик крашится
0
|
Ушел с форума
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
|
|
27.04.2015, 14:28 | 24 |
4ePtb,
число в DX перед делением всегда должно быть меньше делителя, команды div edx/div dx/div ah всегда приведут к переполнению результата и сообщению "деление на 0"
1
|
0 / 0 / 0
Регистрация: 09.03.2015
Сообщений: 49
|
||||||
27.04.2015, 15:52 [ТС] | 25 | |||||
Mikl___, Ethereal,
с числами действительно была проблема, это проверил Operand1>Operand2, Operand3>Operand4 Добавлено через 58 минут Всем спасибо, всё решилось!
0
|
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
|
|
27.04.2015, 15:55 | 26 |
Дык, в чём грабли?
8944F320h = 2302997280. И да, выкладывайте картинки на форум, а то этот я-диск верещит, что у меня слишком старый браузер.
0
|
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
|
|
27.04.2015, 20:38 | 27 |
Вот это
mov eax, Operand1 mov dx, Operand2 div dx должно приводить к краху в любом случае. Потому-что ты число Operand2:Operand1 = DX:AX = 10000h*DX + AX = 10000h*Operand2 + Operand1 делишь на DX = Operand2. Результатом деления должно быть частное 10000h и остаток Operand1. Но частное 10000h не влезает в регистр размером в слово. Так-что такое деление карается прерыванием Divide by Zero. Добавлено через 1 минуту Вот это mov eax, Operand1 mov cx, Operand2 div cx А тут у тебя регистр DX никак не определен. А команда div cx делит DX:AX на CX. Деление неизвестного числа на Operand2 вполне может привести к известным результатам - Divide by Zero.
0
|
27.04.2015, 20:38 | |
27.04.2015, 20:38 | |
Помогаю со студенческими работами здесь
27
Есть два больших числа, записанных в string. Необходимо задать ограничения на два эти числа Перемножить два целых числа Перемножить два сверхдлинных числа из файла Как перемножить два числа, сгенерированных случайно? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |