0 / 0 / 0
Регистрация: 14.05.2019
Сообщений: 22
|
||||||
1 | ||||||
TASM Возникает ошибка "Деление на ноль", когда на ноль ничего и нигде не делится09.06.2019, 11:19. Показов 2786. Ответов 2
Метки нет (Все метки)
Написал программу, которая выводит на экран координаты клика мыши.
При добавлении куска кода программа начинает работать очень странно: теперь в левой части экрана координата x выводится верно, но только до значения 255. Если кликнуть на часть экрана, которая находится правее программа "ломается". В отладчике при клике в этой области выдает ошибку: divided by zero. Помогите пожалуйста найти проблему
0
|
09.06.2019, 11:19 | |
Ответы с готовыми решениями:
2
Возникает деление на ноль Сделать, чтобы при попытке деления на ноль, выводилось сообщение: «Деление на ноль» Тригонометрическая функция: деление на ноль, если ничего не вводить в TextBox Деление на ноль (хотя я не делю на ноль) ошибка деление на ноль |
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,048
|
|
09.06.2019, 11:40 | 2 |
Сообщение было отмечено keldranace как решение
Решение
И это естественно. Команда div генерирует прерывание от деления на 0 не только при делении на 0, но и еще если частное не влезает в тот регистр куда должно помещаться. Ты у себя в коде использовал такое div , что частное - байт. Максимальное значение байта 255. Максимальное значение байта 255. Как только результат деления координаты на 2 становился больше 255 команда div генерировала прерывание по делению на 0, поскольку частное не влезало в байт.
Добавлено через 2 минуты Ты кстати командой div dl получаешь в al частное, а в ah остаток. А потом конкатенацию всего этого засовываешь в cx якобы это координата деленная пополам. А это частное к которому приставлен остаток. Добавлено через 53 секунды Тупо почитай что на что делит div и куда сует результаты в двух случаях - когда делитель байт и когда делитель слово. Тебе надо было использовать вариант когда делитель - слово. Тогда и частное - слово и любая координата на экране в него влезет. Добавлено через 1 минуту А вообще весь тобой закомментированный кусочек заменяется на одну команду shr cx,1 и никакого тебе деления на ноль. Потому-что сдвиг беззнакового на бит вправо это и есть деление на два.
4
|
0 / 0 / 0
Регистрация: 14.05.2019
Сообщений: 22
|
|
09.06.2019, 11:57 [ТС] | 3 |
Спасибо тебе огромное.
Ведь и все вроде знаю, и команду shr, и то, как div ведет себя в зависимости от размера делителя, но когда дело доходит до практики то все забывается. Не знаю, что бы делал без тебя
0
|
09.06.2019, 11:57 | |
09.06.2019, 11:57 | |
Помогаю со студенческими работами здесь
3
Ошибка - деление на ноль Деление на ноль - ошибка Ошибка деление на ноль Ошибка: деление на ноль Ошибка - деление на ноль Ошибка деление на ноль Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |