Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Asm для начинающих > Команда div |
Автор: Tiglon 1.4.2013, 20:52 | ||||
Доброго времени суток. Мое задание состоит в том что бы вывести следующий високосный год от текущего. Вот к чему я пришел
Так как мы с преподавателем дошли до согласия что для проверки високосный год или нет достаточно поделить его на 4. Если делиться без остатка он високосный. Поэтому решил использовать команду div. Но возникла вот какая проблема. Вот в этой части кода.
Результат мне выдавало 2004 или 2018. Когда я проверял на дебаггере почему так я заметил что в регистре bx у мена находится не 4 как мне нужно а 2004 так как сначала я в него заношу текущий год. Сначала я решил обнулить регистр bx перед записью в него числа 4 на что мне выдало Divide overflow. Проверяя на дебаггере я увидил что все работает правильно но не понял причины переполнения. После решил по отдельности записать в bh 00 а в bl 04 на что получил тот же результат. Объясните пожалуйста почему так ? Почему я не могу выполнить деление ? Заранее очень благодарю за помощь. |
Автор: Tiglon 1.4.2013, 21:43 | ||||
Все дело в том что когда я использую bl то пишет Divide overflow. А вот если использовать bx то выдает результат 2018. |
Автор: 586 1.4.2013, 21:55 |
При таком числе - да. Используй команду DIV BX. Остаток будет в регистре DX. |
Автор: Tiglon 1.4.2013, 22:13 |
Оу. В результате получил что-то новенькое )) Буду сейчас пробовать. Огромное спасибо ![]() |