Главная · Поиск книг · Поступления книг · Top 40 · Форумы · Ссылки · Читатели

Настройка текста
Перенос строк


    Прохождения игр    
Demon's Souls |#13| Storm King
Demon's Souls |#12| Old Monk & Old Hero
Demon's Souls |#11| Мaneater part 2
Demon's Souls |#10| Мaneater (part 1)

Другие игры...


liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня
Rambler's Top100
Образование - Питер Абель Весь текст 992.61 Kb

Ассемблер и программирование для IBM PC

Предыдущая страница Следующая страница
1 ... 64 65 66 67 68 69 70  71 72 73 74 75 76 77 ... 85
               Данные BIOS
               IBMBIO.COM и IBMDOS.COM
               Резидентная часть COMMAND.COM
               Доступная память для прикладных программ
               Транзитная часть COMMAND.COM
               Конец RAM (ОЗУ)
               ROM BASIC
               ROM BIOS

     Внешние устройства передают сигнал  внимания  через  контакт  INTR  в
процессор.  Процессор реагирует на этот запрос, если  флаг  прерывания  IF
установлен  в  1  (прерывание  разрешено),  и  (в  большинстве    случаев)
игнорирует запрос, если флаг IF установлен в 0 (прерывание запрещено).
     Операнд  в  команде  прерывания,  например,  INT  12H,  содержит  тип
прерывания,  который  идентифицирует  запрос.  Для  каждого  типа  система
содержит адрес в таблице векторов прерываний, начинающейся по адресу 0000.
Так как в таблице имеется 256 четырехбайтовых элементов, то  она  занимает
первые 1024 байта памяти от шест.0 до  шест.3FF.  Каждый  элемент  таблицы
указывает на подпрограмму обработки указанного типа прерывания и  содержит
адрес кодового сегмента и смещение, которые при прерывании устанавливаются
в регистры CS и  IP  соответственно.  Список  элементов  таблицы  векторов
прерываний приведен на рис. 23.1.
     Прерывание заносит в стек содержимое флагового регистра, регистра  CS
и регистра IP. Например, для прерывания 12H (которое возвращает в регистре
AX размер памяти) адрес элемента таблицы равен шест.0048 (шест.12  х  4  =
шест.48). Операция выделяет четырехбайтовый элемент по адресу шест. 0048 и
заносит два байта в регистр IP и два байта в регистр  SS.  Адрес,  который
получается в регистровой  паре  CS:IP,  представляет  собой  адрес  начала
подпрограммы в области BIOS, которая получает управление.  Возврат из этой
подпрограммы осуществляется  командой  IRET  (Interrupt  Return),  которая
восстанавливает флаги и регистры CS и IP из стека и передает управление на
команду, следующую за выполненной командой прерывания.

__________________________________________________________________________

      Адрес                   Функция прерываний
      (шест.)                      (шест.)

       0-3         0          Деление на нуль
       4-7         1          Пошаговый режим (трассировка DEBUG)
       8-B         2          Немаскированное прерывание (NMI)
       C-F         3          Точка останова (используется в DEBUG)
      10-13        4          Переполнение регистра
      14-17        5          Печать экрана
      18-1F        6,7        Зарезервировано
      20-23        8          Сигнал от таймера
      24-27        9          Сигнал от клавиатуры
      28-37        A,B,C,D    Используются в компьютерах AT
      38-3B        E          Сигнал от дискетного дисковода
      3C-3F        F          Используется для принтера
      40-43       10          Управление дисплеем (см.гл. 8, 9, 10)
      44-47       11          Запрос оборудования (см.гл.9)
      48-4B       12          Запрос размера памяти (см.гл.2)
      4C-4F       13          Дисковые операции ввода-вывода (см.гл.18)
      50-53       14          Управление коммуникационным адаптером
      54-57       15          Кассетные операции и спец. функции AT
      58-5B       16          Ввод с клавиатуры (см.гл.9)
      5C-5F       17          Вывод на принтер (см.гл.19)
      60-63       18          Обращение к BASIC, встроенному в ROM
      64-67       19          Перезапуск системы
      68-6B       1A          Запрос и установка времени и даты
      6C-6F       1B          Прерывание от клавиатуры
      70-73       1C          Прерывание от таймера
      74-77       1D          Адрес таблицы параметров дисплея
      78-7B       1E          Адрес таблицы параметров дисковода
      7C-7F       1F          Адрес таблицы графических символов
      80-83       20          Нормальное завершение программы (DOS)
      84-87       21          Обращение к функциям DOS
      88-8B       22          Адрес обработки завершения задачи (DOS)
      8C-8F       23          Адрес реакции по Ctrl/Break (DOS)
      90-93       24          Адрес реакции на фатальную ошибку (DOS)
      94-97       25          Абсолютное чтение с диска (DOS)
      98-9B       26          Абсолютная запись на диск (DOS)
      97-9F       27          Создание резидентной программы (DOS)
      AO-FF    28-3F          Другие функции DOS
     100-1FF   40-7F          Зарезервировано
     200-217   80-85          Зарезервировано для BASIC
     218-3C3   86-F0          Используются BASIC-интерпретатором
     3C4-3FF   F1-FF          Зарезервировано

     Примечание:    Прерывания 00-1F относятся к BIOS,
                    прерывания 20-FF относятся к DOS и BASIC.
