Программирование arrow Assembler arrow Справочник программиста на персональном компьютере фирмы IBM. Системные ресурсы

Справочник программиста на персональном компьютере фирмы IBM. Системные ресурсы

Оглавление

1. Справочник программиста на персональном компьютере фирмы IBM. Системные ресурсы

2. Доступ к микросхеме интерфейса с периферией 8255

3. Определение типа IBM PC

4. Определение версии MS DOS

5. Определение числа и типов адаптеров дисплея

6. Определение числа и типа дисковых накопителей

7. Определение числа и типа периферийных устройств

8. Ревизия количества памяти

9. Управление прерываниями

10. Программирование контроллера прерываний 8259

11. Запрет/разрешение отдельных аппаратных прерываний

12. Написание собственного прерывания

13. Дополнение к существующему прерыванию

14. Управление программами

15. Манипуляции с памятью

16. Запуск одной программы из другой

17. Использование команд интерфейса с пользователем из программы

18. Сохранение программы в памяти после завершения

19. Загрузка и запуск программных оверлеев

20. Преобразование программ из типа .EXE в тип .COM


Зачем нужно программировать на языке ассемблера? Сегодня обычно используют такие языки высокого уровня, как Бейсик, Фортран или Паскаль. Возможно, что и вы знакомы по крайней мере с одним из языков высокого уровня. Если вы используете IBM PC, то знаете, что она имеет интерпретатор Бейсика. Зачем же нужен еще один язык программирования, особенно такой, который сулит определенные трудности? Даже располагая сегодня языками высокого уровня, вы все равно нуждаетесь в языке ассемблера в силу его эффективности и четкости. Программы на языке ассемблера могут быть очень эффективными. В случае работы программистов одинаковой квалификации и равной одаренности программа, составленная на языке ассемблера, будет короче и более быстро выполнимой, чем точно такая же программа на языке высокого уровня. Это остается верным фактически для всех небольших и средних программ.

Раздел 1. Ревизия системных ресурсов.
Доступ к микросхеме интерфейса с периферией 8255.
Определение типа IBM PC.
Определение версии MS DOS.
Определение числа и типов адаптеров дисплея.
Определение числа и типа дисковых накопителей.
Определение числа и типа периферийных устройств.
Ревизия количества памяти.
Раздел 2. Управление прерываниями.
Программирование контроллера прерываний 8259.
Запрет/разрешение отдельных аппаратных прерываний.
Написание собственного прерывания.
Дополнение к существующему прерыванию.
Раздел 3. Управление программами.
Манипуляции с памятью.
Запуск одной программы из другой.
Использование команд интерфейса с пользователем из программы.
Сохранение программы в памяти после завершения.
Загрузка и запуск программных оверлеев.
Преобразование программ из типа .EXE в тип .COM.

Глава 1. Системные ресурсы.

Раздел 1. Ревизия системных ресурсов.

