Практическая работа №1
Исследование выполнения программы и организации памяти в ЭВМ Е14
Section titled “Исследование выполнения программы и организации памяти в ЭВМ Е14”Цель работы: изучить выполнение программы процессором учебной ЭВМ Е14, исследовать изменение содержимого регистров и памяти, а также получить практические навыки разработки простой программы на языке ассемблера Е14.
Основные теоретические положения
Section titled “Основные теоретические положения”1. Учебная ЭВМ Е14
Section titled “1. Учебная ЭВМ Е14”Е14 — учебная модель многопроцессорной ЭВМ, предназначенная для изучения принципов организации процессоров, памяти и параллельных вычислений.
В данной работе используется только CPU, без использования периферийных процессоров PPU.
Процессор содержит регистры, используемые для хранения данных и промежуточных результатов вычислений. Особое значение имеет счётчик команд PC, определяющий адрес следующей выполняемой команды.
2. Регистры процессора
Section titled “2. Регистры процессора”R0,R1,R2,R3— регистры общего назначения;PC— счётчик команд;SP— указатель стека.
3. Основные команды
Section titled “3. Основные команды”| Команда | Назначение |
|---|---|
MOV | копирование значения |
ADD | сложение |
SUB | вычитание |
BNE | переход, если результат не равен нулю |
HLT | остановка программы |
Примеры:
mov #10,r0 ; записывает 10 в R0add #1,r0 ; увеличивает R0 на 1sub #1,r0 ; уменьшает R0 на 1bne loop ; переход на метку loop, если результат не равен 04. Работа с памятью
Section titled “4. Работа с памятью”DATA: dw 10 dw 20 dw 30Косвенная адресация — обращение к памяти по адресу, хранящемуся в регистре:
add (r1),r2Процессор обращается к памяти по адресу, хранящемуся в R1, и прибавляет полученное значение к R2.
Задания для выполнения
Section titled “Задания для выполнения”Задание 1. Запуск и исследование готовой программы
Section titled “Задание 1. Запуск и исследование готовой программы”Загрузите в Е14 программу суммирования массива.
N=10
mov #N,r0 mov #T,r1 mov #0,r2
loop: add (r1),r2 add #2,r1 sub #1,r0 bne loop
mov r2,s hlt
s: rw 1
T: dw 1 dw 2 dw 3 dw 4 dw 5 dw 6 dw 7 dw 8 dw 9 dw 10Ожидаемый результат: 55.
1.1. Регистры
Section titled “1.1. Регистры”| Шаг | Команда | R0 | R1 | R2 |
|---|---|---|---|---|
| 1 | mov #N,r0 | |||
| 2 | mov #T,r1 | |||
| 3 | mov #0,r2 | |||
| 4 | add (r1),r2 |
Ответьте (устно или одной фразой в отчёте):
- Для чего используется
R0,R1,R2? - Почему
R1изменяется на 2 за шаг? - Как изменяется
PCпри выполнении программы?
1.2. Память
Section titled “1.2. Память”Найдите в памяти адрес начала массива T и адрес ячейки s, где хранится результат.
Ответьте одной фразой: чем данные программы отличаются от самой программы, размещённой в памяти?
Задание 2. Изменение исходных данных
Section titled “Задание 2. Изменение исходных данных”Измените массив и константу:
T: dw 10 dw 20 dw 30 dw 40 dw 50
N=5Рассчитайте ожидаемый результат самостоятельно, затем запустите программу и сравните.
Алгоритм программы менять нельзя.
Ответьте: почему при изменении исходных данных не потребовалось менять основную часть программы?
Задание 3. Самостоятельная разработка программы
Section titled “Задание 3. Самостоятельная разработка программы”Создайте программу на языке ассемблера Е14, вычисляющую произведение двух положительных целых чисел без команды умножения, методом повторного сложения:
result = 0пока второй множитель не равен 0: result = result + первое число второй множитель = второй множитель - 1Пример: 3 × 4 = 3 + 3 + 3 + 3 = 12.
Требования:
- первый множитель — в отдельном регистре;
- второй множитель — в отдельном регистре;
- отдельный регистр для результата;
- организован цикл;
- результат сохранён в памяти;
- программа завершается
HLT.
Проверочные данные: A = 7, B = 6 → ожидаемый результат 42.
Если не успеваете полностью отладить программу за отведённое время — доведите до рабочего состояния дома, отчёт по трассировке (3.1) можно оформить по последней рабочей версии.
Задание 3.1. Исследование своей программы
Section titled “Задание 3.1. Исследование своей программы”Выполните программу пошагово, зафиксируйте только первую итерацию цикла:
| Итерация | Множитель | Счётчик | Результат |
|---|---|---|---|
| Начало | |||
| 1 |
Определите:
- какая команда изменяет результат;
- какая команда изменяет счётчик;
- при каком условии цикл прекращает работу.
Задание 4. Связь с работой операционной системы
Section titled “Задание 4. Связь с работой операционной системы”Представим, что разработанная программа — это процесс, выполняемый ОС. Во время работы ОС должна временно остановить программу, чтобы передать процессор другой задаче.
Ответьте:
- Какой регистр указывает, с какой команды продолжить выполнение?
- Почему недостаточно сохранить только
PC? - Что произойдёт, если потеряется значение регистра с результатом?
Заполните таблицу:
| Элемент | Нужно сохранить? | Причина |
|---|---|---|
PC | ||
| регистр с результатом | ||
| регистр со счётчиком | ||
| регистр с исходным числом | ||
| программа в памяти | ||
| исходные данные |
Задание 5. Тестирование
Section titled “Задание 5. Тестирование”Проверьте программу на трёх наборах данных (вместо пяти):
| A | B | Ожидаемый результат | Фактический результат |
|---|---|---|---|
| 3 | 4 | 12 | |
| 7 | 6 | 42 | |
| 0 | 10 | 0 |
Граничный случай A=0 проверяет, что программа корректно завершает цикл сразу, без «лишних» проходов.
Домашнее / бонусное задание
Section titled “Домашнее / бонусное задание”Выполняется вне пары — теми, кто закончил раньше, или дома.
Контрольные вопросы
Section titled “Контрольные вопросы”- Какую функцию выполняет регистр
PC? - Для чего используются регистры общего назначения?
- Как программа обращается к данным в памяти?
- Чем программа отличается от данных, размещённых в памяти?
- Для чего используется команда
BNE? - Почему цикл позволяет реализовать умножение без отдельной команды умножения?
- Какие данные необходимо сохранить при временной остановке выполняющегося процесса?
- Почему сохранение только
PCнедостаточно для продолжения работы программы? - Как связаны процессор, память и выполняемая программа?
- Зачем операционной системе управлять состоянием выполняющихся программ?
Дополнительные задания
Section titled “Дополнительные задания”- Измените программу умножения так, чтобы она вычисляла степень числа методом последовательного умножения.
- Добавьте сохранение промежуточного результата в отдельную ячейку памяти.
- Измените программу так, чтобы она выполняла вычисление для трёх различных наборов данных без повторного написания алгоритма.
- Протестируйте программу на оставшихся наборах данных из полной таблицы:
10 × 5,1 × 20.
Рекомендуемые материалы
Section titled “Рекомендуемые материалы”- Учебные модели компьютера. Е14 — описание модели и примеры программ.
- Еремин Е. А. Материалы по учебным моделям ЭВМ.
- Документация к ассемблеру и системе команд Е14.