Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Условный переход на основе команды CMP




Флаги, устанавливаемые командой CMP, можно анализировать специальными командами условного перехода:

Jxx <метка>

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

Мнемокод начинается буквой J (от jump), за которой следует одна или несколько букв, в сокращенном виде описывающих это условие. Одна и та же команда условного перехода может иметь в языке ассемблера несколько названий-синонимов (например, «меньше» - «не верно, что больше или равно»).

В таблице 4.1 приведены значения аббревиатур в названии команд условного перехода.

Таблица 4.1.

Значение аббревиатур в названии команд условного перехода.

Мнемоническое обозначение Английский Русский Тип операндов
E e equal Равно Любые
N n not Не Любые
G g greater Больше Числа со знаком
L l less Меньше Числа со знаком
A a above выше, в смысле “больше” Числа без знака
B b below ниже, в смысле “меньше” Числа без знака
AE ae above or equal выше или равно  
GE ge greater than or equal больше или равно  

Замечание. Для условий «меньше» и «больше» введены две системы обозначений, так как после сравнения чисел со знаком и сравнения чисел без знака надо реагировать на разные значения флагов.

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

Таблица 4.2.

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

Типы операндов Мнемокод команды условного перехода Критерий условного перехода Значения флагов для осуществления перехода
Любые je dst = src zf = 1
Любые jne dst<>src zf = 0
Со знаком jl/jnge dst < src sf <> of
Со знаком jle/jng dst <= src sf <> of or zf = 1
Со знаком jg/jnle dst > src sf = of and zf = 0
Со знаком jge/jnl dst => src sf = of
Без знака jb/jnae dst < src cf = 1
Без знака jbe/jna dst <= src cf = 1 or zf=1
Без знака ja/jnbe dst > src cf = 0 and zf = 0
Без знака jae/jnb dst => src cf = 0

Examle 4.2. Пусть X, Y, Z - -переменные размером в слово. Записать в Z значение максимального из чисел X и Y.

Решение этой задачи различно для чисел со знаком (см. слева) и для чисел без знака (см. справа), т. к. приходится использовать разные команды условного перехода:

;числа со знаком ;числа без знака
  MOV АХ, Х     MOV АХ, Х
  СМР AX, Y ; х=у?   СМР AX, Y;х = у?
  JGE М ; если х >= у, то метка M   JAE M
  MOV AX, Y     MOV AX, Y
M: MOV Z, AX   M: MOV Z, AX




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


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 499 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Свобода ничего не стоит, если она не включает в себя свободу ошибаться. © Махатма Ганди
==> читать все изречения...

2307 - | 2069 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.008 с.