Turbo DebuggerАссемблер

Может быть, Вам когда-либо приходилось слышать подобную фразу: "Ассемблер - это геморрой". Пусть она не вводит Вас в заблуждение - всё так и есть. Писать на ассемблере тяжело, программы с ошибками могут прочно "вешать" систему и приводить к неожиданным результатам (например, у меня один раз получилась такая ситуация, что Windows выдала сообщение "Ошибка записи в порт LPT1", хотя программа должна была вывести на экран картинку), но, благодаря гибкости этого языка, на нём можно писать такие программы, которые были бы не под силу языкам высокого уровня. К тому же программа на ассемблере, если она написана правильно, может иметь быстродействие, несравнимое с аналогичной программой на языке высокого уровня. Для примера скажу, что EXE файл игры Quake I написан на ассемблере. Ниже приведено несколько программ (естественно, на ассемблере) которые, по моему мнению, представляют наибольший интерес:


Осциллограммма...

AUTOINIT.ZIP - 2168 байт

Программа рисует на экране приблизительную форму сигнала, поступающего на вход музыкальной карты с микрофона. Работает с музыкальными картами, совместимыми с SoundBlaster с базовым портом ввода-вывода от 210h до 280h (конкретный порт выбирается автоматически). IRQ - любой (программа его всё равно не использует. DMA - тоже любой. Если микрофон не подключён, то на экране будет только прямая линия.


Часы...

CLOCK.ZIP - 4872 байта

Архив содержит две программы часов. Одна рисует красивые часы с цифровым индикатором и текстурами на заднем плане. Другая представляет собой резидентные часы. Запускается из-под DOS, и выводит в левом верхнем углу текущее время (как часы в Нортоне).


Слэш...

SLASH.ZIP - 719 байт

Программа SLASH представляет собой резидентную программу, которая "вращает" символы слэша на экране (по типу как в Dr. Web во время теста). Исполнительная часть программы - .COM файл занимает рекордно малое количество байт - 48. История программы очень интересная. Поспорил я с одним чуваком, что напишу программу для вращения слэшей, занимающую 48 или менее байт. Сначала он (чувак) написал программу размером 96 байт, потом свёл до 80 байт. Я же для начала уложился в 57 байт. Далее у него было 56 байт и я обломался . Но ненадолго - в тот же день написал представленную здесь программу размером в 48 байт!

Предупреждение. Программа не работает на машинах ниже 386.

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


Клавиатура...

KEYLOG.ZIP - 1022 байта

Эта программка расчитана на легкомысленных админов, которые на скорую руку запускают login.exe и набирают пароль на машине пользователя... Программа записывает все символы (но не расширенные ASCII коды!) в файл C:\KEYLOG.LOG. Имя и путь к файлу можно варьировать (для этого нужно просто изменить соответствующую строку исходника). Программа открывает файл для добавления после ввода каждого десятого символа.


Клавиатура...

SWAPFUNC.ZIP - 876 байт

Программа "меняет местами" функциональные клавиши в таком порядке: нажимаете F1, нажимается F10, нажимаете F2 нажимается F9 и т. д. Также "меняет местами" клавиши Enter и Esc. Можно подсунуть кому-нибудь в autoexec и долго развлекаться в Нортоне.


Клавиатура...

FLUSH.ZIP - 473 байта

Данная программка зажигает по очереди лампочки клавиш NumLock, CapsLock и ScrollLock, по Esc гасит все лампочки и вываливается в DOS.


Клавиатура...

CTRLDEL.ZIP - 1310 байт

Эта программа ещё веселей - при нажатии на знаменитые Ctrl + Alt + Del она выдаёт сообщение "Ctr + Alt + Del Pressed, System halted" и вешает систему, поможет только Reset. Не используйте её из Windows - Windows сначала передаёт управление системному обработчику, а затем пользовательскому обработчику в режиме виртуального 86-го, так что Windows всё равно перехватит Ctr + Alt + Del .


Клавиатура...

KBTYPE.ZIP - 7110 байт

Вот, пожалуй, самая забавная программа из этого раздела. Она с помощью int 16h, ah = 05 эмулирует нажатия клавиш на клавиатуре. Можете только попытаться представить себе что будет, если её запустить в Нортоне! Например, она может через случайные промежутки времени вызывать нажатия функциональных клавиш, Enter, Esc, и других в некоторой хитрой последовательности, вызывая при этом копирование, УДАЛЕНИЕ, перемещение файлов, создание произвольных директорий, правка и запуск программ и т. д. У меня на втором компьютере она чуть пол-винта не стёрла а директорию LNG\BP\BIN я потом долго искал.

С дисками тоже можно немного позабавиться... Вот, например, int 13h - сервис ROM BIOS для работы с диском на низком уровне (чтение, запись секторов, форматирование дорожек...). Перехват этого прерывания зачастую используется для на писания различных драйверов. Пример тому SMARTDRV, RAMDRIVE и др. RAMDRIVE перехватывает int 13h и затем, при обращении к оному "читает сектора" из оперативной памяти...


Дискета...

DISKERR.ZIP - 1028 байт

Данная программа действует следующим образом: при попытке обращения к диску A она эмулирует, системную ошибку, выдаёт значения регистров на экран (типа как QEMM), выдаёт сообщение "System halted", выполняет

CLI

@1: JMP @1

(можно было бы так: CLI HLT, но первый способ более наглядный) и вешает систему.

Кто непосвящён в ассемблер, для понимания вышенаписанных строчек может заглянуть сюда.


Два компьютера, соединённых по COM портам ...

TERM99.ZIP - 5523 байта

Полезная утилита. Представляет собой программу терминала для связи по COM портам. Сначала писалась в качестве курсового проекта по ассемблеру, но потом оказалось, что задание на курсовой проект несколько другое... Может работать с COM1, COM2, COM3, COM4, но последние два порта аналогичны первым двум. Прекрасно работает на скоростях от 2400 до 115200 (через RS-232), или может даже работать с модемом, если он стоит на соответствующем порте. В этом случае нужно только знать команды модема для набора номера и т.д. Скорости передачи данных на двух компьютерах должны быть одинаковыми, иначе будут выводиться непонятные символы.

 

Возврат на главную страницу

Copyright © 1999 by HackMaster

Hosted by uCoz