Автор работы: Пользователь скрыл имя, 22 Декабря 2010 в 03:16, курсовая работа
Все работы выполнены на программной модели учебной ЭВМ и взаимодействующих с ней программных моделях ВУ и кэш-памяти. Учебная ЭВМ является упрощенной программной моделью компьютера, позволяющей обучаемым освоить базовые понятия архитектуры: система команд, командный цикл, способы адресации, уровни памяти, способы взаимодействия процессора с внешними устройствами.
Пояснительная записка 3
Введение 4
Задание №1 5
Задание №2 7
Задание №3 9
Задание №4 11
Задание №5 14
Задание №6 18
Задание №7 21
Задание №8 24
Заключение 26
Список литературы 27
Результаты выполнения программы:
При , (-3)
При ,
При ,
Задание №3
Программирование цикла с переадресацией
Целью работы является ознакомление с приёмами обработки массивов, а также исследование механизма косвенной адресации.
Теоретические положения:
При
решении задач, связанных с обработкой
массивов, возникает необходимость
изменения исполнительного
Формулировка варианта задания:
Найти максимальное положительное число в последовательности чисел С1, С2, ... , Сn.
Граф-схема алгоритма решения задачи:
Распределение памяти таково: программу разместим в ячейках ОЗУ, начиная с адреса 000, примерная оценка объема программы – 25 команд. Значения массива необходимо прописать с 40-го адреса.
Текст программы:
Адрес | Команда | Примечание |
000 | RD #40 | Acc = 40 - начальный адрес массива чисел |
001 | WR 30 | 30 - индекс массива |
002 | RD #10 | Acc = 10 - количество элементов |
003 | WR 31 | 31 - счетчик цикла |
004 | RDI 100001 | -1 - признак того,
что нет ни одного |
005 | WR 32 | 32 - максимальный элемент |
006 | LOOP:RD @30 | Читаем в Acc число по адресу из ячейки 30 |
007 | JS NEXT | Если Acc < 0, то пропускаем |
008 | SUB 32 | Сравним с максимальным, для этого отнимем Acc = Acc - 32 |
009 | JZ NEXT | Если ноль, то одинаковые и на следующий |
010 | JS NEXT | Если < 0, то меньше максимального и тоже на следующий |
011 | RD @30 | Повторно читаем число |
012 | WR 32 | Сохраним как новый максимальный |
013 | NEXT:RD 30 | Увеличим на 1 индекс массива |
014 | ADD #1 | |
015 | WR 30 | |
016 | RD 31 | Уменьшим на 1 счетчик цикла |
017 | SUB #1 | |
018 | WR 31 | |
019 | JNZ LOOP | Если Acc не 0 (не все прошли), то на повтор |
020 | RD 32 | Прошли все, читаем найденное максимальное число в Acc |
021 | OUT | Выводим результат OR = Acc |
022 | HLT | Остановка |
Задание №4
Подпрограммы и стек
Цель работы – изучение организации программ с использованием подпрограмм; исследование сверхоперативной памяти, ознакомление с постинкрементным и предекрементным способами адресации.
Теоретические положения:
В программировании часто встречаются ситуации, когда одинаковые действия необходимо выполнять многократно в разных частях программы (например, вычисление функции sinx). При этом с целью экономии памяти не следует многократно повторять одну и ту же последовательность команд – достаточно один раз написать подпрограмму (в терминах языков высокого уровня – процедуру) и обеспечить правильный вызов этой подпрограммы и возврат в точку вызова по завершению подпрограммы.
Для вызова подпрограммы необходимо указать ее начальный адрес в памяти и передать (если необходимо) параметры – те исходные данные, с которыми будут выполняться предусмотренные в подпрограмме действия. Адрес подпрограммы указывается в команде вызова CALL, а параметры могут передаваться через определенные ячейки памяти, регистры или стек.
Возврат в точку вызова обеспечивается сохранением адреса текущей команды (содержимого регистра PC) при вызове и использованием в конце подпрограммы команды возврата RET, которая возвращает сохраненное значение адреса возврата в PC.
Для реализации механизма вложенных подпрограмм (возможность вызова подпрограммы из другой подпрограммы и т. д.) адреса возврата и содержимое регистров общего назначения целесообразно сохранять в стеке. Под стек отводится некоторая область ОЗУ, доступ к которой осуществляется через единственную ячейку, называемую вершиной стека. Адрес вершины хранится в указателе стека SP. Стек обслуживается по принципу LIFO (Last In – First Out, последним пришел – первым вышел).
В стек можно поместить содержимое регистра общего назначения по команде push или извлечь содержимое верхушки в регистр общего назначения по команде pop. Кроме того, по команде вызова подпрограммы call значение программного счетчика PC (адрес следующей команды) помещается в верхушку стека, а по команде ret содержимое верхушки стека извлекается в PC. При каждом обращении в стек указатель SP автоматически модифицируется.
В большинстве ЭВМ стек „растет“ в сторону меньших адресов, поэтому перед каждой записью содержимое SP уменьшается на 1, а после каждого извлечения содержимое SP увеличивается на 1. Таким образом, SP всегда указывает на верхушку стека.
Цель настоящей лабораторной работы – изучение организации программ с использованием подпрограмм. Кроме того, в процессе организации циклов мы будем использовать новые возможности системы команд модели ЭВМ, которые позволяют работать с новым классом памяти – сверхоперативной (регистры общего назначения – РОН). В реальных ЭВМ доступ в РОН занимает значительно меньшее время, чем в ОЗУ; кроме того, команды обращения с регистрами короче команд обращения к памяти. Поэтому в РОН размещаются наиболее часто используемые в программе данные, промежуточные результаты, счетчики циклов, косвенные адреса и т. п.
В системе команд учебной ЭВМ для работы с РОН используются специальные команды, мнемоники которых совпадают с мнемониками соответствующих команд для работы с ОЗУ, но в адресной части содержат символы регистров R0-R9.
Формулировка варианта задания:
Даны три массива чисел. Требуется вычислить номер первого положительного числа. Каждый массив задается двумя параметрами: адресом первого элемента и длиной.
Текст программы:
Команда | Примечания |
Основная программа | |
RD #85 | Загрузка |
WR R1 | параметров |
RD #14 | первого |
WR R2 | массива |
CALL M | Вызов подпрограммы |
WR R6 | Сохранение результата |
RD #100 | Загрузка |
WR R1 | параметров |
RD #4 | второго |
WR R2 | массива |
CALL M | Вызов подпрограммы |
WR R7 | Сохранение результата |
RD #110 | Загрузка |
WR Rl | параметров |
RD #9 | третьего |
WR R2 | массива |
CALL M | Вызов подпрограммы |
ADD R7 | Вычисление |
ADD R6 | среднего |
DIV #3 | арифметического |
OUT | Вывод результата |
Программа нахождения произведения нечётных чисел:
M:RD #1 ; Занесем 1
WR R3 ; в R3 - здесь будем накапливать произведение
L2:RD @R1+ ; Читаем очередное число с приращением адреса
WR R4 ; Сохраним
DIV #2 ; Вот тут самое "хитрое" место: так как нет ни команд сдвига, ни
; логических команд,
MUL #2 ; то пришлось разделить на 2, потом умножить на 2 и результат
; сравнить с исходным
SUB R4 ; Если не равны, то нечетное!
JZ L1 ; Если четное, то обходим
RD R4 ; Читаем найденное число
MUL R3 ; Умножим на сохранное произведение
WR R3 ; Сохраним
L1:JRNZ R2,L2 ; Циклим, пока R2 не 0
RD R3 ; Искомое произведение
RET ; Возврат
Задание №5
Командный цикл процессора
Целью работы является исследование командного цикла процессора на уровне микрокоманд.
Теоретические положения:
Реализация программы в ЭВМ сводится к последовательному выполнению команд. Каждая команда, в свою очередь, выполняется как последовательность микрокоманд, реализующих элементарные действия над операционными элементами процессора. Для пояснения логики функционирования ЭВМ ее целесообразно представить в виде совокупности узлов, связанных между собой коммуникационной сетью.
Процесс функционирования вычислительной машины состоит в последовательности пересылок информации между ее узлами и элементарных действий (микроопераций), выполняемых в узлах. Понятие узла здесь трактуется весьма широко: от регистра до АЛУ или основной памяти. Также широко следует понимать и термин „элементарное действие“. Это может быть установка регистра в некоторое состояние или выполнение операции в АЛУ.
Любое элементарное действие производится при поступлении соответствующего сигнала управления (СУ) из микропрограммного автомата устройства управления. Возможная частота формирования сигналов на выходе автомата определяется синхронизирующими импульсами, поступающими от генератора тактовых импульсов (ГТИ).
Элементарные пересылки или преобразования информации, выполняемые в течение одного такта синхронизации, называются микрооперациями. В течение одного такта могут одновременно выполняться несколько микроопераций. Совокупность сигналов управления, вызывающих микрооперации, выполняемые в одном такте, называют микрокомандой.
Относительно
сложные действия, осуществляемые вычислительной
машиной в процессе ее работы, реализуются
как последовательность микроопераций
и могут быть заданы последовательностью
микрокоманд, называемой микропрограммой.
Реализует микропрограмму, то есть
вырабатывает управляющие сигналы,
задаваемые ее микрокомандами, микропрограммный
автомат (МПА).
1-я часть задания:
Выполнить снова последовательность команд по варианту лабораторной работы №1, но в режиме Шаг. Зарегистрировать изменения состояния процессора и памяти в форме таблицы.
Вариант задания лабораторной работы №1:
№ | IR | Команда 1 | Команда 2 | Команда 3 | Команда 4 | Команда 5 |
17 | 000381 | 01 0 000 | 25 1 006 | 22 0 003 | 22 3 003 | 14 0 001 |
2-я часть задания:
Записать последовательность микрокоманд для следующих команд модели учебной ЭВМ:
ADD R3
ADD @R3
ADD @R3+
ADD -@R3
JRNZ R3,M3
M3:
MOV R4,R2
JMP M2
M2:
CALL M1
M1:
RET: PUSH R3
POP R5
Состояние модели в режиме моделирования на уровне микрокоманд
Адрес (PC) | Мнемокод | Микрокоманда | ОЗУ | CR | AЛУ | Ячейки | ||||
MAR | MDR | COP | ТА | ADR | Acс | DR | 003 | |||
000 | IN | MAR := PC | 000 | |||||||
MRd | 010000 | |||||||||
CR := MDR | 01 | 0 | 000 | |||||||
001 | PC := PC+1 | |||||||||
Acc := IR | 000381 | |||||||||
MUL #006 | MAR := PC | 001 | ||||||||
MRd | 251006 | |||||||||
CR := MDR | 25 | 1 | 006 | |||||||
002 | PC := PC+1 | |||||||||
DR := ADR | 000006 | |||||||||
ALU <-- COP | ||||||||||
Start ALU | 002286 | |||||||||
WR 003 | MAR := PC | 002 | ||||||||
MRd | 220003 | |||||||||
CR := MDR | 22 | 0 | 003 | |||||||
003 | PC := PC+1 | |||||||||
MAR := ADR | 003 | |||||||||
MDR := Acc | 002286 | |||||||||
MWr | 002286 | |||||||||
WR [003] | MAR := PC | |||||||||
MRd | ||||||||||
CR := MDR | 00 | 2 | 286 | |||||||
004 | PC := PC+1 | |||||||||
JNS 1 | MAR := PC | 004 | ||||||||
MRd | 140001 | |||||||||
CR := MDR | 14 | 0 | 001 | |||||||
005 | PC := PC+1 | |||||||||
001 | JNS |