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

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

Команда сравнения 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; просмотров: 1094. Нарушение авторских прав; Мы поможем в написании вашей работы!



Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

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

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

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

Методы анализа финансово-хозяйственной деятельности предприятия   Содержанием анализа финансово-хозяйственной деятельности предприятия является глубокое и всестороннее изучение экономической информации о функционировании анализируемого субъекта хозяйствования с целью принятия оптимальных управленческих...

Образование соседних чисел Фрагмент: Программная задача: показать образование числа 4 и числа 3 друг из друга...

Различие эмпиризма и рационализма Родоначальником эмпиризма стал английский философ Ф. Бэкон. Основной тезис эмпиризма гласит: в разуме нет ничего такого...

Индекс гингивита (PMA) (Schour, Massler, 1948) Для оценки тяжести гингивита (а в последующем и ре­гистрации динамики процесса) используют папиллярно-маргинально-альвеолярный индекс (РМА)...

Методика исследования периферических лимфатических узлов. Исследование периферических лимфатических узлов производится с помощью осмотра и пальпации...

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