Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Лабораторная работа 2 Команды передачи управления

Работа добавлена на сайт samzan.net: 2015-07-05

Поможем написать учебную работу

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

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

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 19.5.2024

Лабораторная работа №2

Команды передачи управления.

Цель: изучить основные команды передачи управления.

Теоретическая часть

Команда

Назначение

Процессор

JMP операнд

Безусловный переход

8086

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

В зависимости от типа перехода различают:

  •  переход типа short (короткий переход) - если адрес перехода находится в пределах -128...+ 127 байт от команды JMP;
  •  переход типа near (ближний переход) - если адрес перехода находится в том же сегменте памяти, что и команда JMP;
  •  переход типа far (дальний переход) - если адрес перехода находится в другом сегменте. Дальний переход может выполняться и в тот же самый сегмент при условии, что в сегментной части операнда указано число, совпадающее с текущим значением CS;
  •  переход с переключением задачи - передача управления другой задаче в многозадачной среде. Этот вариант будет рассмотрен позже.

При выполнении переходов типа 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.  Ознакомьтесь с теоретическим материалом.
  2.  Разберите все примеры из практической части лабораторной работы, т.е. наберите и просмотрите их работу.
  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. Дано натуральное число. Найти его минимальную цифру.




1. А Тюрго об эволюции классовой структуры буржуазного общества
2. Уральский государственный технический университет УПИ И
3. тема Олександровича 1997 року народження
4. ВИРТУАЛЬНАЯ РЕАЛЬНОСТЬ И ДЕЙСТВИТЕЛЬНОСТЬ В СОЗНАНИИ МОЛОДЁЖИ МЕТОДОЛОГИЧЕСКАЯ ЧАСТЬ Обоснова
5. Тема- Пингвин Программные задачи- Учить вырезать пингвина используя прием силуэтного вырезывания
6. Модуль 2 Криміналістичні засоби та методи розкриття і розслідування кримінальних правопорушень Тес
7. . Организационнотехнические мероприятия обеспечивающие безопасность работы в электроустановках При п
8. А ~ это электротехнические устройства применяемые при использовании электрической энергии начиная от ее
9. Статья- Вычисление собственных чисел и собственных функций опрератора Штурма-Лиувилля на полуоси
10. джерело права і
11. а Один или несколько юридических и-или физических лиц Акционеры один или несколько ю
12. Академия 2007. 3
13. Понятие вектора
14. Реферат- Оптические инструменты, вооружающие глаз
15. Динамическое распределение памяти
16. Кан сказал- ~ Карбюратор я починил
17. БАЙКАЛЬСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЭКОНОМИКИ И ПРАВА ФГБОУ ВПО БГУЭП.
18. Тема 1 Психологическая наука в системе школьного обучения
19. билет Ту~ан жер ~~ымы м~тіні туралы ~~гімелеу
20. Усогорский детский сад Алёнка Удорского района Республики Коми Сценарий игровой п