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

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

Читайте также:
  1. В командном спарринге могут принимать участие только команды, участвовавшие в командных туль.
  2. Внутренние команды MS-DOS размещены в файле
  3. Вывод сооб-я команды в конец файла с сохр-ем ранее записан инф-и (дозапись) или созд-ем нов файла осущ-ся
  4. Д). Команды удаления каталога RD и DELTREE
  5. Даче команды для выемок.
  6. Значение, особенности и виды групповой работы. Особенности работы с местными сообществами. Основные проблемы создания команды при работе с местными сообществами.
  7. И условных обозначений
  8. игроков баскетбольной команды
  9. Изучение условных рефлексов у человека
  10. Команда проекта. Основные задачи команды проекта. Формирование и развитие команды проекта.
  11. Команды ping и traceroute
  12. Команды выделения

1. ЦЕЛЬ РАБОТЫ

Получить навыки использования операторов сравнения (cmp), условных(Jxx), безусловных (JMP) переходов и циклов (LOOP).

 

2. ОПИСАНИЕ КОМАНД

В ассемблере команда безусловного перехода (аналог GOTO) имеет вид: JMP <метка>.

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

 

Команды условного перехода записываются единообразно:

Jxxx <метка>

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

 

Список кодов команд арифметического условного перехода, используемых после команды сравнения (CMP op1,op2), приведен ниже.

 

Мнемокод Условие перехода Значения флагов

 

для любых чисел

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

 

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

 

Мнемокод Условие перехода Мнемокод Условие перехода

 

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

 

Команда условного перехода JCXZ <метка> проверяет значение регистра ECX. Действие этой команды можно описать так:

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

 

Еще одна команда LOOP <метка> обеспечивает управление циклом по счетчику в регистре ECX. Она ставится последней в цикле с известным числом повторений. Действие этой команды можно описать так:

ECX:=ECX-1; if ECX <> 0 then goto <метка>.

 

Управление циклом может проводиться также командами LOOPE, LOOPZ, LOOPNE, LOOPNZ.

 

Учтите, что цикл с командой LOOP всегда выполняется хотя бы один раз. Если начальное значение EСХ равно 0, цикл будет выполняться 232 раз. (Подумайте почему!)

 

Команды условного перехода обеспечивают только короткий переход, т.е. переход по адресу в пределах от -128 до +127 байт. Если метка расположена дальше этих значений, ассемблер фиксирует ошибку. Чтобы сделать длинный условный переход в программе, следует изменить условие перехода на противоположное и командой условного перехода обойти, расположенную за ней команду безусловного перехода:

 

Короткий условный переход Длинный условный переход

 

CMP AX,10 CMP AX,10

JGE LL1 GNGE LL2

; альтернативная часть JMP LL1

LL1:; продолжение программы LL2:; альтернативная часть

...

LL1:; продолжение программы

 

3. ЗАДАНИЕ

Задание из двух частей. В первом задании необходимо подсчитать количество чисел, соответствующих определенному условию на некотором числовом промежутке. Во втором задании требуется модифицировать свою программу так, чтобы найти и вывести на экран двухсотое число или пару чисел соответствующих заданному условию. Если таких чисел меньше двухсот, то вывести об этом сообщение на экран. Для выполнения задания выделяется 8 часов аудиторного времени.

 

4. ВАРИАНТЫ

1) На промежутке от 1 до 90 000. Подсчитать количество таких чисел X, что (Х+Х-1) - простое число. Ответ вывести на экран.

2) На промежутке от 1 до 127. Подсчитать количество таких чисел X, что ((Х*Х)-1) - простое число. Ответ вывести на экран.

3) На промежутке от 1 до 100 000. Подсчитать количество таких чисел X, что (Х+X-2) - делится на 3 без остатка. Ответ вывести на экран.

4) На промежутке от 1 до 255. Подсчитать количество таких пар чисел X и У, что (Х*У) при делении на 303 дает в остатке 1. Ответ вывести на экран.

5) На промежутке от -127 до 127. Подсчитать количество таких пар чисел X и Y, что (Х+У) = 80. Ответ вывести на экран.

6) На промежутке от -128 до 127. Подсчитать количество таких пар чисел X и Y, что (/Х/+У) <=70. Ответ вывести на экран.

7) На промежутке от -128 до 127. Подсчитать количество таких пар чисел X и Y, что 50 < (Х-У) <= 80. Ответ вывести на экран.

8) На промежутке от 1 до 100 000. Подсчитать количество таких чисел X, что (Х+Х-1)div500 - простое число. Ответ вывести на экран.

9) На промежутке от 1 до 32768. Подсчитать количество таких чисел X, что ((Хdiv21))-1) - четное число. Ответ вывести на экран.

10) На промежутке от -128 до 127. Подсчитать количество таких пар чисел X и Y, что Х/Y дает в остатке 0. Ответ вывести на экран.

11) На промежутке от -128 до 127. Подсчитать количество таких пар чисел X и У, что (Х*У-(Xdiv2))=0. Ответ вывести на экран.

12) На промежутке от -128 до 127. Подсчитать количество таких пар чисел X и Y, что (Х+У*X) ¹ 5000. Ответ вывести на экран.

13) На промежутке от -128 до 127. Подсчитать количество таких пар чисел X и Y, что (|Х|+У)div50 =>100. Ответ вывести на экран.

14) На промежутке от -128 до 127. Подсчитать количество таких пар чисел X и Y, что (|Х|-|У|) mod 4 =0. Ответ вывести на экран.

 


Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)