Основы программирования микропроцессоров



Download 1,87 Mb.
bet99/119
Sana23.02.2022
Hajmi1,87 Mb.
#139915
TuriКонтрольные вопросы
1   ...   95   96   97   98   99   100   101   102   ...   119
Bog'liq
Системное программирование

11.7. Упражнения


Пример 1. Привести пример блокировки дискового прерывания.


Решение. Для блокировки дискового прерывания необходимо маскировать 6-й разряд регистра маски IMR контроллера прерываний, соответствующий линии IRQ6. После выполнения операций, требующих маскирования дискового прерывания, следует обязательно очистить регистр IMR, иначе обращения к дискам будет невозможно.

MOV AL, 01000000b; маскируем 6-й бит регистра маски


OUT 21h, AL ; передаем код в регистр маски прерываний
... ; выполнение операций, требующих маскирования прерывания
MOV AL, 0 ; код очистки регистра маски прерываний
OUT 21h, AL ; передаем код в регистр маски прерываний


Пример 2. Привести пример замены векторы прерывания с помощью функций MS-DOS.


Решение. В практике разработки системных программ часто возникают необходимость дополнения существующего или создания собственного обработчика прерывания. Перед установкой нового вектора прерывания следует получить текущее значение вектора, сохранить его, а затем восстановить перед завершением программы.
Функция 35h прерывания 21h возвращает текущее значение вектора прерывания, помещая адрес сегмента в ES, а смещения в BX. Функция 25h прерывания 21h позволяет установить вектор прерывания на определенный адрес, указанный регистровой парой DS:DX. Заметим также, что обе функции автоматически запрещают аппаратные прерывания на время изменения вектора, поэтому не существует опасности, что может произойти аппаратное прерывание, использующее данный вектор.
В приведенном примере изменяется вектор прерывания клавиатуры 09h. Код завершения подпрограммы обработки прерывания перед инструкцией IRET необходим только для аппаратного прерывания. Для обработчиков, являющихся расширениями существующих прерываний, код завершения не нужен.

; сегмент данных


OldInterruptSegment DW ? ; адрес сегмента заменяемого вектора прерывания
OldInterruptOffset DW ? ; адрес смещения заменяемого вектора прерывания

; в начале программы


MOV AH,35h ; номер функции для получения вектора
MOV AL,09h ; номер запрашиваемого вектора прерывания
INT 21h ; выполнение функции получения адреса вектора
MOV OldInterruptOffset,BX ; сохранение адреса смещения вектора
MOV OldInterruptSegment,ES ; сохранение адреса сегмента вектора

; установка нового прерывания


PUSH DS ; сохранение в стеке содержимого DS
MOV DX,OFFSET Routine ; помещение в DX смещения процедуры обработки
MOV AX,SEG Routine ; помещение в AX сегмента процедуры обработки
MOV DS,AX ; передаем в DS адрес сегмента
MOV AH,25h ; номер функции для установки вектора
MOV AL,09h ; номер изменяемого вектора
INT 21h ; изменение вектора прерывания
POP DS ; восстановление из стека прежнего содержимого DS

; новый обработчик прерывания 9h


Routine PROC FAR ; объявление подпрограммы обработчика как дальней
PUSHA ; сохранение регистров в стеке
... ; выполнение кода подпрограммы обработки прерывания
POPA ; восстановление регистров
MOV AL,20h ; завершение обработки аппаратного прерывания
OUT 20h,AL ; передаем код в регистр обслуживания прерывания
IRET ; возврат из процедуры обработки прерывания
Routine ENDP ; завершение подпрограммы

; восстановление прежнего прерывания


PUSH DS ; сохранение в стеке регистра DS
MOV DX,OldInterruptOffset ; помещение в DX смещение прежнего вектора
MOV AX,OldInterruptSegment ; помещение в AX сегмента прежнего вектора
MOV DS,AX ; передаем адрес сегмента в регистр DS
MOV AH,25h ; номер функции для установки вектора
MOV AL,09h ; номер изменяемого вектора
INT 21h ; восстановление прежнего вектора
POP DS ; восстановление из стека регистра DS

Download 1,87 Mb.

Do'stlaringiz bilan baham:
1   ...   95   96   97   98   99   100   101   102   ...   119




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish