Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Осуществление переходов

Читайте также:
  1. ВЛИЯНИЕ ВРЕМЕНИ НА ОСУЩЕСТВЛЕНИЕ И ЗАЩИТУ ПРАВ
  2. Команды ветвления и переходов
  3. Осуществление ГП и исполнение обязанностей.
  4. ОСУЩЕСТВЛЕНИЕ ДЕРЖАВНОГО ЗАМЫСЛА
  5. Осуществление операции
  6. Осуществление прав

Обычно в программе есть точки, в которых будет приниматься решение о том какая команда будет применятся следующая. Это решение может быть 2х видов:

· Безусловный – в данной точке нужно передать управление не той команде которая идёт следующая, другой, которая находится на некотором удалении.

· Условный – решение о том, какая команда будет выполнятся следующей принимается на основе анализа некоторых условий.

Микропроцессор узнаёт о следующей команде по содержимому пары регистров cs, eip/ip

Cs – сегментный регистр кода, в котором находится физический базовый адрес текущего сегмента кода.

Eip/ip – регистр указателя команды, в котором находятся значения, представляющие собой смещение памяти следующей команды подлежащей выполнению относительно начала текущего сегмента кода.

Таким образом команды передачи управления изменяют значения регистров, в результате чего микропроцессор выполняет переход к другому участку программы. Конвейер внутри микропроцессора при этом сбрасывается.

По принципу действия команды микропроцессора, обеспечивающие организацию перехода, можно разделить на 3 группы:

1. Команды безусловной передачи управления

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

b. Вызов процедуры и возврат из процедуры

c. Вызов программ прерываний и возврат из программы прерываний

2. Команды условной передачи управления

a. Команды перехода по результате команды сравнения

b. Команды перехода по состоянию определённого флага

c. Команды перехода по состоянию регистра ecx/cx

3. Команды управления циклом

a. Команды организации цикла со счётчиком ecx/cx

b. Команда организации цикла со счётчиком ecx/cx с возможностью досрочного выхода из цикла по дополнительному условию

Метка – это символическое имя обозначающее определённую ячейку памяти, предназначенную для использования в качестве операндов в командах передачи управления.

Транслятор ассемблера присваивает метке 3 атрибута:

1. Имя сегмента кода где описана метка.

2. Смещение – это расстояние в байтах от начала сегмента кода, в котором описана метка

3. Тип метки или атрибут расстояния

a. Near – это переход на эту метку возможен только в пределах сегмента кода где описана метка. Физически это означает, что для перехода на метку достаточно лишь изменить содержимое регистра eip/ip.

b. far – переход на метку возможен только в результате межсегментной передачи управления, осуществить которую возможно только с помощью изменения как содержимого eip/ip так и регистра cs

Метку можно определить 2 способами:

1. Оператором «:» - с помощью этого способа можно определить метку только ближнего типа. Символическое имя может быть определенно в программе только 1 раз. Определённую таким образом метку можно использовать в качестве операндов в командах условного перехода jcc и в командах безусловного перехода jmp или call. Команды должны находится в сегменте кода, где описана метка.

2. С помощью директивы «label». Её часто используют либо для объявления идентификатора заданного типа, либо для организации доступа к одной области памяти, как к области содержащей данные разных типов

Метка может быть только одного вида: либо near, либо far.


Дата добавления: 2015-11-26; просмотров: 50 | Нарушение авторских прав



mybiblioteka.su - 2015-2024 год. (0.006 сек.)