![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Оператор условного перехода.
Команда условного перехода реализует изменение естественного порядка выполнения команд программы. В обозначение команд входят буквы, которые определяют условие перехода: E – “=”; N – “не =”; G – “> ”; L – “< ”; A – “> ”; B – “< ”; Решение о том, куда будет передано управление, принимается на основании условия. Источниками такого условия может быть: 1) любая команда, изменяющая состояние регистров – флагов. 2) команда сравнения CMP Формат команды CMP. Операнд1, операнд2 Команда выполняет вычитание из 1 операнда 2, при этом результат никуда не записывается, значение операнда не меняется, а изменяются только флаги. Рассмотрим: А)Операнды без знака: оп1< оп2 (ZF=0, CF = 0); оп1=оп2(ZF=1, CF=0); оп1> оп2(ZF=0, CF=1); Б) Операнды со знаком: оп1< оп2(ZF=0, SF=0); оп1= оп2(ZF=1, SF=0); оп1> оп2(ZF=0, SF=1); Основные команды условного перехода: JE оп1= оп2 JNE оп1 не= оп2 со знаком: JL / JNGE оп1< оп2 JLE / JNG оп1< = оп2 JG / JNLE оп1> оп2 JGE / JNL оп1> = оп2 без знака: JB / JNAE оп1< оп2 JBE / JNA оп1< = оп2 JA / JNBE оп1> оп2 JAE / JNB оп> = оп2 Оператор безусловного перехода. Для организации безусловного перехода на ассемблере имеется команда JMP JMP адрес перехода Рассмотрим пример: JMP@label1 … @label1: … JE адрес перехода JE@label2 … Адрес перехода может быть меткой или адресом области памяти, в которую предварительно помещён указатель перехода. В системе команд существует несколько кодов машинных команд безусловного перехода. Их различие определяется дальностью перехода и способом задания целевого адреса. Дальность перехода определяется местоположением – операндом команды. Этот адрес может находиться в текущем сегменте кода или в некотором другом сегменте. В первом случае переход называется внутрисегментовым или близким. Во втором случае – межсегментовым или дальним. I.Внутрисегментовый переход предполагает, что изменяется только содержимое регистра. Выделяют 3 варианта внутрисегментового перехода: 1)Прямой короткий внутрисегментовый переход. Применяется, когда расстояние от команды JMP до адреса не более чем 127 байт. В этом случае транслятор языка на код смещения выделяет 1 байт. В ходе операции заложена информация о том, что второй байт интерпретируется как смещение. 2) Прямой внутрисегментовый переход. Отличается от короткого тем, что длина машинной команды составляет 3 байта, в кот. 2 последних интерпретируются как смещение. В этом варианте можно осуществлять переход в пределах 64кБайт, относительно следующей JMP команды. 3)Косвенный внутрисегментовый переход. Означает, что команде JMP указывается не сам адрес, а место, где этот адрес записан.
|