Одной из первых задач после загрузки задачи является проверка
куда мы попали: на каком типе IBM PC запущена задача?... под
какой версией MS DOS?... сколько имеется памяти?... все ли необ-
ходимое оборудование присутствует? Имеется три способа получения
этой информации. Наименее элегантный способ - спросить об этом у
пользователя (но знает ли он ответы?). Намного лучше получить всю
доступную информацию из установки переключателей на системной
плате. Но эта установка не всегда соответствует реальности. Поэ-
тому лучше всего использовать третью возможность - получить пря-
мой доступ к требуемому оборудованию или прочитать нужную инфор-
мацию из области данных BIOS. Поскольку установка переключателей
может служить отправной точкой для получения требуемой информа-
ции, то этот раздел начинается с обсуждения микросхемы, содержа-
щей эту информацию - микросхемы интерфейса с периферией 8255.
Программа может получить доступ к оборудованию только двумя
способами. Она может обратиться к любому из портов ввода/вывода,
соответствующему присоединенному оборудованию (обычно бывает
занята лишь малая доля из 65535 возможных адресов портов). Или
программа может обратиться к любому из более чем миллиону адресов
оперативной памяти. Сводная таблица адресов портов приведена в
[7.3.0]. На рис. 1-1 показано как распределены в памяти опера-
ционная система и программы.


 
« Предыдущая статья   Следующая статья »


  • Assembler, COM в Ассемблере
    В этой статье будет расказано о том, как использовать COM-интерфейсы в ваших программах, написанных на ассемблере. Не будет обсуждаться, что такое COM и как он применяется, но как его можно использовать, программируя на ассемблере. Здесь будет затронуто только применение существующих интерфейсов, а не реализация своих собственных, это будет рассмотрено в другой статье....
  • Assembler, Пишем свой загрузочный сектор
    Мы будем писать загрузочный сектор для трехдюймовой дискеты с файловой системой FAT12. После окончания начальной загрузки программа POST находит активное устройство и загружает с него короткую программу загрузки ОС - загрузочный сектор. Загрузочный сектор это первый физический сектор устройства, в данном случае дискеты и его размет равен всего ничего 512 байт. С помощью этих 512 байт кода мы должны найти основную часть загрузчика операционной системы, загрузить его в память и передать ему управл...
  • Assembler, Программирование COM портов
    Порт 3F8h. Этот порт соответствует регистру передавемых данных. Для передачи в порт 3F8h необходимо записать байт передаваемых данных. После приема данных от внешнего устройства они могут быть прочитаны из этого порта. В зависимости от состояния бита управляющего слова, выводимого в управ- ляющий регистр с адресом 3F8h, назначение порта 3F8h изменяться. Если этот бит равен 0,порт используется для записи передаваемых данных.Если же этот бит равен 1, порт используется для вывода з...
  • Assembler, Переполнение буфера
    В данной статье рассматривается пример использования переполнения стека под Windows 9x на платформе Intel x86. Изложение рассчитано на читателя, понимающего принципы работы персонального компьютера и более чем поверхностно знакомого с программированием....
  • Assembler, Виртуальный драйвер для обслуживания аппаратных прерываний
    Как уже отмечалось ранее, виртуальные драйверы служат прежде всего для виртуализации аппаратуры, то есть для предоставления одновременно выполняемым задачам возможности совместного использования устройств компьютера. Измерительная или управляющая аппаратура, подключаемая к компьютеру с целью создания автоматизированной установки, вряд ли будет эксплуатироваться в многозадачном режиме, однако использование для ее управления виртуального драйвера может заметно сократить программные издержки и умен...
  • Assembler, Опыт дизассемблирования большой .com программы
    В данной статье мне хочется рассказать о дизассемблировании большой программы (графического редактора). Не будучи знатоком ассемблера, не зная до сих пор, как использовать большинство возможностей своего дизассемблера (DisDoc 2.3), я все же решился написать эту статью, так как прекрасно помню, в какой кромешной тьме начинал заниматься дизассемблированием....
  • Assembler, Оптимизация программ на Assembler
    Несмотря на все более широкое распространение языков программирования и интегрированных сред программирования, оптимизация программ на ассемблере остается актуальной темой дискуссий для программистов. Можно упомянуть, например, форум програамистов, проведенный сетью PC MagNet, который стал ареной многочисленых "дуэлей": то один, то другой участник предлагал всем желающим решить небольшую, но интересную задачу программирования - и рассматривал присылаемые решения, ожидая, кто жее и как ...
  • Assembler, Справочник программиста на персональном компьютере фирмы IBM. Приложения
    Основной единицей хранения данных в компьютере является бит. В большинстве микрокомпьютеров восемь битов объединены в байт, при этом каждый бит байта может быть установлен или "включен" (= 1) или сброшен или "выключен" (= 0), допуская 256 разных вариантов. Таким образом, в одном байте можно представить 256 разных симво- лов (расширенный набор кодов ASCII) или целое число в диапазоне от 0 до 255. Хотя мы привыкли записывать эти числа в десятичной форме, они могут зап...