Моделирование машины Фон-Неймана

Автор работы: Пользователь скрыл имя, 21 Мая 2013 в 20:54, курсовая работа

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

Курсовая работа посвящена изучению структуры и работы цифровой вычислительной машины, изучению и использованию модуля Graph Турбо Паскаля, знакомство с основами языка ассемблера и машинного языка, освоению техники разработки и отладки многофайлового программного продукта на примере создания программной модели ЦВМ.

Вложенные файлы: 1 файл

nyashny.doc

— 241.50 Кб (Скачать файл)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

КУРСОВАЯ РАБОТА

 

по программированию на тему:

 

«Моделирование  машины Фон-Неймана»

 

 

 

 

 

 

 

 

 

 

 

Выполнил:

Проверил:

 

 

 

 

 

 

Введение

Курсовая работа посвящена изучению структуры и работы цифровой вычислительной машины, изучению и использованию модуля Graph Турбо Паскаля, знакомство с основами языка ассемблера и машинного языка, освоению техники разработки и отладки многофайлового программного продукта на примере создания программной модели ЦВМ.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Оглавление

 

Индивидуальное задание…………………………………………………….4

Описание процесса разработки и обоснование метода решения задачи. .5

Описание программы………………………………………………………...8

Список литературы…………………...........................................................11

Приложение………………………………………………………………….12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Индивидуальное  задание

1. Написать моделирующую  программу для изображения в  графическом режиме на экране  ПЭВМ структуры МВМ и выполнения  машинной программы МВМ.

2. Составить программу  на языке МВМ для вычисления фукции по формуле F=7+A-(C+D)-C. В переменной ZERO посчитать количество значений вычитаемых переменных, равных нулю. Вычислять в последовательности записи формулы. Результат вычисления поместить в память в операнд F.

3. Программа должна отображать на экране монитора название работы, автора, структуру МВМ, язык управления и демонстрировать работу МВМ в автоматическом и управляемом режимах с изменяемой скоростью.

4. Программа должна иметь  справку о своем назначении  и использовании, вызываемую по ключу «/?» и по пустой командной строке.

5. Имя каталога с графическими  драйверами и шрифтами должно  передаваться в командной строке.

6. Программа должна проверять  наличие необходимых файлов, а  при их отсутствии запрашивать  расположение.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Описание  процесса разработки и обоснование  метода решения задачи.

Описание  разработки и обоснование структур данных

и их форматов

Для отображения  выходных данных на экране будем использовать модуль Graph. Для вывода рамок используется процедура Rectangle, а для вывода стрелок – вывод символов “<” и “>”. Это быстрее и проще, чем изображать стрелки из двух линий.

Для вывода текста (название, имена регистров и ячеек  памяти, справка, режим, стрелки) используется процедура OutTextXY.

Для вывода линий используется процедура Line с параметрами координат начала и конца линии. Первый вариант решения задачи описания линий – задать четыре числа. Однако на изображении структуры МВМ есть линии с одинаковой длиной и расположены они только горизонтально или вертикально. Поэтому количество чисел, которыми надо описывать линию, можно сократить до трёх (координаты начала и длина), указав дополнительно направление. Это второй вариант, который намного лучше, так как процесс отладки (или настройки) в этом случае упростится.

Рамки выводятся  процедурой Rectangle. Первый вариант отображения рамок следует из параметров этой процедуры – задать координаты диагональных углов, т.е. четыре разных числа. Однако в этом проекте все рамки почти одинаковые, поэтому будем хранить длину и ширину рамки в глобальной константе, а в описании рамки указывать только координату точки привязки – левый верхний угол. Число настраиваемых данных уменьшится вдвое, однако при этом рамки процессора и памяти придется выводить отдельно, т.е. объём кода увеличится.

Описание надписей целесообразно хранить в виде массива записей, содержащих также  координату привязки.

type

TMsgTV = record

      X,Y : integer;

      Msg : string[10];

  end;

Сами надписи  вместе с их координатами храним в  константе (массиве записей) с начальным значением, т.е. используем типированную константу:

const

ArrMsg : array[0..CountMsg-1] of TMsgTV = (

                     (X : 74; Y : 78; Msg: ‘Процессор’),

                     (X : 352; Y: 78; Msg: ’Память’),

                            .  .  .                                     );

Тип для линии будет  запись, содержащая: координату начала, длину и направление.

type

TLineTV = record

       X, Y: integer;

       Len: integer;

       Dir: (Down, Right);

end;

const

CountLine = 18;

  ArrLine : array[0..CountLine-1] of TLineTV = (

            (X:210; Y:100; Len: 60; Dir: Right),

            (X:195; Y:137; Len: 90; Dir: Right),

                     .  .  .                                         );

Описание рамки  включает точку привязки, длину, высоту и значение регистра, т.е. тип рамки – запись:

type

TRegTV = record

           X,Y: integer;

           W,H: integer;

           Value: word;

end;

а описание всех рамок – массив записей.

Индекс начнём с 0, тогда определение следующего регистра (при нажатии клавиши «Tab») выполняется одним оператором присваивания с применением операции деление по модулю:

NumReg := (NumReg+1) mod CountReg;

Массив записей  рамок будет иметь вид:

CountReg = 22;

  ArrReg : array[0..CountReg-1] of TRegTV = (

{0  C4k   }  (X:125; Y:123; W: 70; H: 30; Value:@PC        ),

{1  Zero  }  (X:380; Y:163; W: 60; H: 30; Value:@Mem[$2002]),

                                          .  .  .                                                        );

