Команда сравнения cmp
Команда cmp сравнивает два операнда и по результатом сравнения выставляет флаги. Принцип ее работы такой же, как и у команды вычитания за одним лишь исключением, она не записывает результат вычитания на место первого операнда. Синтаксис команды cmp: Cmp операнд1, операнд2 Флаги, устанавливаемые командой cmp, можно анализировать специальными командами условного перехода. Команды условного перехода приведены в Таблице 7. Таблица 7 – Перечень команд условного перехода для команды cmp оп1, оп2
Так как команды условного перехода не изменяют флагов, то после одной команды 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 следовать несколько команд условного перехода?
|