рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

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

Команды сравнения и условного перехода - раздел Компьютеры, Практическая работа №1 Архитектура ЭВМ и вычислительных систем Если Переход Осуществляется Только При Выполнении Некоторого Условия И Не Осу...

Если переход осуществляется только при выполнении некоторого условия и не осуществляется в противном случае, то такой переход называется условным. Условный переход обычно реализуется в два шага: сначала сравниваются некоторые величины, в результате чего соответствующим образом формируются флаги (ZF, SF и т. д.), а затем выполняется собственно условный переход в зависимости от значений флагов. Поэтому мы сейчас рассмотрим и команду сравнения, и команды условного перехода.

Сравнение (compare): CMP op1,op2

Эта команда эквивалентна команде SUB op1,op2 за одним исключением: вычисленная разность op1-op2 никуда не записывается. Поэтому единственный и главный эффект от команды сравнения - это установка флагов, характеризующих полученную разность, или, что то же самое, характеризующих сравниваемые величины ор1 и ор2. Как формируются флаги при вычитании, мы уже рассматривали (см. лаб. 5), поэтому повторяться не будем.

Что же касается команд условного перехода, то их в ПК достаточно много, но в Ассемблере они все записываются единообразно:

Jxx <метка>

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

Все команды условного перехода можно разделить на три группы.

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

Е - equal (равно)

N - not (не, отрицание)

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

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

А - above (выше, больше) - для чисел без знака

В - below (ниже, меньше) - для чисел без знака

Как видно, для условий "меньше" и "больше" введены две системы обозначений. Это связано с тем, что после сравнения чисел со знаком и сравнения чисел без знака надо реагировать на разные значения флагов.

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

Мнемокод Содержательное условие для перехода после СМР ор1,ор2 Состояние флагов для перехода
для любых чисел
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=0
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=0
JAE/JNB op1 <= op2 CF=0

(Объясним, к примеру, почему в команде условного перехода "по меньше" для знаковых чисел (JL) проверяется соотношение OF<>SF. Если в команде СМР op1,op2 сравниваемые числа трактуются как знаковые, тогда возможны две комбинации флагов, соответствующие условию op1<op2. Во-первых, если при вычитании op1-op2 не было переполнения мантиссы (OF=0), тогда флаг SF фиксирует настоящий знак разности op1-op2 и потому SF=1 означает, что op1-op2<0, т. е. op1<op2. Во-вторых, если при вычитании произошло переполнение мантиссы (OF=1), тогда результатом команды будет число с противоположным знаком, чем у настоящей разности, и поскольку флаг SF фиксирует не знак настоящей разности, а знак результата команды, то условие SF=0 означает, что у искаженного результата знак положителен, а значит, у настоящей разности знак отрицателен, т. е. op1<op2. Итак, условию op1<op2 соответствует либо OF=0 и SF=1, либо OF=1 и SF=0, что можно записать более коротко: OF<>SF. Именно это условие и указано в таблице для команды JL.)

Пример. Пусть 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

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

 

Мнемокод Условие перехода Мнемокод Условие перехода
JZ ZF=1 JNZ ZF=0
JS SF=1 JNS SF=0
JC CF=1 JNC CF=0
JO OF=1 JNO OF=0
JP PF=1 JNP PF=0

(Замечание. Легко заметить, что следующие пары мнемокодов эквиваленты: JE и JZ, JNE и JNZ, JB и JC, JNB и JNC.)

Пример. Пусть А, В и С - беззнаковые байтовые переменные. Требуется вычислить С=А*А+В, но если ответ превосходит размер байта, тогда надо передать управление на метку ERROR.

Возможное решение этой задачи:

MOV AL,A

MUL AL

JC ERROR ;A*A > 255 (CF=1) а ERROR

ADD AL,B

JC ERROR ;перенос (CF=1) а ERROR

MOV C,AL

И, наконец, в третью группу входит только одна команда условного перехода, проверяющая не флаги, а значение регистра СХ:

JCXZ <метка>

Действие команды JCXZ (jump if CX is zero) можно описать так:

if CX=0 then goto <метка>

Примеры на использование этой команды будут приведены позже.

Отметим общую особенность команд условного перехода: все они осуществляют только короткий переход, т. е. с их помощью можно передать упраштение не далее чем на 127-128 байтов вперед или назад. Это примерно 30-40 команд (в среднем одна команда ПК занимает 3-4 байта). Дело в том, что в ПК все машинные команды условного перехода имеют вид КОП i8 и реализуют короткий относительный переход: IP:=IP+i8, а команд с операндом в слово (i16) нет. Это объясняется тем, что в большинстве случаев как раз и нужны такие короткие переходы, а с другой стороны, для команд длинных условных переходов в ПК попросту не хватило кодов операций.

