САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
ФАКУЛЬТЕТ ТЕХНИЧЕСКОЙ КИБЕРНЕТИКИ
КАФЕДРА АВТОМАТИКИ И ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ
по лабораторной работе
Изучение принципов обработки аппаратных прерываний
Работу выполнил студент 4081/2 Денисов А.С.
группа ФИО
Преподаватель Душутина Е.В.
подпись ФИО
Санкт-Петербург
2007г.
Цель работы: знание логики взаимодействия процессора и контроллера прерываний, способах маскирования аппаратных прерываний, системе приоритетов, приобретение навыков использования стандартных средств для обслуживания аппаратных прерываний, умений создавать собственные и дополнять уже существующие программы обработки прерываний.
Программа 2. Перехватите прерывание от таймера int 8h, предусмотрев в программе обработки передачу управления исходному обработчику. Для иллюстрации результата вывести символ “*” в центр экрана прямым отображением в видеопамять.
При выводе в видеопамять в буфер 0B800h отдельно задается расположение символа на экране и цвет символа и фона.
В данной программе символ выводится в центр экрана в позицию 7D0h, символ имеет черный цвет, фон – белый. В последующих программах используется эта же схема.
itimer2.asm
sseg SEGMENT STACK
db 64 dup (?)
sseg ENDS
dseg SEGMENT PARA PUBLIC 'DATA'
adr_int:
ipsave dw 0h
cssave dw 0h
msg db '*$'
dseg ENDS
cseg SEGMENT
main proc FAR
ASSUME cs:cseg, ds:dseg, ss:sseg
start:
; Data segment init
mov ax, dseg
mov ds, ax
; Get int adress
mov ah,35h
mov al,8h
int 21h
mov ipsave, bx
mov ax, es
mov cssave, ax
push ds
mov dx, offset int_8
mov ax, seg int_8
mov ds, ax
; Set out handler
mov ah, 25h
mov al, 8h
int 21h
pop ds
mov ax,0h
int 16h
push ds
mov dx, ipsave
mov ax, cssave
mov ds, ax
mov ah, 25h
mov al, 8h
int 21h
pop ds
mov ah,4Ch
int 21h
ret
main ENDP
int_8 proc FAR
push ax
push bx
push es
push ds
push di
mov ax, dseg
mov ds,ax
; Color display
mov ax,0B800h
mov es,ax
lea bx, msg
; Where to display
mov di,7D0h
m1:
mov al,[bx]
cmp al,'$'
je m_ex
mov es:[di],al
inc di
inc bx
mov es:[di],word ptr 0F0h
inc di
jmp m1
m_ex:
pop di
pop ds
pop es
pop bx
pop ax
mov ax, dseg
mov es, ax
jmp dword ptr es:adr_int
int_8 ENDP
cseg ENDS
END start
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.