1 / 1 / 1
Регистрация: 10.01.2016
Сообщений: 58
|
||||||
1 | ||||||
Деление даёт неверный ответ, в чем ошибка?27.01.2016, 19:03. Показов 2942. Ответов 12
Метки нет (Все метки)
0
|
27.01.2016, 19:03 | |
Ответы с готовыми решениями:
12
Деление даёт неверный ответ Чем занят порт 80, netstat -ano дает непонятный ответ Где ошибка в программе? Исправьте, пожалуйста! Программа выдает неверный ответ! Неверный размер массива. в чем ошибка? |
Хочу в Исландию
1041 / 840 / 119
Регистрация: 10.11.2010
Сообщений: 1,630
|
||||||
27.01.2016, 19:47 | 2 | |||||
В Вашем случае в строке 5 производится попытка деления edx:eax на ebx. Что при этом находится в edx? Если хотите делить только eax, то напишите перед idiv вот это:
0
|
1 / 1 / 1
Регистрация: 10.01.2016
Сообщений: 58
|
|
27.01.2016, 20:11 [ТС] | 3 |
В edx - 0, но даже с этой строкой тоже ответ неверный(такой же), после idiv обновляются регистры eax и edx, насколько я понимаю это число и остаток, но они неверные
0
|
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
|
|
27.01.2016, 21:11 | 4 |
Сообщение было отмечено AnySk как решение
Решение
Дык, перед idiv команду cdq поставить не пробовали?
1
|
Хочу в Исландию
1041 / 840 / 119
Регистрация: 10.11.2010
Сообщений: 1,630
|
|
27.01.2016, 22:07 | 5 |
0
|
1 / 1 / 1
Регистрация: 10.01.2016
Сообщений: 58
|
|
27.01.2016, 22:32 [ТС] | 6 |
собственно после перемножения в eax "FFDA 8000", а в ebx "B4", если первое на второе делить, то на калькуляторе получается '-13,653" или "FFFF CAAB(но в этом я не уверен, просто не знаю можно ли дробное в шестнадцатиричке так написать)" , а на второй картинке видно, что ничего похожего
0
|
Хочу в Исландию
1041 / 840 / 119
Регистрация: 10.11.2010
Сообщений: 1,630
|
|
28.01.2016, 01:33 | 7 |
Перед делением в eax 248000h судя по результатам. Можно скачать FASM, он бесплатный, и видно полностью 32 разряда в регистрах.
cdq Вам подходит, он делает то же самое что mov edx,0.
1
|
1 / 1 / 1
Регистрация: 10.01.2016
Сообщений: 58
|
||||||
28.01.2016, 09:48 [ТС] | 8 | |||||
я тут нашел более новую версию debugger с 32 регистрами и оказалось, что
при переносе из стека в dword в старшие разряды вместе с числом переносились какие-то символы решил проблему так
0
|
1 / 1 / 1
Регистрация: 10.01.2016
Сообщений: 58
|
|
28.01.2016, 09:55 [ТС] | 9 |
но проблема с делением так и осталась
0
|
Terminator of naked apes
832 / 139 / 34
Регистрация: 13.02.2015
Сообщений: 328
|
|
28.01.2016, 10:37 | 10 |
Не слишком ли категоричное утверждение (а если EAX < 0, например ;о)?
Добавлено через 8 минут Скорее всего, что в параметре, описанном как двойное слово (4 байта), ты передаёшь слово (2 байта). Копни вызывающий код, например ;о)
1
|
Хочу в Исландию
1041 / 840 / 119
Регистрация: 10.11.2010
Сообщений: 1,630
|
|
28.01.2016, 17:53 | 11 |
Прикрепите картинку до и после idiv. KyberMax прав, перед idiv надо cdq ставить, у Вас ведь теоретически и отрицательное число может находиться в eax.
1
|
1 / 1 / 1
Регистрация: 10.01.2016
Сообщений: 58
|
|
28.01.2016, 18:15 [ТС] | 12 |
я не уверен, может это связанно с различными методами деления слова на байт, слова на слово и т. д. , но я так и не разобрался так это или нет
0
|
1 / 1 / 1
Регистрация: 10.01.2016
Сообщений: 58
|
|
28.01.2016, 18:26 [ТС] | 13 |
0
|
28.01.2016, 18:26 | |
28.01.2016, 18:26 | |
Помогаю со студенческими работами здесь
13
Умножение и деление(В чем ошибка) В чем может быть ошибка. Неверный синтаксис команды, ассемблер Скажыте в чём проблема??Ошибка деление на 0 В чем ошибка, не считает...ответ выдает по нулям(((( Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |