Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


D. Доступ к оборудованию. Прерывания в защищенном режиме и в реальном режиме. Аппаратные и программные прерывания




Доступ к оборудованию осуществляется через регистры внутри устройств с помощью портового ввода/вывода. Разрядность регистров 8, 16, 32. Адресное пространство ввода/вывода не зависит от пр-ва ОП. Макс 65536 адресов.

Для управления устройством необходимо знать номера портов, а таже особенности данных. Эта информация приводится в тех. Документации к устр-ву.

Команды портового ввода/вывода

in аккумул., порт - чтение из порта

out – порт, аккум. - запись в порт

 

чтение строки из порта:

ins приемник, dx – (input string) dx – адрес порта, приемник es:edi/di

insb - читает 1 байт

insw - 2 байта

insd - 4 байта

 

запись строки в порт:

outs dx, источник dx – адрес порта, источник es:esi/si

outsb

outsw

outsd

 

 

Прерывание – особый процесс, временно переключающий микропроцессор на выполнение другой программы с последующим возобновлением выполнения прерванной. Прерывающая программа называется обработчиком прерывания.

2 случая вызова прерывания:

- некоторое внешнее по отношению к выполняемой программе событие

(нажатие клавиши на клавиатуре, переход принтера в состояние готовности,

деление на нуль в микропроцессоре)

- внутреннее событие выполняемой программы – то есть программный (с

помощью специальных команд) вызов прерывания.

 

Прерывания бывают программные (инициируются в выполняющей программе) и аппаратные (внешнее устройство посылает сигнал процессору, по котором тот должен обслужить устройство).

В INTEL процессорах до 256 прерываний (32 зарезервировано, остальные - пользовательские). У каждого прерывания свой номер (например 10h – обслуживание видеосистемы). Прерывания соответствуют индексам таблицы прерываний, расположенной в ОП.

В таблице хранятся векторы прерываний – адреса программ обработчиков (могут располагаться в любом месте ОП)

Реальный режим процессора: таблица начинается в ОП по адресу 0000:0000.

Каждый элемент занимает 4 байта. Старшее слово – адрес начала сегмента, младшее - смещение

Защищенный режим: адреса обработчиков в таблице IDT (interrupt descriptor table)

Адрес начала находится в специальном регистре ЦП.

 

Команды работы с прерываниями:

int число – вызов прерывания с заданным номером.

Команда int сначала заносит в стек значения следующих регистров: eflags/flags, cs, eip/ip (регистр флагов помещается в стек первым, регистр указателя инструкций – последним). Затем управление передается обработчику прерывания, номер которого равен числу, указанному в данной команде. Значение операнда команды int (значение числа) должно быть в диапазоне от 0 до 255. Занесение в стек регистра флагов делается для того, чтобы при возврате из обработчика этот регистр был восстановлен, и вычислительный процесс не был нарушен. Значения cs:eip/ip являются адресом возврата, они необходимы для правильного возврата из программы обработчика. Надо отметить, что при занесении в стек значения eip/ip этот регистр указывает на команду, следующую сразу за командой int.

 

Пример: для установки режима дисплея используется прерывание BIOS 10h

(обслуживание видеосистемы), причем в регистре ah указывается номер

функции 0 (установка режима дисплея), в al задается сам режим:

 

xor ah,ah; функция 0 прерывания 10h – установка режима

; дисплея

mov al,3; в al задается режима дисплея, третий режим –

; текстовый режим, 80 столбцов × 25 строк

int 10h; вызов прерывания, после выполнения команды

; устанавливается требуемый режим дисплея

 

В прерывании 3 пустой обработчик. (используется отладчиками для проверок или установки пошагового режима)

режим пошагового выполнения программы.

Для вызова четвертого прерывания при наличии переполнения (флаг OF=1)

используется команда into (interrupt on overflow – прерывание по

переполнению):

into

В отличие от двухбайтной команды int, длина into – один байт. Команда into вызывает прерывание 4 в том случае, если флаг переполнения OF установлен в 1. Для прерывания 4 по умолчанию устанавливается пустой обработчик прерывания, но программист может создать свой, сигнализирующий об ошибках переполнения (флаг OF модифицируется

некоторыми арифметическими, логическими и строковыми командами).

 

С 80186 вводится команда вызова прерывания 5 при условии выхода значения за рамки диапазона

Bound индекс, источник. Источник задает границы (младший байт нижнюю, старший - верхнююю)

 

Iret, iretd - команда корректного выхода из обработчика.

Команда iret извлекает из стека значение регистра ip, значение регистра cs

и значение регистра flags (первым извлекается регистр указателя инструкций,

последним – регистр флагов). Команда iretd извлекает из стека значения eip, cs

и eflags. Занесения в cs:eip/ip данных из стека реализует дальний (far) переход.

Таким образом, после выполнения iret/iretd управление передается команде, на

которую указывает пара cs:eip/ip.

 

Прерывания MS-DOS 21h

Вызов ф-й:

Mov ah, no_func

Int 21h

 

Номер ф-ии действие
  Ввод символа с клав. и вывод на экран. Код заносится в al. Реагирует на ctrl-c, ctrl-break
  Вывод символа из dl на экран. Реагирует на ctrl-c, ctrl-break
  Нефильтрованный вывод с клав. не реагирует на ctrl-c, ctrl-break
  Как и, Реагирует на ctrl-c, ctrl-break
  Вывод строки из ds:dx
  Буферизованный ввод с клавиатуры ds:dx – адрес начала буфера. Стр-ра: Байт макс. Длины, резервный байт (заносится кол-во символов), место для ввода строки. Конец ввода – нажатие Enter или заполнение буфера

 


 

 





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 526 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Большинство людей упускают появившуюся возможность, потому что она бывает одета в комбинезон и с виду напоминает работу © Томас Эдисон
==> читать все изречения...

2493 - | 2164 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.