__________________________________________________________________________

     Рис.23.1. Таблица адресов прерываний.


     ПРЕРЫВАНИЯ BIOS
     ________________________________________________________________

     В данном разделе приведены основные прерывания BIOS.

     INT 05H. П е ч а т ь  э к р а н а. Выполняет вывод содержимого экрана
на печатающее устройство.  Команда INT 05H выполняет  данную  операцию  из
программы,  а  нажатие  клавишей  Ctrl/PrtSc  -  с  клавиатуры.   Операция
запрещает прерывания и сохраняет позицию курсора.

     INT 10H. У п р а в л е н и е  д и с п л е е м.  Обеспечивает экранные
и клавиатурные операции, детально описанные в гл.9.

     INT  11H.   З а п р о с   с п и с к а   п р и с о е д и н е н н о г о
о б о р у д о в а н и я. Определяет наличие различных устройств в системе,
результирующее значение возвращает в регистре AX. При включении компьютера
система выполняет эту операцию и  сохраняет  содержимое  AX  в  памяти  по
адресу шест.410. Значения битов в регистре AX:

     Бит            Устройство

     15,14     Число подключенных принтеров.
     13        Последовательный принтер.
     12        Игровой адаптер.
     11-9      Число последовательных адаптеров стыка RS232.
     7,6       Число дискетных дисководов, при бите 0=1:
                    00=1, 01=2, 10=3 и 11=4.
     5,4       Начальный видео режим:
                    00 = не используется,
                    01 = 40х25 плюс цвет,
                    10 = 80х25 плюс цвет,
                    11 = 80х25 черно-белый режим.
     1         Значение 1 говорит о наличии сопроцессора.
     0         Значение 1 говорит о наличии одного или более дисковых
               устройств и загрузка операционной системы должна
               осуществляться с диска.

     INT 12H З а п р о с  р а з м е р а  ф и з и ч е с к о й  п а м я т и.
Возвращает в регистре AX размер памяти в  килобайтах,  например,  шест.200
соответствует памяти в 512 К.  Данная операция  полезна  для  выравнивания
размера программы в соответствии с доступной памятью.

     INT 13H.   Д и с к о в ы е  о п е р а ц и и  в в о д а - в ы в о д а.
Обеспечивает операции ввода-вывода для дискет и винчестера,  рассмотренные
в главе 16.

     INT 14H.     У п р а в л е н и е      к о м м у н и к а ц и о н н ы м
а д а п т е р о м.    Обеспечивает   последовательный   ввод-вывод   через
коммуникационный порт RS232. Регистр DX должен содержать номер (0  или  1)
адаптера стыка RS232. Четыре типа  операции,  определяемые  регистром  AH,
выполняют прием и передачу  символов  и  возвращают  в  регистре  AX  байт
состояния коммуникационного порта.

     INT 15H.  К а с с е т н ы е  о п е р а ц и и  в в о д а - в ы в о д а
и  с п е ц и а л ь н ы е  ф у н к ц и и  д л я  к о м п ь ю т е р о в  AT.
Обеспечивает операции  ввода-вывода  для  кассетного магнитофона,  а также
расширенные операции для компьютеров AT.

     INT 16H.   В в о д  с  к л а в и а т у р ы.   Обеспечивает  три  типа
команд ввода с клавиатуры, подробно описанные в гл.9.

     INT 17H.  В ы в о д  н а  п р и н т е р. Обеспечивает вывод данных на
печатающее устройство. Подробно рассмотрено в гл.19.

     INT 18H. О б р а щ е н и е  к  BASIC,  в с т р о е н н о м у  в  ROM.
Вызывает BASIC-интерпретатор, находящийся в постоянной памяти ROM.

     INT 19H.  П е р е з а п у с к  с и с т е м ы.   Данная  операция  при
