Резидентні програми та виключення

Страницы работы

Содержание работы

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ «ХПІ»

Кафедра “Обчислювальна техніка та програмування”

Лабораторна робота №14

з курсу “Системне програмне забезпечення”

 на тему: “Резидентні програми та виключення“.

Виконав:             

                                 студент  групи АП-30б   

                                               Попов О.С.

Перевірив:

       Межерицький С. Г.

Харків 2002

Тема: “Резидентні програми та виключення”.

Мета: Розробити програми:

·  виклик переривання 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 ми бачимо зміну кольору бардюру.

Похожие материалы

Информация о работе