Студопедия Главная Случайная страница Обратная связь

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

Команда сравнения cmp





Команда cmp сравнивает два операнда и по результатом сравнения выставляет флаги. Принцип ее работы такой же, как и у команды вычитания за одним лишь исключением, она не записывает результат вычитания на место первого операнда. Синтаксис команды cmp:

Cmp операнд1, операнд2

Флаги, устанавливаемые командой cmp, можно анализировать специальными командами условного перехода. Команды условного перехода приведены в Таблице 7.

Таблица 7 – Перечень команд условного перехода для команды cmp оп1, оп2

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

Так как команды условного перехода не изменяют флагов, то после одной команды cmp могут следовать несколько команд условного перехода. Это может быть сделано для того, чтобы исследовать каждую из альтернативных ветвей: «больше», «меньше» или «равно».

Пример

Необходимо написать программу, вычисляющую следующее арифметическое выражение:

Ниже приведен листинг этой программы.

 

#include " stdafx.h"

#include < iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

int a, b, c, x, f;

 

cout< < " Enter a=";

cin> > a;

cout< < " Enter b=";

cin> > b;

cout< < " Enter c=";

cin> > c;

cout< < " Enter x=";

cin> > x;

Asm

{

cmp a, 0

jle next1

cmp b, 10

jge next1

mov eax, a

cdq

add eax, b

imul x

mov ecx, 50

idiv ecx

mov f, eax

jmp my_exit

next1:

cmp a, 0

jge next2

mov eax, x

cdq

imul a

mov ebx, eax

mov eax, b

cdq

mov ecx, 7

idiv ecx

add eax, ebx

mov f, eax

jmp my_exit

next2:

mov eax, x

cdq

mov ecx, 6

idiv ecx

add edx, c

add edx, b

mov f, edx

my_exit:

}

cout< < " f=" < < f< < endl;

system(" pause");

return 0;

}

 

Порядок выполнения

1. С помощью данных методических указаний освоить работу с организацией ветвлений.

2. Написать программу согласно варианту задания.

3. Оформить отчет.

Задания

1. Написать программу, вычисляющую арифметическое выражение согласно варианту. Значение переменных вводится с клавиатуры.

Варианты


Вариант 1

Вариант 2

Вариант 3

Вариант 4

Вариант 5

Вариант 6

Вариант 7

Вариант 8

Вариант 9

Вариант 10

Вариант 11

Вариант 12

Вариант 13

Вариант 14


Контрольные вопросы

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

2. Для чего служит в микропроцессорах фирмы Intel — i486 блок предсказания переходов?

3. Расскажите о командах условного перехода.

4. Объясните понятие кэширование.

5. Расскажите о команде cmp.

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

7. Приведите пример сравнения двух чисел.

8. Расскажите о регистрах состояния и управления реализованных в микропроцессорах фирмы Intel — i486.

9. Приведите синтаксис команды jmp.

10. Приведите общие свойства и принципы, характерные 4 и 5-му поколениям ЭВМ, так называемой фон-неймановской архитектуры.

11. Перечислите, какие команды могут влиять на работы команд условного перехода.

12. Приведите синтаксис команды cmp.

13. Перечислите команды условного перехода.

14. Расскажите, какие команды влияют на работу команды jmp.

15. Могут ли после команды cmp следовать несколько команд условного перехода?

 








Дата добавления: 2014-11-10; просмотров: 1116. Нарушение авторских прав; Мы поможем в написании вашей работы!




Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...


Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...


Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

Основные симптомы при заболеваниях органов кровообращения При болезнях органов кровообращения больные могут предъявлять различные жалобы: боли в области сердца и за грудиной, одышка, сердцебиение, перебои в сердце, удушье, отеки, цианоз головная боль, увеличение печени, слабость...

Вопрос 1. Коллективные средства защиты: вентиляция, освещение, защита от шума и вибрации Коллективные средства защиты: вентиляция, освещение, защита от шума и вибрации К коллективным средствам защиты относятся: вентиляция, отопление, освещение, защита от шума и вибрации...

Задержки и неисправности пистолета Макарова 1.Что может произойти при стрельбе из пистолета, если загрязнятся пазы на рамке...

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

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

Классификация и основные элементы конструкций теплового оборудования Многообразие способов тепловой обработки продуктов предопределяет широкую номенклатуру тепловых аппаратов...

Studopedia.info - Студопедия - 2014-2025 год . (0.01 сек.) русская версия | украинская версия