Архив

Публикации с меткой ‘bugoga’

Странности

23 марта 2007 3 комментария

Странный эффект. Наберите в блокноте bugoga и сохраните в 1.exe потом запустите. Демосцена отдыхает — демка в 6 байт это сильно. =) Вообще мне казалось что в начале файла должно стоять mz что бы ОСь не ругалась.

UPD: Так работает не тока bugoga Но и bugoga2. A так все что начинается с bugoga. Иследуюя дальше получаем, что подобное поведение наблюдается с любым фаилом начинающимся на bug, а также на bu. Фаил с текстом bu не работает надо bu + еще что-нибудь.

‘b’ выглядит как инструкция:
bound ax,word ptr [bx+si]

которая означает проверку границ массива, где первый операнд — индекс массива, второй нижняя и верхняя граница массива (последовательно в памяти). Эмулятор доса (или дос) загружает эту хрень как com файл и исполняет. Далее зависит от мусора в регистрах. Если ax не попадает в границы, вызывается прерывание int5, которое обычно вешается на нажатие PrintScreen, экран распечатывается и процедура обработки прерывания возвращает управление опять на bound. Итог: эмулятор доса висит в вечном цикле, позиция курсора видимо меняется в обработчике int5.