доступном диске считывает  сектор  1  с  дорожки  0  в  область  начальной
загрузки в памяти (сегмент 0, смещение  7C00)  и  передает  управление  по
этому адресу.  Если дисковод не доступен, то операция передает  управление
через INT 18H  в  ROM  BASIC.  Данная  операция  не  очищает  экран  и  не
инициализирует данные в  ROM  BASIC,  поэтому  ее  можно  использовать  из
программы.

     INT 1AH.     З а п р о с    и    у с т а н о в к а    т е к у щ е г о
в р е м е н и  и  д а т ы.   Считывает  и  записывает  показание  часов  в
соответствии со значением в регистре AH. Для определения продолжительности
выполнения программы можно перед началом выполнения установить часы в 0, а
после считать текущее время.  Отсчет времени идет  примерно  18,2  раза  в
секунду. Значение в регистре AH соответствует следующим операциям:

          AH=00 Запрос времени.  В  регистре  CX  устанавливается  старшая
     часть значения, а в регистре DX  -  младшая.  Если  после  последнего
     запроса прошло 24 часа, то в регистре AL будет не нулевое значение.
          AH=01 Установка времени.  Время устанавливается по регистрам  CX
     (старшая часть значения) и DX (младшая часть значения).

     Коды 02 и 06 управляют временем и датой для AT.

     INT 1FH.      А д р е с      т а б л и ц ы      г р а ф и ч е с к и х
с и м в о л о в.  В графическом режиме имеется доступ к символам с  кодами
128-255 в 1К таблице, содержащей по восемь байт на каждый  символ.  Прямой
доступ  в  графическом  режиме  обеспечивается  только  к    первым    128
ASCII-символам (от 0 до 127).


     ПРЕРЫВАНИЯ DOS
     ________________________________________________________________

     Во время своей работы BIOS использует два модуля  DOS:  IBMBIO.COM  и
IBMDOS.COM.  Так как модули DOS  обеспечивают  большое  количество  разных
дополнительных проверок, то операция DOS обычно проще  в  использовании  и
менее машиннозависимы, чем их BIOS аналоги.
     Модуль IBMBIO.COM обеспечивает интерфейс с BIOS низкого  уровня.  Эта
программа выполняет управление вводом-выводом при чтении данных из внешних
устройств в память и записи из памяти на внешние устройства.
     Модуль  IBMDOS.COM  содержит  средства  управления  файлами  и    ряд
сервисных функций, таких как блокирование и деблокирование записей.  Когда
пользовательская программа выдает запрос INT 21H, то  в  программу  IBMDOS
через регистры передается определенная информация.  Затем программа IBMDOS
транслирует эту информацию в один или несколько вызовов IBMBIO, которая  в
свою очередь вызывает BIOS. Указанные связи приведены на следующей схеме:

       Пользовательский Высший       Низший     ROM     Внешний
       уровень          уровень      уровень            уровень
       ЪДДДДДДДДДДД¬ ЪДДДДДДДДДД¬ ЪДДДДДДДДДД¬
       ¦Программный¦ ¦   DOS    ¦ ¦   DOS    ¦ ЪДДДД¬ ЪДДДДДДДДДД¬
       ¦запрос в/в ¦¦IBMDOS.COM¦¦IBMBIO.COM¦¦BIOS¦¦Устройство¦
       АДДДДДДДДДДДЩ АДДДДДДДДДДЩ АДДДДДДДДДДЩ АДДДДЩ АДДДДДДДДДДЩ

     Как показано выше, прерывания от шест.20 до  шест.62  зарезервированы
для операций DOS. Ниже приведены наиболее основные из них:

     INT 20H.  З а в е р ш е н и е  п р о г р а м м ы.   Запрос  завершает
выполнение программы и передает управление в  DOS.  Данный  запрос  обычно
находится в основной процедуре.

     INT 21H.  З а п р о с  ф у н к ц и й  DOS.   Основная  операция  DOS,
вызывающая определенную функцию в соответствии  с  кодом  в  регистре  AH.
Назначение функций DOS описано в следующем разделе.

     INT 22H.    А д р е с    п о д п р о г р а м м ы    о б р а б о т к и
з а в е р ш е н и я  з а д а ч и. (см.INT 24H).

     INT 23H.    А д р е с   п о д п р о г р а м м ы   р е а к ц и и   н а
Ctrl/Break. (см.INT 24H).
Предыдущая страница Следующая страница
1 ... 64 65 66 67 68 69 70  71 72 73 74 75 76 77 ... 85
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 
Комментарии (15)

Реклама