Естественно, возникает вопрос: а как в этих условиях осуществлять длинные условные переходы, на расстояние более 127 байтов от команды перехода? Здесь надо привлекать команду длинного безусловного перехода. Например, при "далекой" метке М оператор

if AX=BX then goto M

следует реализовывать так:

if AX<>BX then goto L; {короткий переход}

goto M; {длинный переход}

L: ...

На ЯА это записывается следующим образом:

CMP AX,BX

JNE L

JMP M

L: ...

Получается очень коряво, но иного варианта нет.

Отметим, что использовать в командах условного перехода оператор SHORT не надо, т. к. все эти переходы и так короткие.

– Конец работы –

Эта тема принадлежит разделу:

Практическая работа №1 Архитектура ЭВМ и вычислительных систем

Архитектура ЭВМ и вычислительных систем... Тема Выполнение операций сложения и вычитания в обратном и дополнительном... Цель работы Научиться производить операции сложения и вычитания в дополнительных и обратных кодах...

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

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Особенности сложения чисел в обратном и дополнительном кодах.
При сложении чисел в дополнительном коде возникающая единица переноса в знаковом разряде отбрасывается. При сложении чисел в обратном коде возникающая единица переноса в знаковом разряде п

Числа с фиксированной точкой.
Запись числа с фиксированной точкой обычно имеет знаковый и цифровой разряды. Фиксированная точка означает, что на этапе конструирования ЭВМ было определено, сколько и какие разряды машинного слова

Числа с плавающей точкой.
Для представления чисел с плавающей точкой (ЧПТ) используется полулогарифмическая форма записи числа: N = ± mq ± p где q- основание системы счисления,

Умножение двоичных чисел
Применительно к двоичной ПСС наиболее известны следующие основные способы выполнения операций умножения: умножение начиная с младших разрядов множителя:

Проверка состава оборудования
В программе, предназначенной для тиражирования, очень важной характеристикой является переносимость. Поскольку ПЭВМ разных пользователей могут иметь существенные отличия в конфигурации оборудования

Тип ПЭВМ
В конце ПЗУ BIOS по адресу FF00:0FFE записан байт типа ПЭВМ. Специфицированы следующие 4 значения этого байта для машин фирмы IBM: 0xFF - IBM PC; 0xFE - XT; 0xFD - PCjr; 0xFC - AT. Для ПЭВМ других

Состав оборудования
Опеределять состав оборудования следует только после того, как мы определили тип ПЭВМ. Это обусловлено тем, что способы получения информации о составе оборудования различны для XT и для AT. Рассмот

Определение объема оперативной памяти
Методика определения объема памяти - такая же, как и определения списка оборудования. Объем ОЗУ (в Кбайтах) находится в области памяти BIOS по адресу 0040:0013 (2-байтное слово) и может быть получе

Команды сложения и вычитания
В ПК имеется несколько команд сложения и вычитания. Основными из них являются следующие: Сложение: ADD op1, op2Вычитание (subtract): SUB op1, op2 В этих к

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

Команды деления
Как и умножение, деление чисел без знака и со знаком также реализуется двумя командами: Деление целых без знака (divide): DIV ор Деление целых со знаком (integer

Изменение размера числа
Рассмотрим такую задачу. Пусть к числу из регистра ВХ надо прибавить число из регистра AL: BX:=BX+AL. Здесь требуется сложить слово с байтом, но в ПК нет команды сложения слова с байтом. Поэтому, п

Расширение байта до слова(convert byte to word): CBW
У этой команды местонахождение операнда и результата фиксировано: операнд всегда берется из AL, а результат всегда записывается в АХ. Команда записывает в регистр АН число 00h или 0FFh в зависимост

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

Ор1 ор2
r8 i8, r8, m8 m8 i8,r8 r16 il6, rl6, ml6 m16 il6, rl6 Команда производит поразрядное логическое умножение операндов и записы-вает результат на место первого опер

Проверка: TEST opl,op2
Это аналог команды AND, но результат логического умножения никуда не записывается. Главное в команде TEST - установка флагов. Как уже было сказано, в логических командах интерес представляет только

Исключающее ИЛИ (exclusive OR): XOR opl,op2
Допустимые типы операндов - как в команде AND. И здесь результат записывается на место первого операнда, причем i-й бит результата равен 0, если i-e биты операндов совпадают, и равен 1, ес

Прямой переход
В данном случае в качестве ор указывается метка той команды, на которую надо передать управление: JMP <метка> Пример: JMP L ;следующей будет выполняться команда с м

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

Команды управления циклом
С помощью команд перехода можно реачизовать любые разветвления и циклы. Например, следующие операторы языка Паскаль а) if X>0 then S1 else S2 б) while X>0 do S в) r

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги