Студопедия

КАТЕГОРИИ:


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

Условный переход




Безусловные переходы

Инструкция безусловного перехода передаёт управление команде, адрес которой указан в инструкции. Команда безусловного перехода имеет вид

JMP - безусловный переход - передает управление по адресу.

Переход можно осуществлять как в пределах одного сегмента, так и в другой сегмент. JMP r/m JMP i JMP [BX] JMP метка

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

Типы переходов:

- переход типа short (короткий) – если адрес перехода находится в пределах от –127 до +128 байт от команды, вызвавшей переход;

- переход типа near (ближний) – если адрес перехода находится в том же сегменте, что и команда, вызвавшей переход;

- переход типа far (дальний) – если адрес перехода находится в другом сегменте.

jmp [< тип > ptr ] операнд.

<тип> - тип перехода short (короткий) – смещение 127 байтов вперёд или 128 байтов назад, near (близкий) – смещение в пределах сегмента (64 Кбайта), far (дальний) – в любой сегмент с любым смещением.

ptr – приставка, которую можно перевести как указанный в.

Если тип не задан, по умолчанию принимается near.

Всего можно выделить пять типов безусловных переходов (таблица 3.1).

Таблица 3.1
Типы команд безусловного перехода
Название Мнемоника Описание
внутрисегментный прямой короткий jmp short <операнд> IP ← (IP) + 8-битное сме­ще­ние, определяемое операндом
внутрисегментный прямой близкий переход jmp near ptr <операнд> IP ← (IP)+16-битное сме­щение, определяемое операндом
внутрисегментный косвенный переход jmp <адрес операнда> IP ← 16-битный адрес перехода
Межсегментный прямой далекий переход jmp far ptr <операнд> IP ← смещение операнда в сегменте CS ← адрес сег­мен­та, содержа­ще­го опе­ранд
Межсегментный косвенный далёкий переход jmp far ptr <адрес опе­ран­да> IP ← операнд CS ← адрес операн­да +2

Команда условного перехода организует передачу управления при выполнении определённого в команде условия, в противном случае переход осуществляется на команду, следующую за инструкцией условного перехода. Условия определяются текущим состоянием флагов процес­сора. Каждая из 30 команд условных переходов проверяет определенную ком­би­нацию флагов.

Все условные переходы являются короткими, т.е. адрес перехода должен отстоять не далее, чем на - 128 или +127 байтов от первого байта следующей команды.

J условие - условный переход.

Это набор команд, выполняющих переход, если удовлетворяется соответствующее условие. При использовании после команды cmp, условия приобретают формулировки, соответствующие отношениям между операндами cmp.

Значение аббревиатур в названии команды jcc

Обозначение Англ. Русский Тип операндов
e equal Равно любые
n not Не любые
g greater Больше числа со знаком
l less Меньше числа со знаком
a above Выше (больше) числа без знака
b bellow Ниже (меньше) числа без знака

Эти команды осуществляют переходы типа short и near

 

Перечень команд условного перехода для команды cmp

Условие Мнемокод
со знаком без знака
ОП-1 =ОП_2 je equal
ОП-1 < >ОП_2 jne not equal
ОП-1 <ОП_2 jl low jnqe not greater or equal jb below jnae not above or equal
ОП-1 <= ОП_2 jle low or equal jngnot greater jbe below not equal jnanotabove
ОП-1 > ОП_2 jggreater jnle not low or equal jaabove jnbe not below or equal
ОП-1 => ОП_2 jge greater or equal jnlnot lower jae above or equal jnbnot below

Циклы

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

loop [<условие повторения цикла>] <метка короткого перехода>

Инструкция loop использует содержимое регистра СХ как счетчик повторений цикла. Команда loop уменьшает содержимое регистра СХ на 1 и передает управление по адресу, определяемому меткой перехода, если содержимое СХ ≠ 0, в противном случае выполняется следующая за LOOP инструкция. Подобно условным переходам инструкции этой группы могут осуществлять только короткие передачи управления, т.е. в пределах от -128 до +127.

Добавление к инструкции loop <условие повторения цикла> позволяет ввести дополнительные логические условия на повторение цикла:

· loope / loopz – повторять, пока ноль;

· loopne / loopnz – повторять, пока не ноль.

Проверка флага ZF осуществляется командой loop. Цикл повторяется, если содержимое СХ ≠ 0 и выполняется соответствующее условие, в противном случае выполняется следующая за loop инструкция.




Поделиться с друзьями:


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


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



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




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