МегаПредмет

ПОЗНАВАТЕЛЬНОЕ

Сила воли ведет к действию, а позитивные действия формируют позитивное отношение


Как определить диапазон голоса - ваш вокал


Игровые автоматы с быстрым выводом


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


Целительная привычка


Как самому избавиться от обидчивости


Противоречивые взгляды на качества, присущие мужчинам


Тренинг уверенности в себе


Вкуснейший "Салат из свеклы с чесноком"


Натюрморт и его изобразительные возможности


Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д.


Как научиться брать на себя ответственность


Зачем нужны границы в отношениях с детьми?


Световозвращающие элементы на детской одежде


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


Как слышать голос Бога


Классификация ожирения по ИМТ (ВОЗ)


Глава 3. Завет мужчины с женщиной


Оси и плоскости тела человека


Оси и плоскости тела человека - Тело человека состоит из определенных топографических частей и участков, в которых расположены органы, мышцы, сосуды, нервы и т.д.


Отёска стен и прирубка косяков Отёска стен и прирубка косяков - Когда на доме не достаёт окон и дверей, красивое высокое крыльцо ещё только в воображении, приходится подниматься с улицы в дом по трапу.


Дифференциальные уравнения второго порядка (модель рынка с прогнозируемыми ценами) Дифференциальные уравнения второго порядка (модель рынка с прогнозируемыми ценами) - В простых моделях рынка спрос и предложение обычно полагают зависящими только от текущей цены на товар.

Команды условного перехода, применяемые после команды сравнения.





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

Цель работы:научиться изменять последовательность выполнения команд, используя команду jmp и команды условного перехода.

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

JMP <op>

<op> – тем или иным способом указывает адрес перехода, указывая адрес той команды, которую должен выполнить следующей.

Прямой переход.

Прямой переход: JMP <метка>

В ПК имеется регистр IP, в котором хранится адрес следующей команды. Команда прямого перехода устроена, так что в ней указывается не адрес следующей команды, а разность между адресом команды и адресом команды перехода. Действие самой команды перехода заключается в прибавлении этой разности к текущему значению IP. Говоря точнее, относительный адрес перехода отсчитывается не от самой команды перехода, а от следующей за ним команды.

В зависимости от «расстояния» переходы бывают трех типов: короткие (SHORT), ближние (NEAR) и дальние (FAR). Тип перехода задается необязательным параметром инструкции JMP. Если тип не задан, по умолчанию используется тип NEAR.

Максимальная «длина» короткого перехода (то есть максимальное расстояние между текущим и целевым адресом) ограничена. Второй байт инструкции (операнд) содержит только одно 8-разрядное значение, поэтому целевой адрес может быть в пределах от -128 до 127 байтов. При переходе выполняется знаковое расширение 8-разрядного значения и его добавление к текущему значению Е(IР).

«Длина» ближнего перехода (NEAR) зависит только от режима процессора. В реальном режиме меняется только значение IP, поэтому мы можем «путешествовать» только в пределах одного сегмента (то есть в пределах 64 Кб); в защищенном режиме используется EIP, поэтому целевой адрес может быть где угодно в пределах 4 Гб адресного пространства.

Переход типа FAR модифицирует кроме IP еще и сегментный регистр CS, который используется при вычислении фактического адреса памяти. Поэтому команда перехода должна содержать новое значение CS.

 

Команды сравнения и условного перехода.

Если переход осуществляется только при выполнении некоторого условия и не осуществляется в противном случае, то такой переход называется условным. Условный переход осуществляется в два этапа:

- сначала сравнивают две величины, в результате чего соответствующим образом формируются флаги ZF, OF;

- затем выполняется собственно условный переход в зависимости от значений флагов.

CMP op1,op2

Таблица 1.

Допустимые типы операндов команды CMP.

op1 op2
r8 r8, m8, i8
m8 r8, i8
r16 r16, i16, m16
m16 r16, i16
r32 r32, i32, m32
m32 r32, i32

Jxx <метка>,

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

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



Je (равно)

Jn (не равно)

Jg (больше для чисел со знаком)

Jl (меньше для чисел со знаком)

Ja (больше для чисел без знака)

Jb (меньше для чисел без знака)

После сравнения чисел со знаком и сравнения чисел без знака надо реагировать на разные флаги.

Необходимо отметить, что одна и та же команда условного перехода в языке ассемблера может иметь несколько названий синонимов. Это объясняется тем, что одно и тоже условие можно сформулировать по-разному.

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

Таблица 2.

Команды условного перехода, применяемые после команды сравнения.

Мнемокод Условие для перехода после cmp op1,op2 Состояние флагов для перехода
Je Op1=op2 ZF=1
Jne Op1<>op2 ZF=0
Для чисел со знаком
Jl/ Jnge Op1<op2 SF<>OF
Jle/ Jng Op1<=op2 SF<>OF ZF=1
Jg/ Jnle Op1>op2 SF=OF ZF=1
Jge/ Jnl Op1>=op2 SF=OF
Для чисел без знака
Jb/ Jnae Op1<op2 CF=1
Jbe/ Jna Op1<=op2 CF=1 ZF=1
Ja/ Jnbe Op1>op2 CF=0 ZF=1
Jae/ Jnb Op1>=op2 CF=0

Во второй группе команды условного перехода, ставятся после команд отличных от команд сравнения и которые реагируют на значения некоторого флага. В мнемокодах этих команд указывается первая буква проверяемого флага, если переход должен быть выполнен при значении 1 этого флага либо эта буква указывается с n, если переход надо сделать при значении флага 0.

Таблица 3.





©2015 www.megapredmet.ru Все права принадлежат авторам размещенных материалов.