Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Замена существующего вектора прерывания

Mov es, ax

Mov ax, 40h

Mov es, ax

Mov ax, 40h

Передача параметров в резидентную программу

Mov es,ax

Mov ax, 40h

Вызов резидентной программы через область межзадачных связей

End begin

Cseg ends

Mov es,ax

Mov ax, 40h

Routine endp

Org 100h

Cseg segment

Mov es,ax

Mov ax, 40h

mov es:0f0h, offset routine;смещение в сегменте

mov es:0f2h, cs;адрес сегмента

mov dx, finish; оставляем программу резидентной

int 27h

Шаблон резидентной программы в таком случае имеет вид:

 

assume cs:cseg, ds:cseg, ss:cseg

begin: jmp short setup

routine proc far;начало процедуры

push ds; сохранение регистров

…; здесь тело процедуры

pop ds; восстановление регистров

iret;возврат из процедуры

finish equ $; определение размера программы

Setup:

mov es:0f0h, offset routine;смещение в сегменте

mov es:0f2h, cs;адрес сегмента

;оставляем программу резидентной

mov dx, finish; размер программы

int 27h; оставляем программу резидентной

В вызывающей программе следует ввести команды:

call dword ptr es:0f0h

 

Если резидентной программе требуются параметры или адреса параметров, то они записываются транзитной программой в обусловленные ячейки области межзадачных связей.

Перед записью параметров транзитная программа должна загрузить в регистр es адрес области межзадачных связей, затем записать в выбранные ячейки области межзадачных связей адрес массива параметров и содержимое регистра ds (адрес сегмента данных).

Резидентная программа должна настроить регистр es на область межзадачных связей и взять параметры из обусловленных ячеек памяти.

 

 

Примеры

В транзитной программе:

mov es:0f4h, offset mas; адрес массива

mov es:0f6h, ds; адрес сегмента данных

 

 

В резидентной программе:

mov si, es:0f4h; загружаем адрес массив а

mov ds, es:0f6h; загружаем адрес сегмента данных

mov ax, [si]; в ax – первое слово массива

mov bx, [si+2]

…….

;и так далее

Программист должен обеспечить следующее:

1) выделить буфер для временного хранения существующего вектора прерывания

2) в установочной части резидентной программы записать вектор в эту буферную память

3) при выходе из процедуры предусмотреть восстановление старого вектора прерывания

 

 

 

Пример:

В примере рассмотрена замена существующего вектора прерывания с номером 1ch другим вектором с последующим восстановлением после вызова резидентной программы.

 

<== предыдущая лекция | следующая лекция ==>
Запись адреса резидентной программы в область межзадачных связей | Main endp
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 444; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.006 сек.