ПОЗНАВАТЕЛЬНОЕ Сила воли ведет к действию, а позитивные действия формируют позитивное отношение Как определить диапазон голоса - ваш вокал
Игровые автоматы с быстрым выводом Как цель узнает о ваших желаниях прежде, чем вы начнете действовать. Как компании прогнозируют привычки и манипулируют ими Целительная привычка Как самому избавиться от обидчивости Противоречивые взгляды на качества, присущие мужчинам Тренинг уверенности в себе Вкуснейший "Салат из свеклы с чесноком" Натюрморт и его изобразительные возможности Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д. Как научиться брать на себя ответственность Зачем нужны границы в отношениях с детьми? Световозвращающие элементы на детской одежде Как победить свой возраст? Восемь уникальных способов, которые помогут достичь долголетия Как слышать голос Бога Классификация ожирения по ИМТ (ВОЗ) Глава 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. |