Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭВМ(шпоры).docx
Скачиваний:
4
Добавлен:
01.04.2025
Размер:
185.5 Кб
Скачать

16. Маскируемые и немаскируемые прерывания

Программы на ассемблере могут запретить аппаратные прерывания. Это маскируемые прерывания; другие аппаратные прерывания, возникающие при некоторых ошибках (таких, как деление на ноль), не могут быть маскированы. Существуют две причины для запрета аппаратных прерываний.

В первом случае все прерывания блокируются, с тем, чтобы критиче­ская часть кода была выполнена целиком, прежде чем машина произведет какое-либо другое действие. Например, прерывания запрещают при изменении вектора аппаратного прерывания, чтобы избежать выполне­ния прерывания, когда вектор изменен на половину.

Во втором случае маскируются только определенные аппаратные прерывания. Это делается, когда не­которые прерывания могут взаимодействовать с операциями, критичными к временным интервалам. Напри­мер, точно рассчитанная по времени процедура ввода/вывода не может себе позволить быть прерванной дли­тельным дисковым прерыванием.

Выполнение прерываний зависит от значения флага прерывания (бит 9) в регистре флагов. Когда этот бит равен 0, разрешены все прерывания, которые разрешает маска. Когда он равен 1, все аппаратные преры­вания запрещены.

17. Прерывания bios

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

Прерывание заносит в стек содержимое флагового регистра, регистра CS и регистра IP. Например, для прерывания INT 12Н, которое возвращает в регистре АХ размер памяти, адрес элемента таблицы равен 0048 (12Н х 4 = 48Н). Операция выделяет четырехбайтовый элемент по адресу 0048 и заносит два байта в регистр IP и два байта в регистр - CS. Адрес, который получается в регистровой паре CS:IP, представляет собой адрес начала подпрограмм в области BIOS, которая получает управление. Возврат из этой подпрограммы осущест­вляется командой IRET (INTERRUPT RETURN), которая восстанавливает флаги и регистры CS и IP из стека и передает управление на команду, следующую за выполненной командой прерывания.

Рассмотрим основные прерывания BIOS:

INT 05Н - печать экрана. Дан­ная операция маскирует прерывания и сохраняет позицию курсора.

INT 11Н - запрос списка присоединенного оборудования. Определяет наличие различных устройств в системе и результата помещает в регистр АХ.

INT 12Н - запрос размера физической памяти. Возвращает в регистр АХ размер памяти в килобайтах.

INT 19Н - перезапуск системы.

INT 1АН - запрос и установка текущего времени и даты.

18. Прерывания dos

Прерывания от INT 20Н до INT 62Н зарезервированы для операций DOS. К основным операциям DOS относятся:

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

INT 21Н - запрос функции DOS. Основная операция DOS, вызывающая определенную функцию в со­ответствии с кодом в регистре АН.

INT 27Н - завершение программы, оставляющее ее резидентной. Эта операция позволяет сохранить COM-программу в памяти.

19. Старт компьютера

При включении компьютера процессор ус­танавливает состояние сброса, осуществляет контроль четности. В регистре CS устанавливает значение FFFF0H, а в регистре IP - нуль. Первая выполняемая команда по этому адресу FFFF:0 или FFFF0, что являет­ся точкой входа в BIOS. Система BIOS проверяет различные порты компьютера для определения и инициа­лизации подключенных устройств. Затем BIOS создает в начале памяти (по адресу 0) таблицу прерываний, которая содержит адреса обработчиков прерываний, и выполняет две операции: INT 11Н (запрос списка при­соединенного оборудования) и INT 12Н (запрос размера физической памяти).

Следующим шагом BIOS определяет, имеется ли на диске или дискете операционная система DOS. Ес­ли обнаружена системная дискета, то BIOS выполняет прерывание INT 19Н для доступа к первому сектору диска, содержащему блок начальной загрузки. Этот блок представляет собой программу, которая считывает системные файлы IBMBIO.COM и IBMDOS.COM с диска в память.

Операнд в команде прерывания, например INT 12Н, содержит тип прерывания, который идентифици­рует запрос. Для каждого типа система содержит адрес в таблице векторов прерываний, начинающийся по адресу 0000. Так как в таблице имеется 256 четырехбайтовых элементов, то она занимает первые 1024 байта памяти от 0 до 3FF. Каждый элемент таблицы указывает на подпрограмму обработки указанного типа прерывания и содержит адрес кодового сегмента и смещение, которые при прерывании устанавливаются в регист­ры CS и IP соответственно.