КАТЕГОРИИ: Архитектура-(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 другим вектором с последующим восстановлением после вызова резидентной программы.
Дата добавления: 2014-01-04; Просмотров: 444; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |