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

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

Читайте также:
  1. A. Команды умножения
  2. Quot;Однако подали команду на поднятие мощности вторично. А повторные команды выполняются беспрекословно".
  3. Quot;Проникающая сила": особый метод передачи усилия
  4. VI. Организация и проведение органами военного управления работы по реализации положений настоящей Инструкции
  5. VI. Расчет параметров цепной передачи
  6. Автоматизация и автоматизированные системы управления технологическим процессом.
  7. Административная теория организации и управления по А. Файолю

Есть 31 команда условной передачи управления (УПУ), но некоторые попарно совпадают, например: если > и если не < и не =. Разных команд всего 17. УПУ может быть только near и short, то есть метка перехода должна быть в том же сег­менте и не далее ±128 байт от УПУ.

Общий формат команды:

J* метка

где J* — jump условие — передача управления при выполнении условия.

Команда передает управление по прямому адресу — метке, если условие, указан­ное в команде, выполняется; в противном случае выполняется следующая по по­рядку команда. Выполнение условия определяется состояниями флагов регистра FL, которые установлены по результатам предыдущих формирующих условие пере­хода операций: арифметических, логических, сравнения и т. д.

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

Надо четко различать J* без знака (если сравниваются целые, без знака) и со зна­ком (если сравниваются целые со знаком), иначе результат будет совсем не тем (неверным).

Например, пусть регистр АХ содержит 11000110, а регистр ВХ — 00010110, и команда CMP AX, BX сравнивает содержимое этих регистров. Если данные беззнаковые, то число в АХ больше, а если знаковые — то меньше (поскольку в последнем случае еди­ница в крайнем левом разряде определяет знак числа — в АХ число отрицательное).

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

- JA/JNBE (Jump if Above/Not Below nor Equal) — переход, если выше/не ниже или равно (переход, если флаги ZF = 0 и CF = 0).

- JAE/JNB (Jump if Above or Equal/Not Below) — переход, если выше или равно/не ниже (CF = 0).

- JB/JNAE (Jump if Below/Not Above nor Equal) — переход, если ниже/не выше или равно (CF =1).

- JBE/JNA (Jump if Below or Equal/Not Above) — переход, если ниже или равно/не выше (CF = 1 или AF = 1).


Команды условной передачи управления для знаковых данных

- JG/JNLE (Jump if Greater/Not Less nor Egual) — переход, если больше/не мень­ше или равно (ZF = 0 и SF = OF).

- JGE/JNL (Jump if Greater or Equal/Not Less) — переход, если больше или равно/ не меньше (SF = OF).

- JL/JNGE (Jump if Less/Not Greater nor Equal) — переход, если меньше/не боль­ше или равно (SF><OF).

- JLE/JNG (Jump if Less or Equal/Not Greater) — переход, если меньше или равно/ не больше (ZF=1 или SF><OF).

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

- JE/JZ (Jump if Equal/Zero) — переход, если равно/нуль (ZF =1).

- JNE/JNZ (Jump if Not Equal/Not Zero) — переход, если не равно/не нуль (ZF = 0).

- JS (Jump if Sign) — переход, если есть знак (отрицательно) (SF =1).

- JNS (Jump if Not Sign) — переход, если нет знака (положительно) (SF = 0).

- JC (Jump if Carry) — переход, если есть перенос (аналог JB) (CF = 1).

- JNC (Jump if Not Carry) — переход, если нет переноса (аналог JNB) (CF = 0).

- JO (Jump if Overflow) — переход, если есть переполнение (OF =1).

- JNO (Jump if Not Overflow) — переход, если нет переполнения (OF = 0).

- JP/JPE (Jump if Parity/Parity Even) — переход, если есть четность (PF =1).

- JNP/JPO (Jump if No Parity/Parity Odd) — переход, если нет четности (PF = 0).

- JCXZ (Jump if CX is Zero) — переход, если содержимое регистра СХ равно О (СХ = 0).


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



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