Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Ассемблер. Прикол с bugoga

350
07 ноября 2009 года
cheburator
589 / / 01.06.2006
Приятель подсказал такой прикол: пишем в текстовом файле текст "bugoga", сохраняем и меняем расширение на com или exe. После запуска появляется ДОСовское чёрное окно и по нему бешено скачет курсор.
Дальнейшее исследование показало, что можно написать просто "bug".
Дизассемблер говорит: команда bound si, [dx+67h] (точно не помню, могу ошибаться).
Но всё-таки интересно, почему (1) прога не завершается, (2) курсор прыгает. Особенности обработчика int 5 в виртуальной дос-машине? Если да, то какие?
Также интересно, работает ли это в реальном ДОСе
252
09 ноября 2009 года
koderAlex
1.4K / / 07.09.2005
"если индекс меньше нижней границы или больше верхней , вызывается прерывание , причём адрес возврата указывает не на следующую команду , а на Bound , так что обработчик должен исправить значение индекса или границ , прежде чем выполнить Iret ." - так что всё правильно работает . )) неявный цыкл из-за неверных аргументов команды . сейчас эта команда употребляется редко .
350
09 ноября 2009 года
cheburator
589 / / 01.06.2006
Спасибо, уже разобрался, дело оказалось ещё интереснее.
http://www.codenet.ru/progr/dos/int_0005.php
Дело в путанице: разработчики проца из Intel честно считали, что int 05h должен обработывать выход за пределы массива, а разработчики BIOS сделали его PrintScreen-ом, в итоге bound вызывает 5-е исключение и печатает экран, а поскольку int 05h относится к типу "отказ", то возврат происходит опять к команде bound.
Всё-таки не совсем понятно, курсор-то почему бегает, это видимо особенность процедуры печати экрана... Я так понял, если запустить прогу в реальном ДОСе, то при наличии принтера он действительно будет печатать :) Вот вам и bugoga
252
09 ноября 2009 года
koderAlex
1.4K / / 07.09.2005
ошибка проектирования , ставшая артефактом . )
принтскрин в биосе - это тоже уже артефакт . )
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог