Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Int 1bH – прерывание с клавиатуры




Int 1bH – прерывание с клавиатуры

Этот вектор ( 0: 006c ) берется, когда BIOS распознает нажатие клавиши Ctrl-Break. INT 1bH первоначально указывает на IRET, но DOS устанавливает его на локальную программу, которая взводит внутренний флаг DOS. DOS время от времени проверяет этот флаг и действует в соответствии с действующим режимом обработки прерываний.

Int 1cH – пользовательское прерывание по таймеру

Этот вектор ( 0: 0070 ) BIOS берет по каждому тику аппаратных часов (каждые 55 миллисекунд; приблизительно 18. 2 раз в секунду). Первоначально он указывает на IRET, но может быть изменен пользовательской программой, чтобы адресовать фоновую программу пользователя, базирующуюся на таймере.

Поскольку программа INT 1cH выполняется во время низкоуровневого аппаратного прерывания, необходимо помнить, что система еще не сбросила контроллер прерываний и потому другие аппаратные прерывания, в том числе прерывание от клавиатуры, не будут происходить при работе INT 1cH.

Int 1dH – указатель видеопараметров

Этот вектор ( 0: 0074 ) указывает на совокупность видео параметров, используемых прерыванием INT 10H для установки регистров видеоконтроллера и некоторых значений данных BIOS при инициализации режима видео.

Можно создать RAM-резидентную версию этой таблицы и модифицировать параметры, чтобы изменить работу некоторых экранных режимов. Например, таким способом команда DOS " Mode" сдвигает экран влево или вправо.

 

Данное прерывание может быть использовано в варианте №12, Лабораторной работы №2 – Определить режим видеоадаптера (текстовый, графический, разрешение) (BUOS 10h).

Int 1eH – указатель параметров дискеты

Для варианта №8, Лабораторной работы №2 – Определить количество и тип установленных накопителей на гибких магнитных дисках (НГМД).

 

Этот вектор ( 0: 0078 ) указывает на таблицу параметров дискеты, которую сервисная служба BIOS INT 13H использует для различных операций с дискетами.

В эту таблицу входят такие значения, как " head-settle time" и " step rate time", оказывающие огромное влияние на скорость операций ввода-вывода дискеты. Можно создать RAM-резидентную версию этой таблицы и модифицировать некоторые ее параметры, чтобы изменить отдельные детали операций с дискетами. DOS создает модифицированную версию этой таблицы для улучшения производительности дискет. Странно, но DOS восстанавливает нормальные (более медленные) значения, когда возвращает управление прикладной программе.

Int 1fH – указатель графических символов

Этот вектор ( 0: 007c ) указывает на таблицу, определяющую изображения старших 128 символов (коды ASCII 128-255). Ее использует ROM-BIOS, когда выводит на экран символы в графическом (с битовой разверткой) режиме.

При запуске системы этот указатель устанавливается на F000: 0000, так что старшие 128 символов в графическом режиме выдаются как случайный " мусор". команда DOS 3. x " GrafTabl" может использоваться для загрузки таблицы старших 128 символов и соответствующей переустановки данного вектора.

Можно создать собственную RAM-резидентную таблицу, например, чтобы предоставить курсив для графики. Таблица состоит из 128 групп по 8 байт в группе. Каждый байт представляет 8 точек по горизонтали, причем первый байт отвечает верхней строке точек, составляющих изображение символа. Например, определение символа " Л" могло бы быть следующим:


 

                    г7+6+5+4+3+2+1+0 смещение_в_таблице + 0: ¦ $ $ $ $ $ $ ¦ = 01111110 = 7e hex = смещение_в_таблице + 1: ¦ $ $ $ $ ¦ = 00111100 = 3c hex ¦ смещение_в_таблице + 2: ¦ $ $ $ $ ¦ = 01101100 = 6c hex ¦ смещение_в_таблице + 3: ¦ $ $ $ $ ¦ = 01101100 = 6c hex ¦=> = смещение_в_таблице + 4: ¦ $ $ $ $ ¦ = 01101100 = 6c hex ¦ ¦ смещение_в_таблице + 5: ¦ $ $ $ $ ¦ = 01101100 = 6c hex ¦ ¦ смещение_в_таблице + 6: ¦$ $ $ $ $ ¦ = 11001110 = ce hex ¦ ¦ смещение_в_таблице + 7: ¦          ¦ = 00000000 = 00 hex =- ¦                    +-+-+-+-+-+-+-+-+                      ¦                                           +====================+                                           ¦                           +===============¦=============+8-байтовая последовательность:  7еH, 3cH, 6cH, 6cH, 6cH, 6cH, ceH, 00H стояла бы в таблице по смещению, соответствующему символу " Л". Так как код ASCII буквы 'Л' равен 139, а таблица начинается для символа с кодом 128, это будет 12-я группа из 8 байт (смещение - 88 байт от начала таблицы).

 

Замечание:

Младшие 128 символов хранятся в ROM-таблице по адресу f000: fa6e. Это не указано в документации, но, похоже, этот адрес остается постоянным во всех IBM-версиях ROM. этот адрес жестко закодирован в кодах программы INT 10H, так что вы не можете использовать свою таблицу для младших 128 символов (если у вас не EGA , который позволяет переопределять весь набор символов).

Определение типа центрального процессора

Для варианта №9, Лабораторной работы №2 – Определить тип центрального процессора.

 

Существует определенная методика определения типа центрального процессора.

Модели Intel 8086/8088

 

Способ распознавания таких процессоров основан на том факте, что биты 12-15 регистра FLAGS всегда установлены в единицу.

Прежде всего, программа записывает текущее содержимое регистра FLAGS в регистр AX. Для этого используется стек:

pushf

pop ax

Первоначальное содержимое регистра FLAGS сохраняется в регистре CX:

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...