Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Команды передачи управления.
Цель: изучить основные команды передачи управления.
Команда |
Назначение |
Процессор |
JMP операнд |
Безусловный переход |
8086 |
JMP передает управление в другую точку программы, не сохраняя какой-либо информации для возврата. Операндом может быть непосредственный адрес для перехода (в программах используют имя метки, установленной перед командой, на которую выполняется переход), а также регистр или переменная, содержащая адрес.
В зависимости от типа перехода различают:
При выполнении переходов типа short и near команда JMP фактически преобразовывает значение регистра EIP (или IP), изменяя тем самым смещение следующей исполняемой команды относительно начала сегмента кода. Если операнд регистр или переменная в памяти, то его показатель просто копируется в EIP, как если бы это была команда MOV. Если операнд для JMP - непосредственно указанное число, то его значение суммируется с содержимым EIP, приводя к относительному переходу. В ассемблерных программах в качестве операнда обычно указывают имена меток, но на уровне исполняемого кода ассемблер вычисляет и записывает именно относительные смещения.
Выполняя дальний переход в реальном, виртуальном и защищенном режимах (при переходе в сегмент с теми же привилегиями), команда JMP просто загружает новое значение в EIP и новый селектор сегмента кода в CS, используя старшие 16 бит операнда как новое значение для CS и младшие 16 или 32 бит в качестве значений IP или EIP.
Команда |
Назначение |
Процессор |
Jcc метка |
Условный переход |
8086 |
Это набор команд, выполняющих переход (типа short или near), если удовлетворяется соответствующее условие, которым в каждом случае реально является состояние тех или иных флагов. Но, когда команда из набора Jcc используется сразу после СМР, условия приобретают формулировки, соответствующие отношениям между операндами СМР (см. табл. 1). Например, если операнды СМР были равны, то команда JE, выполненная сразу после СМР, осуществит переход.
Операнд для всех команд из набора Jcc - 8-битное или 32-битное смещение относительно текущей команды.
Слова «выше» и «ниже» в таблице относятся к сравнению чисел без знака; слова «больше» и «меньше» учитывают знак.
Команды Jcc не поддерживают дальних переходов, поэтому, если требуется выполнить условный переход на дальнюю метку, необходимо использовать команду из набора Jcc с обратным условием и дальний JMP, как, например:
Таблица 1. Варианты команды Jcc
Код команды |
Реальное условие |
Условие для CMP |
JA JBE |
CF=0 и ZF=0 |
Если выше Если не ниже и не равно |
JAE JNB JNC |
CF=0 |
Если выше или равно Если не ниже Если нет переноса |
JB LNAE JC |
CF=1 |
Если ниже Если не выше и не равно Если перенос |
JBE JNA |
CF=1 или ZF=1 |
Если ниже или равно Если не выше |
JE JZ |
ZF=1 |
Если равно Если ноль |
JG JNLE |
ZF=0 и SF=OF |
Если больше Если не меньше и не равно |
JGE JNL |
SF=OF |
Если больше или равно Если не меньше |
JL JNGE |
SF=OF |
Если меньше Если не больше и не равно |
JLE JNG |
ZF=1 или SF=OF |
Если меньше или равно Если не больше |
JNE JNZ |
ZF=0 |
Если не равно Если не ноль |
JNO |
OF=0 |
Если нет переполнения |
JO |
OF =1 |
Если есть переполнение |
JNP JPO |
PF=0 |
Если нет четности Если нечетное |
JP JPE |
PF=1 |
Если есть четность Если четное |
JNS |
SF=0 |
Если нет знака |
JS |
SF=1 |
Если есть знак |
Выполняет ближний переход на указанную метку, если регистр СХ или ЕСХ (для JCXZ и JECXZ соответственно) равен нулю. Так же как и команды из серии Jcc, JCXZ и JECXZ не могут выполнять дальних переходов. Проверка равенства СХ нулю, например, может потребоваться в начале цикла, организованного командой LOOPNE, - если в него войти с СХ = 0, то он будет выполнен 65 535 раз.
Команда |
Назначение |
Процессор |
LOOP метка |
Цикл |
8086 |
Уменьшает регистр ЕСХ на 1 и выполняет переход типа short на метку (которая не может быть дальше расстояния -128...+ 127 байт от команды LOOP), если ЕСХ не равен нулю. Эта команда используется для организации циклов, в которых регистр ЕСХ (или СХ при 16-битной адресации) играет роль счетчика. Так, в следующем фрагменте команда ADD выполнится 10 раз:
Команда LOOP полностью эквивалентна паре команд
Но LOOP короче этих двух команд на один байт и не изменяет значения флагов.
Команда |
Назначение |
Процессор |
LOOPE метка LOOPZ метка LOOPNE метка LOOPNZ метка |
Цикл, пока равно Цикл, пока ноль Цикл, пока не равно Цикл, пока не ноль |
8086 8086 8086 8086 |
Все перечисленные команды уменьшают регистр ЕСХ на один, после чего выполняют переход типа short, если ЕСХ не равен нулю и если выполняется условие.
Для команд LOOPE и LOOPZ условием является равенство единице флага ZF, для команд LOOPNE и LOOPNZ - равенство флага ZF нулю. Сами команды LOOPcc не изменяют значений флагов, так что ZF должен быть установлен (или сброшен) предшествующей командой. Например, следующий фрагмент копирует строку из DS:SI в строку в ES:DI, пока не кончится строка (СХ = 0) или пока не встретится символ с ASCII-кодом 13 (конец строки):
Пример 1. Дано четырехзначное число n. Найти новое число m, которое получается из числа n путем замены первой и последней цифры на 1.
Решение:
Нам необходимо, например, из числа 2345 получить новое число 1341.
Результат работы программы:
Пример 2. Даны три целых числа. Вывести на экран те из них, которые кратны пяти.
(Команда Nop – отсутствие операции).
Результат работы программы:
Пример 3. Вычислить сумму .
Результат работы программы:
1. Составить программу для выполнения целочисленных арифметических действий.
1.1. Дано трехзначное натуральное число В. Найти сумму его цифр.
1.2. Дано трехзначное натуральное число А. Получить новое натуральное число В, в котором поменялись бы местами 1 и 3 цифры числа А.
1.3. Дано трехзначное натуральное число В. Получить новое натуральное число А, в котором поменялись бы местами 2 и 3 цифры числа В.
1.4. Дано трехзначное натуральное число В. Найти удвоенное произведение его цифр.
1.5. Дано трехзначное натуральное число А. Получить новое натуральное число В, в котором поменялись бы местами 1 и 2 цифры числа А.
1.6. Дано трехзначное натуральное число А. Получить новое натуральное число В, который являлся бы перевёртышём числа А (например, А=123, тогда В=321).
1.7. Дано трехзначное натуральное число В. Найти произведение его цифр.
1.8. Дано трехзначное натуральное число В. Найти новое двузначное число A, в котором цифра обозначающая десятки равна сумме всех цифр числа В, а цифра обозначающая единицы равна произведению всех цифр числа В .
1.9. Дано трехзначное натуральное число А. Получить новое натуральное число В, в котором цифра числа А, обозначающая десятки, была бы удвоена.
1.10. Дано трехзначное натуральное число В. Получить новое натуральное двузначное число А, в котором поменялись бы местами 1 и 3 цифры числа В.
1.11. Дано трехзначное натуральное число В. Найти учетверенное произведение его цифр.
1.12. Дано трехзначное натуральное число А. Получить новое натуральное двузначное число В, в котором поменялись бы местами 1 и 2 цифры числа А.
1.13. Дано трехзначное натуральное число А. Получить новое натуральное двузначное число В, в, в котором цифра обозначающая десятки равна произведению всех цифр числа В, а цифра обозначающая единицы равна сумме всех цифр числа В.
1.14. Дано трехзначное натуральное число В. Найти сумму произведений его цифр. (Например, из числа123 получим 1*2+1*3+2*3
2. Выполнить следующие задания:
2.1. Известны два расстояния: одно в километрах, другое – в метрах (1 км=1000 м). Какое из расстояний меньше?
2.2 Составить программу, которая уменьшает первое введенное число в два раза, если оно больше второго введенного числа.
2.3. Даны два числа. Если второе число в квадрате меньше первого числа, то увеличить второе число в пять раз.
2.4. Даны радиус круга и сторона квадрата. У какой фигуры площадь больше?
2.5. Даны три целых числа. Вывести на экран те из них, которые являются нечетными.
2.6. Даны три натуральных числа. Определить, имеется ли среди них хотя бы одна пара равных между собой чисел.
2.7. Даны три целых числа. Возвести в квадрат те, которые положительные.
2.8. Даны три целых числа. Определить, сколько из них четных.
2.9. Дано трехзначное число. Определить является ли сумма его цифр двузначным числом?
2.10. Даны четыре целых числа. Найти сумму тех чисел, которые больше пяти.
2.11. Даны 3 натуральных числа. Определить какие из них оканчиваются цифрой 7?
2.12. Даны четыре целых числа. Определить сумму тех чисел, которые кратны трем.
2.13. Даны объемы и массы двух тел из разных материалов. Материал какого из тел имеет большую плотность?
2.14. Определить максимальное и минимальное значение из двух различных натуральных чисел.
3. Составить программу для решения следующих задач:
3.1. Даны три различных целых числа. Определить, какое из них (первое, второе или третье) самое большое.
3.2. Определить является ли треугольник со сторонами a, b, c равносторонним?
3.3. Определить является ли треугольник со сторонами a, b, c равнобедренным?
3.4. Даны натуральные положительные числа a, b, c, d. Выяснить, можно ли прямоугольник со сторонами a, b уместить внутри прямоугольника со сторонами c, d так, чтобы каждая из сторон одного прямоугольника была параллельна или перпендикулярна каждой стороне другого прямоугольника.
3.5. Даны три угла. Проверить могут ли они быть углами треугольника. Если да, то проверить, будет ли этот треугольник остроугольным.
3.6. Даны натуральные положительные числа a, b, c, x, y. Выяснить, пройдет ли кирпич с ребрами a, b, c в прямоугольное отверстие со сторонами x, y. Просовывать кирпич в отверстие разрешается только так, чтобы каждое из ребер было параллельно или перпендикулярно каждой из сторон отверстия.
3.7. Даны три различных целых числа. Определить, какое из них (первое, второе или третье) самое маленькое.
3.8. Даны три различных целых числа. Определить, какое из них (первое, второе или третье) является средним (средним назовём число, которое больше минимального и меньше максимального).
3.9. В чемпионате по футболу команде за выигрыш дается 3 очка, за проигрыш – 0, за ничью – 1. Известно количество очков, полученных командой за игру. Определить словесный рузультат игры.
3.10. Пройдет ли кирпич со сторонами а, b и с сквозь прямоугольное отверстие со сторонами p и q? Стороны отверстия должны быть параллельны граням кирпича.
3.11. Даны три различных целых числа. Определить сумму двух наибольших из этих трех чисел.
3.12. Даны три различных целых числа. Определить произведение двух наименьших из этих трех чисел.
3.13. Даны две тройки чисел. В каждой тройке все числа различные. Найти сумму средних чисел каждой тройки.
3.14. Вывести на экран номер четверти координатной плоскости, которой принадлежит точка с координатами (x, y), если они не нулевые.
4. Написать программу для вычисления суммы ряда.
4.1. Дано натуральное число n. Найти сумму n2 + (n+1)2 +… + (2n)2.
4.2. Вычислить сумму .
4.3. Вычислить сумму ряда .
4.4. Найти сумму кубов всех целых чисел от 2 до 30.
4.5. Найти сумму 22 + 23 + 24 + …+ 210.
4.6. Найти сумму квадратов всех целых чисел от a до 30.
4.7. Вычислить сумму 1!+2!+3!+…+n! . Значение .
4.8. Дано натуральное число n. Найти сумму n2 + (n-1)2 +… + 12.
4.9. Найти сумму всех чисел от a до 50.
4.10. Найти сумму –12 + 22 – 32 + 42 …+ 102.
4.11. Найти утроенное произведение всех чисел от 1 до 40.
4.12. Найти сумму кубов всех чисел от 1 до 50.
4.13. Найти сумму квадратов всех чисел от 1 до 50.
4.14. Найти сумму n2 + (n-2)2 +… + 12, где n – нечетное число.
5. Выполните следующие задания:
5.1. и 5.8. Дано натуральное число. Определить, если в нем цифра A (А вводится с клавиатуры).
5.2. и 5.9. Дано натуральное число. Найти произведение его цифр, меньших семи.
5.3.и 5.10. Дано натуральное число. Найти сумму четных и сумму нечетных цифр числа.
5.4. и 5.11. Дано натуральное число. Найти количество четных и количество нечетных цифр числа.
5.5. и 5.12. Дано натуральное число. Найти первую и последнюю цифры числа.
5.6. и 5.13. Дано натуральное число. Сколько раз данная цифра А встречается в данном числе (А вводится с клавиатуры).
5.7. и 5.14. Дано натуральное число. Найти его минимальную цифру.