Ниже представлены кое-какие мои студенческие наработки на языке ассемблера. В те годы мне нравилось возиться с TASM, пытаться общаться с аппаратурой на уровне портов ввода-вывода. Возможно, что-то из приведённого ниже окажется кому-то полезным. Со временем я размещу здесь код по переходу в защищённый режим и драйвер клавиатуры для оного, когда дойдут руки привести его в божеский вид, а пока только это.
Во многих файлах, приведённых ниже, используются вспомогательные макросы, описанные в файле commonib.inc. Кроме того, в своих программах я старался стандартизировать использование имён переменных, констант, процедур и макросов, зашифровывая в нескольких буквах назначение идентификатора, его тип и принадлежность тому или иному файлу. (С венгерской нотацией я тогда ещё не был знаком.) Не могу сказать, что везде придерживался этих соглашений, но во многих местах это вам поможет разобраться.
Здесь описание макросов, а также правила, по которым формируются имена в приведённых ниже программах.
А здесь сам файл макросов commonib.inc.
Здесь приведено описание контроллера прерываний 8259A и высокоуровневых макросов по его программированию. Описание работы контроллера практически полностью заимствовано из книги [1]. Мной составлены только макросы для программирования контроллера и обработки прерываний.
Здесь находится сам файл макросов irq.def.
Вот описание системных портов AT-класса, а также высокоуровневых макросов по работе с ними. Через порты обеспечивается работа с различными системными устройствами клавиатурной, таймером и CMOS. Запрещаются и разрешаются немаскируемые прерывания, а также (на процессорах 486 и выше) обеспечивается задержка времени при обмене данными с портами ввода-вывода.
Это файл макросов sysports.def для работы с системными портами.
Здесь приведено описание контроллера клавиатуры и AT-клавиатуры, а также высокоуровневых макросов по работе с ней. Описание технической стороны работы клавиатуры практически полностью заимствовано из книги [1].
Сам файл макросов kbd.def, находится здесь.
Это макросы для ленивых, кому не хочется писать код, а просто настроить процедуры
Регистры не сохраняются практически ни где, сделано это в целях максимальной оптимизации кода
Не выполняется дефрагментация, т. к. очень из-за того, что списки могут ссылаться друг на груга довольно произвольно, учесть все ссылки довольно сложно.
Описание макросов для работы с кучейПриведённые ниже программы по сути являются примерами использования
литературного программирования для решения практических задач.
Исходные тексты находятся в файлах с расширением web
.
Чтобы их откомпилировать, вам понадобятся
сами средства литератруного программирования, которые можно найти по адресу
tex/literate.htm,
а также компилятор языка паскаль, который можно скачать по адресу
www.freepascal.com.
Программа htm2php преобразует html-текст в строки, пригодные для вставки в программу php. Это может быть полезно для вставки всевозможных счётчиков вроде liveinternet, yandex.метрика и т. п., блоков рекламы, а также других текстов, которые вам нужно разместить на всех страницах вашего сайта. Подобного рода вставку проще всего делать с помощью php-скриптов, особенно это чувствуется, когда хочется что-то поменять сразу на всех страницах сайта.
Это консольная программа. Текст html, который вам нужно преобразовать, должен
быть сохранён в простом текстовом файле с восьмибитной кодировкой.
В командной строке набираете htm2php и через пробел
имя файла.
Итог своей работы htm2php записывает в текущем каталоге в файле,
имя которого то же, что и у входного, но к нему
добавляется расширение «.php»
.
Для htm2php кодировка не важна, однако при использовании unicode двухбайтовые
коды символов могут содержать в отдельных своих байтах значения,
совпадающие с кодами кавычек и других знаков, требующих особою обработку.
Программа может использоваться для пакетной обработки файлов.Она возвращает значение в переменной окружения операционной системы %errorlevel%. Если не было ошибок, то операционной системе возвращается код завершения 0. Если была ошибка, то код завршения 1.
Здесь можно посмотреть исходный текст htm2php, а также скачать rar-архив с исходным web-файлом и откомпилированным исполняемым файлом. Почти полностью программирование осуществлялось на русском языке.
В основном, мои интересы к низкоуровневому программированию ограничивались процессорами 80386-го семейства и IBM-совместимых ЭВМ, (других у меня под руками просто ни когда не было, ZX Spectrum — не в счёт). Наиболее ценным источником сведений об устройстве ПК для меня послужила книга
[1] Руководство по архитектуре IBM PС AT / Ж.К. Голенкова, А.В. Заболоцкий, М.Л. Мархасин и др.; Под общ. ред. М.Л. Мархасина. — Минск: ООО «Консул», 1992. — 949 c.: ил.
некоторые разделы которой, как мне кажется, могут оказаться полезными и сегодня. В ней описаны различные чипсеты вплоть до машин, построенных на базе 486-х процессоров.
Ещё одна неплохая книга
[2] Программирование на аппаратном уровне: специальный справочник. 2-е изд./В. Кулаков. — СПб.: Питер, 2003. — 848 с.: ил.
В ней довольно подробно рассматриваются практические вопросы программирования более современной аппаратуры, в том числе PCI- и USB-устройств. Но в отличие от [1] аппаратный уровень (регистры устройств) рассматривается не очень подробно, о некоторых вещах не говорится ни слова (например, о наличии третьего режима работы клавиатуры).
По более современным процессорам можно рекомендовать книгу
[3] Гук М., Юров В. Процессоры Pentium III, Athlon и другие — СПб: Издательство «Питер», 2000. — 480 с.: ил.
Число посетителей | |||
| Число посетителей |