НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ «ХПІ»
Лабораторна робота №14
з курсу “Системне програмне забезпечення”
на тему: “Резидентні програми та виключення“.
Виконав:
студент групи АП-30б
Попов О.С.
Перевірив:
Межерицький С. Г.
Тема: “Резидентні програми та виключення”.
Мета: Розробити програми:
· виклик переривання 4h;
· пограму, яка при кожному перериванні 4h буде змінювати кольор бардюру;
· пограму, яка за допомогою вільного вектору буде також змінювати кольор бардюру;
.Bat файли цих 3 програм:
Int4h.bat - програма виклику переривання 4h;
tasm.exe int4h.asm
tlink.exe int4h.obj
Lab14.bat - програма зміни кольору при переривані 4h;
tasm.exe lab14.asm /m2
tlink.exe lab14.obj /t
New.bat - програма з використанням вільного вектору;
tasm /n/t/m2 new.asm
tlink new.obj
Тексти програм:
Int4h.asm - програма виклику переривання 4h;
masm
model small
.data
.code
main:
int 4h
mov ah,4ch
int 21h
end main
Lab14.asm - програма зміни кольору при переривані 4h;
Частини програми, що були змінені:
.286
int_tab segment at 0h ; Таблица векторов прерываний:
org 4h*4 ; адрес вектора 4h,
vect_4h label dword ; длина поля - 4 байта
..........................................................................................
old_4h dd ? ; "Старое" значение вектора 4h
color db 0
.........................................................................................
call old_4h ; Вызов "старой" программы
; обработки прерывания 4h
; Если вызвано прерывание INT 4h, то реализуем изменение
; цвета бордюра
...............................................................................................
push es
mov ah,35h
mov al,04h
int 21h ; (es:bx) - адрес точки входа
; в программу обработки
; прерывания 4h
............................................................................................................
; В качестве "старого" запоминаем текущее значение вектора 4h
mov ax,word ptr vect_4h
mov word ptr old_4h,ax
mov ax,word ptr vect_4h+2
mov word ptr old_4h+2,AX
; В качестве текущего значения вектора 4h запоминаем адрес
; точки входа в нашу резидентную программу
mov word ptr vect_4h,offset border
mov word ptr vect_4h+2,cs
................................................................................................................
; Пытаемся удалить нашу резидентную программу
push es
mov ah,35h
mov al,04h
int 21h ; (es:bx) - текущее содержимое
; вектора 4h
----------------------------------------
New.asm - програма з використанням вільного вектору;
.286
code segment
assume cs:code
start:
mov cx,40
b:
call pause
int 58h
loop b
mov ah,4ch
int 21h
pause proc near
push cx
mov cx,04ffh
ploop0:
push cx
ploop1:
loop ploop1
pop cx
loop ploop0
pop cx
ret
pause endp
code ends
end start
Результати:
При виклику переривання 4h та прикеруванні процесом вільним вектором 58h змінюється колір бардюру, отже програма розміщується резидентно в пам’яті.
Висновки:
В ході лабораторної роботи було написано 3 програми. Всі програми працють коректно, резидентна програма може знищуватися з пам’яті та може повторно запускатися як резидентна. При роботі цих програм як резидентних і за наявністю переривання 4h та обраного мною вільного вектору 58h ми бачимо зміну кольору бардюру.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.