Архитектура ЭВМ

Download Report

Transcript Архитектура ЭВМ

Архитектура ЭВМ
Практика 5.
Программирование циклов.
Команды для организации цикла.
• Организовать циклическое выполнение
некоторого участка программы можно
«вручную», используя команды условной
передачи управления или команду
безусловного перехода jmp.
• Но, учитывая важность такого
алгоритмического элемента, как цикл,
разработчики микропроцессора ввели в
систему команд группу команд,
облегчающую программирование циклов.
• Эти команды используют регистр ecx/cx как
счетчик цикла.
loop <метка_перехода>
Команда позволяет организовать циклы,
подобные циклам for в языках высокого
уровня с автоматическим уменьшением
счетчика цикла.
Работа команды:
 уменьшение регистра ecx/cx на 1;
▫ если (ecx/cx) > 0, то управление передается
на метку перехода;
▫ если (ecx/cx) = 0, то управление передается
на следующую после loop команду.
loope/loopz <метка_перехода>
Работа команд:
 уменьшение регистра ecx/cx на 1;
 анализ состояния флага нуля zf:
▫ если (ecx/cx) > 0 и zf = 1, то управление
передается на метку перехода;
▫ если (ecx/cx) = 0 или zf = 0, то управление
передается на следующую после loop
команду.
loopne/loopnz <метка_перехода>
• Работа команд:
 уменьшение регистра ecx/cx на 1;
 анализ состояния флага нуля zf:
▫ если (ecx/cx) > 0 и zf = 0, то управление
передается на метку перехода;
▫ если (ecx/cx) = 0 или zf = 1, то
управление передается на следующую
после loop команду.
Пример программы с циклом
Пример программы с вложенным циклом
Практическое задание
• Изучить пример программы.
• Разработать программу для своего варианта
арифметических действий.
• Протестировать программу. Записать в отчет
заданные исходные данные и полученные
результаты.
Вар
Задания
1
1. Составить программу вычисления суммы первых N натуральных
четных чисел. Протестировать программу при N=5.
2. Составить программу, подбирающую натуральные X и Y (одну
комбинацию, наибольшее Y при наибольшем X), удовлетворяющие
равенству: 2*X + 3*Y = 120. Найденные X, Y записать в память.
2
1. Составить программу вычисления произведения первых N
натуральных четных чисел. Протестировать программу при N=4.
2. Составить программу, подбирающую натуральные X и Y (одну
комбинацию, наименьшее Y при наименьшем X), удовлетворяющие
равенству: 2*X + 3*Y = 120. Найденные X, Y записать в память.
3
1. Составить программу вычисления суммы первых N натуральных
нечетных чисел. Протестировать программу при N=5.
2. Составить программу, подбирающую натуральные X и Y (одну
комбинацию, наименьшее Y при наименьшем X), удовлетворяющие
равенству: X2 + Y2 = 1201. Найденные X, Y записать в память.
Вар
4
Задания
1. Составить программу вычисления произведения первых N
натуральных нечетных чисел. Протестировать программу при
N=4.
2. Составить программу вычисления двойной суммы:
Протестировать программу при: n=3; m = 5.
5
1. Составить программу вычисления суммы первых N натуральных
чисел. Протестировать программу при N=5.
2. Составить программу вычисления двойной суммы:
Протестировать программу при: n=3; m = 5.
1. Составить программу вычисления произведения первых N
натуральных чисел (факториала N). Протестировать программу
при N=5.
6
2. Составить программу вычисления двойной суммы:
Протестировать программу при: n=3; m = 5.
Вар
7
Задания
1. Составить программу вычисления суммы N натуральных чисел,
хранящихся в памяти как массив A. Протестировать программу при: N=5;
A=(2, 5, 1, 3, 7).
2. Составить программу вычисления суммы произведения:
Протестировать программу при: n=3; m = 5.
8
1. Составить программу вычисления произведения N натуральных чисел,
хранящихся в памяти как массив. Протестировать программу при: N=5;
A=(2, 5, 1, 3, 7).
2. Составить программу вычисления суммы произведения:
Протестировать программу при: n=3; m = 5.
1. Составить программу вычисления суммы 6-ти байт памяти от адреса
start_adr в сегменте данных. Протестировать программу при следующем
определении в сегменте данных:
start_adr db 'Program'
9
2.
Составить программу вычисления произведения суммы:
Протестировать программу при: n=3; m = 5.
Вар
10
Задания
1. Составить программу вычисления произведения 6-ти байт памяти от адреса
start_adr в сегменте данных. Протестировать программу при следующем
определении в сегменте данных:
start_adr db '14.03'
2. Составить программу вычисления произведения суммы:
Протестировать программу при: n=3; m = 2.
11
1. Составить программу вычисления суммы 5-ти слов в памяти от адреса
start_adr в сегменте данных. Протестировать программу при следующем
определении в сегменте данных:
start_adr dw F1h, A10h, Ah, ADh, 123h
2. Составить программу вычисления двойного произведения:
Протестировать программу при: n=3; m = 2.
12
1. 1. Составить программу вычисления произведения 5-ти слов в памяти от
адреса start_adr в сегменте данных. Протестировать программу при
следующем определении в сегменте данных:
start_adr dw 1h, 2h, Ah, Bh, 100h
1. 2. Составить программу вычисления двойного произведения:
Протестировать программу при: n=3; m = 2.
Отчет
должен содержать:
1. Номер варианта, условие задачи
2. Текст программы с комментариями.
3. Результат тестирования программы
(расчетные и полученные результаты
тестирования).