Для моделирования выполнения машинной программы необходима сама машинная программа, которая должна быть размещена в модели памяти в формате машинных команд. Поскольку память ЦВМ есть последовательность пронумерованных ячеек, поэтому в качестве модели памяти будем использовать одномерный массив слов разрядностью 16 бит. За начальный адрес программы примем $2000 в 16-ричной системе счисления. Данные машинной программы записаны в следующей таблице:

 

Адрес     

Имя      

Значение

$2000

Seven

7

$2001

One

1

$2002

Zero

0

$2003

A

10

$2004

C

11

$2005

D

15

$2006

FundAddr

$2008

$2007

Loa_XAddr

$2010

Func:

   

$2008

Loa X

$0303

$2009

Add Seven

$0100

$200A

Sto F

$0405

$200B

Loa Y

$0304

$200C

Jz IncZeroX

$051A

$200D

Loa F

$0305

$200E

Sub Y

$0204

$200F

Sto F

$0405

Loa_X:

   

$2010

Loa X

$0303

$2011

Jz IncZeroY

$051E

$2012

Loa F

$0305

$2013

Sub X

$0203

$2014

Sto F

$0405

$2015

Loa One

$0301

$2016

Loa F

$0305

$2017

Add One

$0101

$2018

Sto F

$0405

$2019

.End Func

$0706

IncZeroY:

   

$201A

Loa Zero

$0302

$201B

Add One

$0101

$201C

Sto Zero

$0402

$201D

Jmp Loa_X

$0607

IncZeroX

   

$201E

Loa Zero

$0302

$201F

Add One

$0101

$2020

Sto Zero

$0402

$2021

.End Func

$0706


                                                                     

 

 

 

 

 

 

 

 

 

 

 

 

 

Описание  программы

Общие сведения

Программа «Модель  Вычислительной Машины Фон-Неймана» дает возможность изучения алгоритма  работы цифровой вычислительной машины со структурой, предложенной Фон-Нейманом. Программное обеспечение, необходимое  для функционирования программы: Microsoft Windows 95 или выше. Язык программирования, на котором написана программа: Turbo Pascal.

 

Функциональное  назначение

Программа предназначена  для демонстрации работы модели вычислительной машины и ее функционирования в графическом  режиме Turbo Pascal.

Пользователь  имеет возможность:

    1. вводить исходные значения переменных;
    2. выбирать различные режимы работы программы (авто, демо, такт, команда);
    3. получить результаты выполненной программы.

 

Описание  логической структуры

В состав программы  входят следующие модули:

1)  MBM – главный модуль;

    1. MBMData – модуль данных;
    2. MBMInOut – модуль ввода-вывода;
    3. MBMCpu – модуль выполнения машинных команд;
    4. GraphLib – модуль графических подпрограмм.

Главный модуль – получает управляющие директивы пользователя и вызывает подпрограммы выполнения требуемых операций.

Модуль данных – хранит общие данные проекта и общие типы данных.

Модуль ввода-вывода – содержит подпрограммы для реализации интерфейса с пользователем.

Модуль процессора (машинных команд) – содержит подпрограммы моделирования работы процессора ЦВМ.

Модуль с  графическими подпрограммами – расширяет возможности стандартного модуля Graph.

 

 

 

 

 

 

 

 

 

Основные подзадачи  модуля:

MBM

Связь всех модулей  между собой

MBMData

Хранение общих  данных

MBMInOut

Отображение структуры  МВМ на экране, выбор регистра или ячейки для изменения значения

MBMCpu

Реализация  режимов работы модели с индикацией выполнения команд по тактам, моделирование  процессора в части выполнения машинных команд

GraphLib

Отображение значений регистров ячеек на экране в 16-ричной системе счисления


 

 

 

Входные данные

Входные данные находятся в модуле MBMData. Представляют собой 16-ричные положительные числа в диапазоне от 0 до FFFF. Изменять входные значения можно после запуска программы, путем переключения между ячейками памяти (клавиша «Tab»), и изменением желаемого элемента (клавиши «+», «-»).

 

Выходные  данные

К выходным данным относятся структура модели вычислительной машины, переменные РгФ, Zero, F. Выходные данные выводятся на экран в графическом режиме.Например:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Список  литературы

 

  1. Моделирование машины Фон-Неймана. Методические указания к лабораторной работе /Сост. А.Л. Симаков; Чуваш. ун-т. Чебоксары, 2001. – 24 с.
  2. Разработка модели ЦВМ: лабораторный практикум /Сост. А.Л. Симаков. Чебоксары: Изд-во Чуваш. ун-та, 2010. – 52 с.
  3. ГОСТ 19.402-78 ЕСПД.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приложение

 

Инструкция  для пользователя

 

СОДЕРЖАНИЕ:

1. Описание программы

2. Минимальные системные  требования

3. Клавиши управления

 

1. Описание программы

-------------------------------------------------

Данная программа  является иллюстрацией работы цифровой вычислительной машины.

Программа выводит на экран  структуру модели вычислительной машины, а также вычисляет функцию 

F=(X+2)-Y-X+1.

 

2. Минимальные системные требования

-------------------------------------------------

ОС Microsoft Windows 95;

Персональный компьютер  с 386DX процессор;

ОЗУ 64 Мб;

2 Мб свободной памяти  на жёстком диске;

Разрешение VGA;

Клавиатура.

 

 

3. Клавиши управления

-------------------------------------------------

[Esc] - Прерывание текущей  операции

[Tab] - Выбрать следующий  элемент

[F7] - Запуск программы  в режиме "Такт"

[F8] - Запуск программы  в режиме "Команда"

[F9] - Запуск программы  в режиме "Демо"

[Ctrl]-[F9] - Запуск программы в режиме "Автомат"

Информация о работе Моделирование машины Фон-Неймана