Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2012, 13:36   #1
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
По умолчанию Разный результат в отладчике и при запуске *.exe

В отладчике программа на каждом шаге работает безупречно, при запуске двойным щелчком по .exe работает некорректно

Программу приложил 1_v4.rar
pinkiller вне форума Ответить с цитированием
Старый 02.05.2012, 14:25   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

как показывает опыт, отладчик (к сожалению) всегда правильно иницилизирует (обнуляет) регистры.
в отличие от запуска через OS.

это раз.

во-вторых, при запуске через Far Commаnder получаю такое:
err2.png

из области интуиции - overflow ошибка часто возникает при делении, когда не очищены предварительно регистры.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.05.2012, 15:05   #3
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
По умолчанию

Регистры следует отчистить в самом начале программы или в начале каждого модуля?
pinkiller вне форума Ответить с цитированием
Старый 02.05.2012, 15:16   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

правильный ответ - везде, где это требуется. ваш К.О.

Смотрите, если Вы где-то используете регистр (даже не явно - как в случае операции деления) - то к моменту выполнения операции этот регистр должен быть проиницилизирован (нулём, или адресом памяти - это уже от регистра зависит).
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.05.2012, 15:22   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

любой, явно или не явно используемый регистр должен иметь значение перед применением.

причем не какое попало значение.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.05.2012, 15:27   #6
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
По умолчанию

А существует команда очистки регистра?
pinkiller вне форума Ответить с цитированием
Старый 02.05.2012, 15:40   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

нет понятия чистый регистр.
есть регистр имеющий известное значение(например ноль)
или имеющий мусор в себе.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.05.2012, 15:55   #8
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
По умолчанию

Спасибо большое)
Для очистки придумал делать
sub ax,ax, ;сейчас все корректно робит)
pinkiller вне форума Ответить с цитированием
Старый 02.05.2012, 16:34   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Для очистки придумал делать
sub ax,ax, ;сейчас все корректно робит)
имхо, лучше
Код:
 xor ax, ax
или банальное
Код:
 mov ax, 0
но, впрочем, это уже не важно!
Главное, что Вы нашли, где был косяк и устранили его.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
find_first_not_of выдает разный результат Torymo Помощь студентам 2 04.01.2012 09:14
разный результат Кристина133 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 13.05.2011 19:15
Модуль GRAPH портит русский при запуске .exe файла! Nemo-237 Паскаль, Turbo Pascal, PascalABC.NET 3 06.03.2011 22:59
Ошибка при запуске exe-ка Andrey85 Общие вопросы Delphi 10 31.10.2010 22:47
Как при запуске fpc.exe из консоли посмотреть лог ошибок компиляции? Cookson Паскаль, Turbo Pascal, PascalABC.NET 2 05.10.2010 18:33