Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Санкт-Петербургский государственный политехнический университет
Факультет технической кибернетики
Кафедра автоматики и вычислительной техники
ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ № 4
Дисциплина: системное программное обеспечение
Тема: изучение принципов обработки аппаратных прерываний
Выполнил ст. группы 4081/1:
Проверила
Санкт-Петербург 2008
Получение знаний о логике взаимодействия процессора и контроллера прерываний, способах маскирования аппаратных прерываний, системе приоритетов, приобретение навыков использования стандартных средств для обслуживания аппаратных прерываний, умений создавать собственные и дополнять уже существующие программы обработки прерываний.
Часто используемые процедуры, такие как замена и восстановление векторов прерываний в таблице векторов прерываний (ВП), вывод строки на экран, получение системного времени, оформлены как макрокоманды и помещены во включаемый файл mac.inc. Его текст приведен ниже.
; функции dos
dos macro
push ax
mov ah, #1
int 021
pop ax
#em
; вывод на экран
print macro
push dx, cx, bx
mov bx, 1
lea dx, #1
mov cx, #2
dos 040
pop bx, cx, dx
#em
;замена стандартного ВП
chv macro
push ax, bx, dx, es
mov al, #2
dos 035 ;получение вектора
mov w #1, bx
mov w #1+2, es ;сохранение его
lea dx, #3
mov al, #2
dos 025 ;установка вектора
pop es, dx, bx, ax
#em
; восстановление стандартного ВП
restv macro
push ax, dx
lds dx, #2
mov al, #1
dos 025 ;установка вектора
mov ds, cs
pop dx, ax
#em
; замена ВП с запретом внешний прерываний
schv macro
push ax, dx
cli ;сброс флага разрешения прерывания
lea ax, #3
mov dx, cs
mov ds, 0
xchg w [#2*4], ax
xchg w [#2*4+2], dx
mov ds, cs
mov w #1, ax
mov w #1+2, dx ;сохранение ВП
sti ;установка флага разрешения прерыв.
pop dx, ax
#em
; восстановление ВП с запретом внеш.прер.
srestv macro
push ax, dx
cli ;сброс флага разрешения прерывания
mov ax, w #2
mov dx, w #2+2
mov ds, 0
mov w [#1*4], ax
mov w [#1*4+2], dx
mov ds, cs
sti ;установка флага разрешения прерыв.
pop dx, ax
#em
; получение системного времени
gettime macro
push ax, cx, dx
mov ah, 2ch
int 21h ;получение сист. времени
mov #1, ch ;сохранение часов
mov #2, cl ;минут
mov #3, dh ;секунд
pop dx, cx, ax
#em
2.1. Перехватить прерывание от таймера int 8h, предусмотрев в программе обработки передачу управления исходному обработчику. Для иллюстрации результата вывести символ “*” в левый верхний угол экрана прямым отображением в видеопамять.
Out1.8
include mac.inc
jmp start
old_v dd ? ;двойное слово для хранения значения вектора прерывания
char db '*'
start:
chv old_v, 08, i08_hnd ;замена ВП системного таймера
mov ah, 0
int 016 ;ожидание прерывания от клавиатуры
restv 08, old_v ;восстановление ВП системного таймера
mov ah, 04c
int 021 ;завершение выполнения программы
i08_hnd:
push ax, ds, es
mov ds, cs ;установка доступа к данным процедуры
mov es, 0b800 ;указатель на видеобуфер
mov al, char
es mov [0], al ;вывод в угол экрана символа “*”
pop es, ds, ax
cs jmp old_v ;передача управления исходному обработчику
Осуществлен перехват прерывания 8h, в программе обработки управление передано исходному обработчику. Результат работы – вывод «*» в верхнем левом углу экрана и завершение программы.
2.2. Изменение программы так, чтобы не происходила передача управления
Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.