Модель учебной ЭВМ

Автор работы: Пользователь скрыл имя, 22 Декабря 2010 в 03:16, курсовая работа

Краткое описание

Все работы выполнены на программной модели учебной ЭВМ и взаимодействующих с ней программных моделях ВУ и кэш-памяти. Учебная ЭВМ является упрощенной программной моделью компьютера, позволяющей обучаемым освоить базовые понятия архитектуры: система команд, командный цикл, способы адресации, уровни памяти, способы взаимодействия процессора с внешними устройствами.

Содержание

Пояснительная записка 3
Введение 4
Задание №1 5
Задание №2 7
Задание №3 9
Задание №4 11
Задание №5 14
Задание №6 18
Задание №7 21
Задание №8 24
Заключение 26
Список литературы 27

Прикрепленные файлы: 1 файл

Модель учебной ЭВМ.docx

— 148.80 Кб (Скачать документ)

Результаты  выполнения программы:

При , (-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                

Информация о работе Модель учебной ЭВМ