Моделирование вычислительной машины - Программирование, компьютеры и кибернетика курсовая работа

Моделирование вычислительной машины - Программирование, компьютеры и кибернетика курсовая работа



































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


посмотреть текст работы


скачать работу можно здесь


полная информация о работе


весь список подобных работ


Нужна помощь с учёбой? Наши эксперты готовы помочь!
Нажимая на кнопку, вы соглашаетесь с
политикой обработки персональных данных

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
ФГОУ ВПО «Чувашский государственный университет
Факультет: Информатики и вычислительной техники
«Моделирование вычислительной машины»
1. Разработать программу для изображения в графическом режиме на экране ПЭВМ структуры модели вычислительной машины (МВМ) и демонстрации ее функционировании при выполнении программы вычисления F= A + A - (В + В) - 1. Дополнительно в переменной ZERO подсчитать количество значений вычитаемых переменных, равных нулю.
2. Программа должна отображать на экране монитора название работы, автора, структуру МВМ, язык управления и демонстрировать работу МВМ в автоматическом и управляемом режимах с изменяемой скоростью.
3. Программа должна иметь справку о своем назначении и использовании, вызываемую по ключу «/?» и по пустой командной строке.
4. Программа должна быть организована в соответствии с идеологией структурного программирования, состоять из модулей, процедур, функций. Текст должен быть структурирован. Подпрограммы не должны быть размером более 20…25 строк, должны быть легко читаемы и расширяемы, понятны; нестандартные решения должны быть прокомментированы.
Описание процесса разработки и обоснования способа решения задачи
Согласно заданию, для отображения структуры МВМ используется модуль Graph:
- Для вывода стрелок используется вывод символов “<” и “>”, это быстрее и проще, чем изображать стрелки из двух линий.
- Для вывода текста удобно использовать процедуру OutTextXY.
- Для вывода линий используется процедура Line с параметрами начала и конца линии, но, поскольку линии, используемые в изображении структуры МВМ, расположены только горизонтально или вертикально, указывается только координаты начальной точки, длина линии и направлении.
- Рамки выводятся процедурой Rectangle, но в описании рамки указываются координаты верхнего левого угла, длина и ширина рамки и значение регистра, содержащегося в данной рамке.
- Для выделения выбранного элемента используется двойная рамка, этот вариант легко реализуется, благодаря режиму вывода XORPut и процедуре SetWriteMode.
Описание разработки и обоснование структур данных и их форматов
На экране много однотипных элементов, для уменьшения кода они обрабатываются в цикле. Описание надписей, выводимых из кода программы, хранится в виде массива записей, содержащих координаты и строку записи.
Записи хранятся в типированной константе-массиве записей.
ArrMsg: array [0..CountMsg-1] of TMsgTV = (
Тип линии - запись, содержащая координаты начала, длину и направление линии, а все линии - массив записей.
ArrLine: array [0..CountLine-1] of TLineTV = (
Тип рамки - запись, включающая координаты привязки, длину, высоту и адрес значения регистра.
Один из вариантов это массив AllReg как буфер для ввода и вывода.
Тогда при изменении содержимого регистров или памяти нужно будет новое значение передавать в этот буфер, а при изменении данных оператором содержимое буфера копировать в регистры или память, так же этот вариант организации данных требует две подпрограммы
1) пересылка данных из буфера в регистры и ячеек памяти при изменениях с клавиатуры.
2) пересылки значений регистров и ячеек памяти в буфер после выполнения каждого такта машинной программы.
Плюс в том что мы сможем обращаться к регистрам по именам,
-подпрограммы копирования не являются регулярными, их код будет некрасив и не эффективен.
-обращение к элементам массива индикации при копировании будет происходить не в цикле, по индексам а не по именам.
Поэтому в своей программе я использовала другой способ.
Используя тип Value:^word мы получим некоторые преимущества
-произвольное расположение данных в моделируемой оперативной памяти
-появляется дополнительная возможность иметь рамку без значения числа если value = nil;
- требуются минимальные изменения в имеющемся коде добавление"^".
ArrReg: array[0..CountReg-1] of TRegTV = (
{ Shag } (X:40; Y:360; W:70; H:30; Value:@Shag),
{ Speed } (X:140; Y:360; W:70; H:30; Value:@Speed),
{ Pc} (X:180; Y:160; W:70; H:30; Value:@PC),
Наименование программы: «Модель вычислительной машины Фон-Неймана». Программное обеспечение, необходимое для функционирования программы: операционная система Microsoft Windows. Язык программирования, на котором написана программа: Pascal.
Программа предназначена для демонстрации функционирования машины Фон-Неймана при выполнении вычисления функции
- ввода значений некоторых элементов хранения, увеличением или уменьшением их на шаг, который тоже можно указывать;
- изменения режимов выполнения вычислений: ввод, такт, команда, демонстрация, автомат;
Для реализации режимов работы используется структура выбора case: запуск модели в требуемом режиме переводит программу в соответствующее состояние, по которому делаются действия, связанные только с этим состоянием. Модель имеет следующие состояния: ввод, такт, демонстрация, автомат, команда. Вводится переменная состояния, которой присваивается начальное значение «Ввод». В этом состоянии процедура выполнения программы сразу возвращает управление, не выполняя более никаких операций. Если после каждого такта команды состояние будет иметь значение «Ввод», то в результате можно получить режим «Такт». Для выполнения всей программы («Авто») нужно после выполнения последнего такта программы нужно состояние изменить на «Ввод». Чтобы знать, выполнен последний такт или нет, вводится булева переменная. Аналогично определяется завершение выполнения команды. При выполнении прерывания состояние сбрасывается в «Ввод».
Проект состоит из следующих модулей:
1. MBM - главный модуль - получает управляющие директивы пользователя и вызывает подпрограммы выполнения требуемых функций интерактивного режима;
2. MBMData - модуль данных - хранит общие данные проекта и общие типы данных.
3. MBMInOut - модуль ввода-вывода - содержит подпрограммы для реализации интерфейса с пользователем.
4. GraphLib - модуль с графическими подпрограммами - расширяет возможности модуля Graph.
5. MBMCpu - модуль выполнения машинных команд - содержит подпрограммы моделирования работы процессора ЦВМ.
Программа вызывается через exe-файл: MBM.exe.
На диске программа занимает 4503 К.
1. Значения операндов A, В, One, Zero, F. Хранятся в массиве вместе с машинной программой.
3. Значение скорости тактов как количество тактов, выполняемых за одну секунду.
4. Шаг изменения значений, предназначенный для инкрементирования/декрементирования операндов, счетчика команд, скорости демонстрации.
5. Режим пуска МВМ (Такт - F7, Демонстрация - F9, Автомат - Ctrl-F9).
6. Прерывание выполнения программы МВМ (Esc).
Для моделирования выполнения машинной программы необходима сама машинная программа, которая должна быть размещена в модели памяти в формате машинных команд.
2. Назначение основных клавиш управления (справка).
3. Содержимое всех регистров в шестнадцатеричной системе счисления.
4. Содержимое ячеек памяти с операндами в шестнадцатеричной системе счисления.
5. Содержимое части ячеек с командами программы МВМ.
7. Скорость демонстрации в десятичной системе счисления.
8. Выделение активного в данный момент элемента.
Memory(память) содержит адреса RGA, Регистра данных RGD и массив ячеек ОЗУ.
Ячейки имеют последовательные номера начиная с 0.
В ячейке RGA указывается ячейка памяти доступная в данный момент.
RGD содержит данные размером в машинное слово, предназначенное для записи в ячейку или чтения из ячейки по адресу RGA.
Процессор предназначается для последовательного чтения команд из памяти и их выполнения. Процессор содержит счетчик команда Counter, регистр команда RGK, аккумулятор AKK, регистр флагов RGF.
Counter(Счк) храните адреса следующей выполняемой команды.
RgK(Ргк) хранение кода текущей операции.
RGF(Ргф) хранение признаков(флагов).
1. Моделирование машины Фон-Неймана. Метод. указания к лабораторной работе /Сост. А. Л. Симаков; Чуваш. ун-т. Чебоксары, 2001. - 24с.
2. Симаков А. Л. Разработка модели ЦВМ: лаб. практикум / А. Л. Симаков. - Чебоксары: Изд-во Чуваш. ун-та, 2010. - 52 с.
Программа запускается через файл MBM.exe;
На входе предлагается ввести имя бинарного файла, который содержит в себе машинный код. Файл с кодом обязательно должен находиться в папке с файлом. В программе пользователь должен задать адрес запуска программы в ячейке Counter.
+увеличивает счетчик адреса на step едениц
- уменьшает счетчик адреса на step едениц
в режиме демонстрации - изменение скорости,
в режиме ввода - изменение значения выделенного элемента;
Speed увеличивает или уменьшает скорость демонстрации
Step число на которое изменяется переменная или команда при нажатии +/-
uses MBMData,GraphLib,MBMInout,MBMCPU,Crt,Graph;
var UserCmnd:char; {direktiva polzovatelya}
if (Paramstr(1)='/?') or (Paramstr(1)='') then begin
InitMBM; {ini grafik and vivod structur}
UserCmnd:=GetUserCmnd; {poluchena directiva}
{Tab}#9: CurrentReg:=(CurrentReg+1) mod MaxCurrReg;
{F8} ^K:begin Sost:=Cmnd; EndCmnd:=False; end;
{Ctrl-F9} ^A:begin Sost:=Avto; EndProg:=False; end;
{F9} ^D:begin Sost:=Demo; EndProg:=False; end;
MEM[$2000+CurrentReg-3]:=ChM(MEM[$2000+CurrentReg-3], Shag);
TMsgTV = record {atributi nadpisei }
CountMsg = 43; {kolichestvo nadpisei}
ArrMsg:array[0..CountMsg-1] of TMsgTV =
(X:100; Y:20; Msg:'Course work in "Programming"'),
(X:120; Y:30; Msg:'The structure of model computer'),
(X:400; Y:80; Msg:'Student IVT 42-17'),
(X:400; Y:90; Msg:'Semenova Anastasia'),
(X:485; Y:135; Msg:'RAM locations'),
(X:10; y:420; Msg:' Tab - Selection | F7 - Tact'),
(X:10; y:430; Msg:' Esc - Pause | Alt-X Close MVM'),
(X:10; y:440; Msg:' "+" - Enlarge 1 | Ctrl-F9 - Avro'),
(X:10; y:450; Msg:' "-" - Decrease 1 | F9 - Demo'));
CountLine = 26; {kolichestvo linii}
ArrLine:array[0..CountLine-1] of TLineTV =
((X:251; Y:178; Len:128; Dir:Right),
(X:340; Y:130; Len:270; Dir:Right),
(X:340; Y:300; Len:270; Dir:Right),
(X:290; Y:145; Len:50; Dir:Right), {R/W}
(X:265; Y:245; Len:115; Dir:Right),
(X:450; Y:240; Len:40; Dir:Right));
TSost = (Vvod,Avto,Demo,Takt,Cmnd);
Sost:TSost = vvod; {sostoyanie modeli}
Shag:word = 1; {Shag izmenenia znachenia }
Speed:word = 10; {1 operacia v sekundu}
ADR:word = 0; {Adresnay chast' komandi }
Aisp:word = 0; {Adres ispolnitel'n1o1i}
EndProg:Boolean = False; {Programa zavershena ? }
EndCmnd:Boolean = False; {Komanda zavershena ? }
MEM:array[$2000..$201A] of word = (
TRegTV = record {Atribut1o1 ramki registra/ yacheiki}
Value:^word; {Ukazatel' na znachenie}
ArrReg:array[0..CountReg-1] of TRegTV=(
{ Shag } (X:40; Y:360; W:70; H:30; Value:@Shag),
{ Speed } (X:140; Y:360; W:70; H:30; Value:@Speed),
{ Pc} (X:180; Y:160; W:70; H:30; Value:@PC),
{ A } (X:490; Y:150; W:70; H:30; Value:@Mem[$2000]),
{ B } (X:490; Y:180; W:70; H:30; Value:@Mem[$2001]),
{ One } (X:490; Y:210; W:70; H:30; Value:@Mem[$2002]),
{ Zero } (X:490; Y:240; W:70; H:30; Value:@Mem[$2003]),
{ F } (X:490; Y:270; W:70; H:30; Value:@Mem[$2004]),
{One comand}(X:490; Y:300; W:70; H:30; Value:@Mem[$2005]),
{Flag} (X:60; Y:160; W:70; H:30; Value:@Flags),
{Akk} (X:60; Y:230; W:70; H:30; Value:@Akk),
{Command} (X:180; Y:230; W:70; H:30; Value:@Command),
{Adres} (X:380; Y:160; W:70; H:30; Value:@Adres),
{Data} (X:380; Y:230; W:70; H:30; Value:@Data));
CurrentReg:word=2; {Nomer v1o1brannoi ramki }
MaxCurrReg:word=8; {Kolichestvo v1o1biraem1o1x ramok}
{V1o1vesti znachenia registrov i yacheek v grafike}
{V1o1vesti / pogasit' dvoinuyu ramku}
{Inicial grafiki i v1o1vod struktur1o1}
{Prochitat' rashirenn1o1i kod klavishi i preobrazovat' ego v kod direktiv1o1 pol'zpvatelya}
function FileExists(s: string):boolean;
const SostName:array[TSost] of string[4] = ('Vvod','Avto','Demo','Takt','Cmnd');
{V1o1vesti strukturu modeli BM s nadpisyami }
{ Chtenie rashirennogo koda klavisi i psevdokodirovanie}
var CurrentTime,NewTime,OldTime,Time,TimeToTimeString: integer;
Function FileExists(s: string): boolean;
writeln('” ©« ­Ґ ­ ©¤Ґ­!‚ўҐ¤ЁвҐ Є®а४в­л© ¤аҐб а бЇ®«®¦Ґ­Ёп д ©«.');
writeln('„«п ўл室 ўўҐ¤ЁвҐ /exit');
{V1o1polnit' mashinnuyu programmu po taktam}
const MaxTakt:array[0..7] of word=(5, 11, 11, 11, 10, 8, 10, 11);
{NOp, Add, Sub, Loa, Sto, JZ, Jmp,.End}
if VOP='ExecSub' then OP:=PAkk-PData;
if VOP='ExecAdd' then OP:=PAkk+PData;
if (OP>$FFFF) or (OP<-$0000) then FindCF:=true else FindCF:=false;
if (ZF=True) and (CF=True) then Flags:=$1001;
if (ZF=True) and (CF=false) then Flags:=$0001;
if (ZF=False) and (CF=True) then Flags:=$1000;
if (ZF=False) and (CF=False) then Flags:=$0000;
if (ZF=True) and (CF=True) then Flags:=$1001;
if (ZF=True) and (CF=false) then Flags:=$0001;
if (ZF=False) and (CF=True) then Flags:=$1000;
if (ZF=False) and (CF=False) then Flags:=$0000;
if (ZF=True) and (CF=True) then Flags:=$1001;
if (ZF=True) and (CF=false) then Flags:=$0001;
if (ZF=False) and (CF=True) then Flags:=$1000;
if (ZF=False) and (CF=False) then Flags:=$0000;
NumTakt:=(NumTakt+1) mod MaxTakt[COP];
{V1o1polnit' zadergku v sootv so speed demonstracii}
procedure ClearBar (Left,Top,Right,Bottom:integer);
procedure OutHexXY (X,Y:integer; Lens:byte; Val:word);
{V1o1vesti celoe s chislom simvolov Lens}
procedure OutIntegerXY (X,Y,Lens:integer; IntVal:word);
{Ochistit' pryamougol'nik v graf. koordinatax}
procedure ClearBar (Left,Top,Right,Bottom:integer);
{Preobrazovat' celoe v 16-oi stroku}
Function WordToHex(N:word; Lens:byte):string4;
NexDigit:array[0..15] of char='0123456789ABCDEF';
procedure OutHexXY (X,Y:integer; Lens:byte; Val:word);
ClearBAr (X,Y,X+TextWidth('0')*(Lens+1),
OutTextXY (X,Y,'$'+WordToHex(Val,Lens));
procedure OutIntegerXY (X,Y,Lens:integer;
Функциональный состав микро-ЭВМ, разработка системы команд. Описание взаимодействия всех блоков электронно-вычислительной машины при выполнении команд программы. Арифметико-логическое устройство, кэш-память процессора, функциональное моделирование. курсовая работа [981,4 K], добавлен 27.05.2013
Формальная схема и закон функционирования моделируемой вычислительной системы для обработки программ. Составление алгоритма моделирующей программы на языке GPSS и листинга программы для стохастической модели. Верификация программы и анализ результатов. курсовая работа [347,3 K], добавлен 21.01.2013
Разработка вычислительной структуры, реализующей заданный набор операций для обработки запросов в реляционной базе данных (БД). Описание общей структуры системы с машиной баз данных. Разработка схем исполнительных процессоров и алгоритмов их операций. реферат [140,3 K], добавлен 27.10.2010
Порядок описание процесса разработки модели для разрешения задачи программирования с помощью средств языка программирования. Структуры данных и основные принципы их построения. Этапы компьютерного моделирования. Этапы и значение написания программы. курсовая работа [19,5 K], добавлен 19.05.2011
Разработка гипотетической машины при помощи макросредств ассемблера. Разработка алгоритма для реализации обязательных команд: сравнения двух символьных строк; их обмена; определения длины слова. Основные функции обработки строки, листинг программы. курсовая работа [59,6 K], добавлен 14.07.2012
Задачи диагностики электронно-вычислительной машины. Виды диагностических программ. Диагностические программы специального и общего назначения. Особенности метода микродиагностирования. Возможности программы AIDA64. Стоимость диагностических программ. курсовая работа [3,2 M], добавлен 04.04.2014
Разработка вычислительной системы, предназначенной для реализации заданного алгоритма обработки входных цифровых данных. Особенности ее построения на базе процессора x86 (К1810) в минимальном режиме. Описание микропроцессорного комплекта серии К1810. курсовая работа [318,4 K], добавлен 15.08.2012
Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д. PPT, PPTX и PDF-файлы представлены только в архивах. Рекомендуем скачать работу .

© 2000 — 2021



Моделирование вычислительной машины курсовая работа. Программирование, компьютеры и кибернетика.
Денежное Обращение Курсовая
Реферат по теме Вред алкоголя для организма человека
Реферат по теме Реструктуризация предприятия в условиях Рыночных отношений
Курсовая работа по теме Анализ ликвидности и платежеспособности предприятия
Дипломная работа: Договорное регулирование отношений по возмездному оказанию медицинских услуг
Курсовая работа: Кредитные операции кредитных организаций и их учет
Реферат: Химическая физика и некоторые проблемы биологии. Скачать бесплатно и без регистрации
Какой Опыт Духовно Обогащает Личность Сочинение
Реферат: Устройство кровли из профилированного листа
Дипломная работа по теме Разработка инвестиционного проекта ОАО "Завод по производству труб большого диаметра"
Доклад: Методические и этические аспекты клонирования
Входная Контрольная Работа 4 Класс Перспектива Математика
Контрольная Работа На Тему Исторический Аспект Музыкальной Психотерапии
Сочинение Образ Базарова В Романе
Реферат Поколение Эвм По Информатике
Курсовая работа: Политика США в Афганистане
Решу Огэ Контрольные Работы
Реферат: Сенситивные и критические периоды в развитии двигательных координационных способностей у юных
Курсовая работа по теме Способы мотивации сотрудников гостиничного предприятия (на примере гостиницы 'Марриотт Грандъ')
Контрольная работа по теме Таможенное право
Методы обучения чтению на английском языке - Иностранные языки и языкознание реферат
Проект мероприятий по увеличению загрузки номерного фонда ОАО "Гостиничный комплекс Космос" - Маркетинг, реклама и торговля дипломная работа
Игра Tetris - Программирование, компьютеры и кибернетика курсовая работа


Report Page