Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Механизм выполнения

МАШИННЫЙ ФОРМАТ

МЕХАНИЗМ ВЫПОЛНЕНИЯ

CALL ИмяПРоц

Особенности компиляции переходов вперед по коду

МАШИННЫЙ ФОРМАТ

МЕХАНИЗМ ВЫПОЛНЕНИЯ

JMP метка

Команда безусловного перехода JMP

КОМАНДЫ БЕЗУСЛОВНОЙ ПЕРЕДАЧИ УПРАВЛЕНИЯ

q команда безусловного перехода JMP;

q вызовапроцедуры CALL и возврата
из процедуры RET;

q вызова программных прерываний INT
и возврата из программных прерываний
IRET.

 

1. АдресПерехода = IP + дистанция;

2. IP = АдресПерехода; { Замена IP}

Следующей будет команда со смещением АдресПерехода в сегменте кода.

 

; короткий переход; 2 байта

EB <БАЙТ>

; обычный переход; 3 байта

E8 <СЛОВО>

; межсегментный переход; 5 байт

EA <ДВОЙНОЕ_СЛОВО>

 

...

0005 EB 05 90 jmp @21

0008 @3:

0008 B4 4C mov ah, 4ch

000A CD 21 int 21h

000C @21:

000C 0400*(00) db 1024 dup(0)

040C E9 FBF9 jmp @3

...

Вот переход вперед. Но метка @21 еще не встречалась. Я не знаю, будет ли команда длиной 2 или 3 байта. Занимаю 3 байта. Предполагаю следующую команду на точке

А вот и метка @21. Сколько байт от нее до? Всего 4, это < 127, значит переход будет ближним, EB 04

Оставшийся лишний байт забиваем кодом 90h (команда NOP) и корректируем дистанцию: 04 + 1 = 05. ОКОНЧАТЕЛЬНО: EB 05 90, это две команды - JMP на 05 байт вперед и NOP.

 

КОМАНДА ВЫЗОВА ПРОЦЕДУРЫ CALL

1. Скопировать в стек IP

2. АдресПроцедуры = IP + дистанция;

3. IP = АдресПроцедуры; { Замена IP}

Следующей будет выполняться первая команда вызываемой процедуры

; обычный вызов; 3 байта

код <СЛОВО>

Знаковое слово – это ДИСТАНЦИЯ ПЕРЕХОДА.
Адресация целевой метки - ОТНОСИТЕЛЬНАЯ

 

; межсегментный вызов; 5 байт

код <ДВОЙНОЕ_СЛОВО>

Двойноеое слово – это CS:IP входа в процедуру.
Адресация процедуры – АБСОЛЮТНАЯ!

 

КОМАНДА ВОЗВРАТА ИЗ ПРОЦЕДУРЫ RET

Заменить текущее IP словом, взятым с «вершины» стека;

Следующей будет выполняться команда вызывающей программы, ЗАПИСАННАЯ СРАЗУ ПОСЛЕ команды CALL.

На ПСЕВДОКОДЕ:

1. IP:= (SS: SP)^; { Присвоить IP значение, которое находится по адресу SS: SP}

2. SP:= SP + 2; { «очистить» ячейку стека}

 

ОБЩАЯ СХЕМА ОБРАБОТКИ ПРЕРЫВАНИЯ

Передача управления на обработчик делается по АБСОЛЮТНОМУ адресу!

 

 

Команда вызова программного прерывания INT

INT номер_прерывания

<== предыдущая лекция | следующая лекция ==>
Группы команд передачи управления | Команды условной передачи управления
Поделиться с друзьями:


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


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



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




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