Автор работы: Пользователь скрыл имя, 21 Мая 2013 в 20:54, курсовая работа
Курсовая работа посвящена изучению структуры и работы цифровой вычислительной машины, изучению и использованию модуля Graph Турбо Паскаля, знакомство с основами языка ассемблера и машинного языка, освоению техники разработки и отладки многофайлового программного продукта на примере создания программной модели ЦВМ.
КУРСОВАЯ РАБОТА
по программированию на тему:
«Моделирование машины Фон-Неймана»
Введение
Курсовая работа посвящена изучению структуры и работы цифровой вычислительной машины, изучению и использованию модуля Graph Турбо Паскаля, знакомство с основами языка ассемблера и машинного языка, освоению техники разработки и отладки многофайлового программного продукта на примере создания программной модели ЦВМ.
Оглавление
Индивидуальное задание……………………
Описание процесса разработки и обоснование метода решения задачи. .5
Описание программы………………………………
Список литературы………………….............
Приложение……………………………………………………
Индивидуальное задание
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) MBM – главный модуль;
Главный модуль – получает управляющие директивы пользователя и вызывает подпрограммы выполнения требуемых операций.
Модуль данных – хранит общие данные проекта и общие типы данных.
Модуль ввода-вывода – содержит подпрограммы для реализации интерфейса с пользователем.
Модуль процессора (машинных команд) – содержит подпрограммы моделирования работы процессора ЦВМ.
Модуль с графическими подпрограммами – расширяет возможности стандартного модуля Graph.
Основные подзадачи модуля:
MBM |
Связь всех модулей между собой |
MBMData |
Хранение общих данных |
MBMInOut |
Отображение структуры МВМ на экране, выбор регистра или ячейки для изменения значения |
MBMCpu |
Реализация режимов работы модели с индикацией выполнения команд по тактам, моделирование процессора в части выполнения машинных команд |
GraphLib |
Отображение значений регистров ячеек на экране в 16-ричной системе счисления |
Входные данные
Входные данные находятся в модуле MBMData. Представляют собой 16-ричные положительные числа в диапазоне от 0 до FFFF. Изменять входные значения можно после запуска программы, путем переключения между ячейками памяти (клавиша «Tab»), и изменением желаемого элемента (клавиши «+», «-»).
Выходные данные
К выходным данным относятся структура модели вычислительной машины, переменные РгФ, Zero, F. Выходные данные выводятся на экран в графическом режиме.Например:
Список литературы
Приложение
Инструкция для пользователя
СОДЕРЖАНИЕ:
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] - Запуск программы в режиме "Автомат"