Конспект лекций по предмету "Системное программирование"


Команды прерываний.

Средства прерывания работы процессора внешними устройствами освобождают его от периодической проверки необходимости обслуживания устройств (циклического опроса). Микропроцессор имеет два входа, по которым внешние устройства могут привлечь его внимание: вход NMI немаскируемого прерывания и вход INTR маскируемого прерывания.
Когда внешнее устройство формирует сигнал на входе NMI, процессор прекращает свои действия (но не в середине команды) и реагирует на прерывание. По входу NMI должны появляться только прерывания из-за катастрофических событий (например, отказ сети, ошибка памяти).
Если катастрофических событий нет, внешнее устройство может прервать процессор по входу INTR. Процессор может игнорировать этот сигнал. Это зависит от состояния флага IF: если IF = 0 (процессор не реагирует на прерывания), если IF = 1 - реагирует.
Кроме сигнала на входе INTR внешнее устройство должно сообщить процессору причину прерывания. По запросу процессора внешнее устройство сообщает число из диапазона 0..255, соответствующее причине прерывание, которое называется номером прерывания. Для каждого номера прерывания существует своя программа, которую процессор должен выполнить до возобновления прерванной задачи. Адреса этих программ находятся в 256-элементной таблице векторов прерываний. Каждый её элемент состоит из 4-х байт и содержит полный адрес процедуры обработки соответствующего прерывания (вектор прерывания).
При поступлении сигнала INTR (IF = 1) процессор завершает текущую команду и готовится выполнить процедуру прерывания. Прежде всего он сохраняет в стеке текущее состояние регистра флагов и регистров CS и IP. Затем процессор получает от внешнего устройства номер прерывания и помещает в IP и CS вектор прерывания по соответствующему номеру. Когда приходит прерывание по входу NMI (независимо от флага IF), процессор производит аналогичные действия, за исключением получения номера прерывания, так как причина прерывания по входу NMI всегда одна. Для процедуры прерывания NMI отведён элемент с номером 2 в таблице прерываний.
Выше речь шла о прерываниях, формируемых внешними устройствами, так называемых внешних прерываниях. Но процессор сам генерирует внутренние прерывания, если при выполнении некоторых команд происходит что-то неожиданное. Это так называемые особые случаи, которые свидетельствуют о серьёзной ошибке. Первый 32 элемента в таблице прерываний зарезервированы для внутренних прерываний и прерывания NMI. Процессор 8086 и все последующие в реальном режиме работы генерирует только первые 5 номеров прерываний. Процедура прерывания заканчивается выполнением команды IRET (возврат из прерывания), которая восстанавливает из стека содержимое IP, CS и флагов.
Некоторые процедуры прерываний удобно вызывать и тогда, когда прерываний нет (например функции DOS или BIOS). Поэтому было бы хорошо иметь команду, которая делала бы то, что делает процессор при распознавании прерываний, за исключением одного - номер прерывания содержится в команде, а не выдаётся внешним устройством. Такой командой и является команда INT n, где n - целое число от 0 до 255. Перечень команд прерываний приведен в таблице 2.17.
Таблица 2.17. Перечень команд прерываний.
Мнемоника
Описание
INT n
Прерывание типа n (длина 2 байта)
INT
Прерывание типа 3 (один байт) применяется в отладчиках для реализации останова)
INTO (IF = 1, OF = 1)
Прерывание по переполнению (если OF=1) генерирует прерывание №4
IRET
Возврат из прерывания
HLT
Останов. Прекращает все действия процессора, пока не будет произведен аппаратный сброс или не придет внешнее прерывание (NMI всегда выводит из состояния прерывания, остальные- только если IF=1)
При установке точки останова в отладчике, требуется поместить в точку останова какую-либо команду, которая передала бы управление отладчику. Для этой цели подошла команда INT, которая сохраняет регистры CS и IP. Так как тип прерывания для этой цели не надо передавать, то используют однобайтную форму команды. Отладчик использует команду INT для генерирования прерывания типа 3 при отладке программ, следовательно в наших программах не следует использовать это прерывание.
Прерывания компьютеров семейства PC могут быть разделены как правило на 3 группы: внутренние прерывания микропроцессора, внешние (аппаратные) прерывания, программые прерывания.
2.5.7.Новые команды микропроцессора 80486
В системе команд микропроцессора 80486 появились новые команды BSWAP, XADD, CMPXCHG.
1. BSWAP reg 32- обмен байт в операнде.
(0¸7) разряды « (24¸31) разрядами,
(8¸15) разряды « (16¸23) разрядами.
Используется для преобразования форматов данных с различной адресацией: с младшей стороны и со старшей стороны.
2. XADD mem 8/ 16/ 32(приемник), reg 8/ 16/ 32(источник)
источник= приемнику,
приемник= приемник + источник
3. CMPXCHG mem 8/ 16/ 32 (приемник), reg AL/ AX/ EAX ( ист.)
Если приемник= АХ, то приемник= источнику, иначе АХ=приемнику и ZF=0. Используется для проверки и модификации семафоров.


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

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем конспект самостоятельно:
! Как написать конспект Как правильно подойти к написанию чтобы быстро и информативно все зафиксировать.