Моделирование вычислительной машины
Разработка программы для изображения в графическом режиме на экране ПЭВМ структуры МВМ и демонстрация ее функционирования при выполнении программы вычисления. Программное обеспечение для функционирования программы. Описание логической структуры.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 24.06.2012 |
Размер файла | 34,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Моделирование вычислительной машины
1. Индивидуальное задание
Написать программу для изображения в графическом режиме на экране ПЭВМ структуры МВМ и демонстрации ее функционирования при выполнении программы вычисления F =(X+1) - (Y+1) - 3. Дополнительно в переменной ZERO подсчитать количество значений переменных, равных нулю.
Программа должна отображать на экране монитора название работы, автора, структуру МВМ, язык управления и демонстрировать работу МВМ в автоматическом и управляемом режимах с изменяемой скоростью.
Программа должна иметь справку о своем назначении и использовании, вызываемую по ключу «/?» и по пустой командной строке.
Имя каталога с графическими драйверами и шрифтами должно передаваться в командной строке.
Программа должна проверять наличие необходимых файлов, а при их отсутствии запрашивать расположение.
2. Описание процесса разработки решения задачи, структур данных и их форматов
Для моделирования выполнения машинной программы необходима сама машинная программа, которая должна быть размещена в модели памяти в формате машинных команд. Поскольку память ЦВМ есть после-довательность пронумерованных ячеек, поэтому в качестве модели па-мяти будем использовать одномерный массив слов разрядностью 16 бит.
Для получения кода машинной программы необходимо вручную от-транслировать ассемблерную программу:
1. Написать вручную программу вычисления F = (X+1) - (Y+1) - 3 на языке ассемблера;
2. Распределить память - определить адреса размещения переменных X, Y, F, Zero, констант, размещения кодов машинной программы;
3. Закодировать ассемблерную программу на машинном языке.
Текст программы вычисления функции F = (X+1) - (Y+1) - 3:
на языке ассемблера:
Func:
Loa X; Akk:=X
Add one; Akk:=X+1
Sto F; F:=Akk=X+1
Loa Y; Akk:=Y
Add one; Akk:=Y+1
Sto Y1; Y1:=Akk=Y+1
JzIncZeroY1; if Y+1=0 then Inc(Zero)
Loa F; F:=Akk;
Sub Y1; Akk:=F-Y1
Sto F; F:=Akk
Loa_three:
Loa F; Akk:=А
Sub Three; Akk:=F-3
Sto F; F:=Akk
EndFunc;
IncZeroY1
Loa Zero; Akk:=Zero
Add one; Akk:=Zero+1
Sto Zero; Zero:=Akk=Zero+1
Jmp Loa_three;
Всем переменным нужно установить начальное значение. Также нужно хранить в памяти адреса меток Func, Loa_three для косвенного безусловного перехода и установки адреса пуска программы по псевдокоманде. End.
three 3; Константы
one 1
X 14; Входные еременные
Y 10,
F 1; Выходные переменные
zero 0
Y1 11; рабочая переменная для хранения (Y+1)
FuncAddr; Адрес пуска программы
Loa_three_addr; Адрес метки Loa_three
Для определения значения адресных констант FuncAddr и Loa_three_addr нужно распределить память, т.е. Определить адреса памяти для размещения данных и кодов. Принято, чтобы данные размещались в начале программы. Также следует учесть, что прикладная программа не может располагаться с нулевого адреса - это область адресов операционной системы.
Принять начальный адрес программы равным $2000 в 16-ричной системе счисления. Получены следующие распределение памяти.
adres. Asm kod
$2000 three 3
$2001 one 1
$2002 X 14
$2003 Y 10
$2004 F 1
$2005 zero 0
$2006 Y1 11
$2007 FuncAddr
$2008 Loa_three_addr
Func
$2009 Loa X
$200A Add one
$200B sto F
$200C Loa Y
$200D Add one
$200E Sto Y1
$200F JzIncZero Y1
$2010 Loa F
$2011 Sub Y1
$2012 sto F}
LOA_three
$2013 Loa F
$2014 Sub three
$2015 Sto F
$2016 End. Func
Inczero Y1
$2017 Loa zero
$2018 Add one
$2019 Sto zero
$201A Jmp Loa_three
Метки Func и Loa_Three получены значение $2009 и $2013 cоответственно, т.е. адресная константа FuncAddr должна иметь значение $2009, а константа Loa_three_addr - $2013.
Для получения кодов машинной программы нужно закодировать имена операций, а затем сами команды, добавив адресную часть.
Пусть КОП команды Add будет 1, Sub - 2, Load - 3, Sto - 4, Jz - 5, Jmp - 6. End - 7.
{adres. Asm kod}
{$2000 three} 3,
{$2001 one} 1,
{$2002 X} 14,
{$2003 Y} 10,
{$2004 F} 1,
{$2005 zero} 0,
{$2006 Y1} 11,
{$2007 FuncAddr} $2009,
{$2008 Loa_three_addr} $2013,
{Func}
{$2009 Loa X} $0302,
{$200A Add one} $0101,
{$200B sto F} $0404,
{$200C Loa Y} $0303,
{$200D Add one} $0101,
{$200E Sto Y1} $0406,
{$200F JzIncZero Y1} $0517,
{$2010 Loa F} $0304,
{$2011 Sub Y1} $0206,
{$2012 sto F} $0404,
{LOA_three}
{$2013 Loa F} $0304,
{$2014 Sub three} $0200,
{$2015 Sto F} $0404,
{$2016 End. Func} $0707,
{Inczero Y1}
{$2017 Loa zero} $0305,
{$2018 Add one} $0101,
{$2019 Sto zero} $0405,
{$201A Jmp Loa_three} $0608);
3. Описание разработки и обоснование структур данных и их форматов
Цифровая вычислительная машина (ЦВМ) в простейшем случае состоит из центрального процессора (ЦП), содержащего устройство управления (УУ) и арифметико-логическое устройство (АЛУ), и устройства оперативной памяти (ОЗУ) (рис. 1).
Размещено на http://www.allbest.ru/
Память содержит Регистр Адреса РгА, Регистр Данных РгД и мас-сив ячеек ОЗУ. Все ячейки имеют последовательность номера от 0 до 2N-1, где N - число разрядов РгА.
Для указания доступной в данный момент ячейки используется ее адрес, который лежит в регистре адреса РгА. Регистр данных РгД содержит данные размером в машинное слово, предназначенные для записи в ячейку или чтения из ячейки по адресу на РгА за одно обращение к памяти: запись (W) или чтение (R).
Память предназначена для хранения данных. Если данные есть программа, то эти данные записываются в памяти в соседних ячейках по возрастающим адресам.
Процессор содержит Счетчик Команд СчК, Регистр Команд РгК, аккумулятор (или сумматор) АКК, регистр флагов РгФ. Назначение регистров:
СчК: хранение адреса следующей выполняемой команды;
РгК: хранение кода текущей выполняемой команды. Команда содержит Код операции (КОП) и Адресную часть (АДР). КОП определяет что делать, а АДР - над чем делать, где лежит операнд или просто: адрес операнда;
АКК: хранение результата операции;
РгФ: хранение признаков (флагов) результата операции.
Процессор предназначен для последовательного чтения команд из памяти и их выполнения.
Для отображения информации на экране можно попробовать:
1) Выводить битовую картинку из файла. Но поскольку необходимо использовать модуль Graph, то этот вариант отпадает;
2) Выводить изображение по точкам. Слишком долго, так что тоже исключаем этот вариант;
3) Выводить изображение по линиям. Намного быстрее предыдущего варианта, но также не эффективно;
4) Выводить рамки (ячейки памяти и т.п.) процедурой Rectangle. Для вывода стрелок можно использовать символы «<», «>». Этот вариант более приемлем, т.к. выводить стрелки символами куда быстрее и проще, чем изображать стрелки из двух линий.
Для вывода текста используем процедуру OutTextXY.
Для вывода линий в модуле Graph предназначена процедура Line с параметрами координат начала и конца линии.
Т.к. элементов на экране большое количество, то описание надписей выводимых из кода программы целесообразно хранить в виде массива. Каждая надпись имеет еще и координату на экране. Отсюда следует структура для описания надписи - запись с полями: строка и две координаты левого верхнего угла:
type
TMsgTV = record
X, Y: integer;
Msg: string[60];
end;
Сами надписи вместе с их координатами храним в массиве запи-сей с начальным значением:
const
ArrMsg: array [0..CountMsg-1] of TMsgTV = (
(X:120; y:30; Msg:'MODELIROVANIE MACHINE FON-NEIMONA'),
(X:400; y:60; Msg:'Zadanie: (X+1) - (Y+1)-3'),
(X:90; y:120; Msg:'Processop'),
(X:380; y:120; Msg:'PamiaTb'),
(X:10; y:140; Msg:'ALU'),
(X:65; y:150; Msg:'RrF'),
(X:155; y:150; Msg:'SchK'),
(X:65; y:240; Msg:'AKK'),
(X:155; y:224; Msg:'RrK'),
(X:320; y:150; Msg:'RrA'),
(X:320; y:240; Msg:'RrD'),
(X:220; y:140; Msg:'YY'),
(X:250; y:130; Msg:'R/W'),
(X:245; y:175; Msg:'Adpec'),
(X:250; y:260; Msg:'DaH-'),
(X:250; y:280; Msg:'HbIe'),
(X:305; y:285; Msg:'15'),
(X:370; y:285; Msg:'0'),
(X:435; y:180; Msg:'>'),
(X:435; y:270; Msg:'>'),
(X:300; y:270; Msg:'>'),
(X:375; y:270; Msg:'<'),
(X:300; y:180; Msg:'>'),
(X:200; y:217; Msg:'>'),
(X:140; y:217; Msg:'>'),
(X:20; y:237; Msg:'<'),
(X:215; y:205; Msg:'+'),
(X:55; y:350; Msg:'Shag'),
(X:150; y:350; Msg:'Speed'),
(X:260; y:350; Msg:'Time'),
(X:455; y:150; Msg:'OSU'),
(X:520; y:170; Msg:'X'),
(X:520; y:200; Msg:'Y'),
(X:520; y:230; Msg:'F'),
(X:520; y:260; Msg:'Zero'),
(X:10; y:440; Msg:'-CnpaBka-'),
(X:10; y:450; Msg:' Tab - BbIbop | «+» - Inc; | Ctrl+T - Takt Ctrl+A - Avto'),
(X:10; y:460; Msg:' Esc - SostVvod | «-» - Dec; | Ctrl+K - Cmnd Ctrl+D - Demo'));
Описание линии включает координату (точку привязки), длину и направление. Таким образом, тип линии - тоже запись, а все линии - массив записей.
type
TLineTV = record
X, Y: integer;
Len: integer;
Dir: (Down, Right);
end;
const
ArrLine: array [0..CountLine-1] of TLineTV = (
(X:224; y:183; len:80; dir:right),
(X:241; y:145; len:45; dir:right),
(X:210; y:183; len:14; dir:right),
(X:192; y:190; len:60; dir:down),
(X:192; y:220; len:32; dir:right),
(X:224; y:183; len:37; dir:down),
(X:175; y:190; len:30; dir:down),
(X:125; y:220; len:50; dir:right),
(X:125; y:220; len:80; dir:down),
(X:175; y:280; len:20; dir:down),
(X:57; y:240; len:10; dir:down),
(X:12; y:240; len:45; dir:right),
(X:12; y:240; len:60; dir:down),
(X:12; y:300; len:212; dir:right),
(X:224; y:273; len:27; dir:down),
(X:224; y:273; len:80; dir:right),
(X:374; y:273; len:66; dir:right),
(X:374; y:183; len:66; dir:right)
Описание рамки включает точку привязки, длину, высоту и значение регистра, т.е. тип рамки - запись, а описание всех рамок - массив записей.
type
TRegTV = record
X, Y: integer;
W, H: integer;
Value: ^word;
end;
const
ArrReg: array [0..CountReg-1] of TRegTV = (
(x:40; Y:360; W:70; H:30; Value:@Shag),
(x:140; Y:360; W:70; H:30; Value:@Speed),
(x:140; Y:160; W:70; H:30; Value:@PC),
(x:440; Y:160; W:70; H:30; Value:@mem[$2002]),
(x:440; Y:190; W:70; H:30; Value:@mem[$2003]),
(x:440; Y:220; W:70; H:30; Value:@mem[$2004]),
(x:440; Y:250; W:70; H:30; Value:@mem[$2005]),
(x:304; Y:160; W:70; H:30; Value:@Adres),
(x:304; Y:250; W:70; H:30; Value:@Data),
(x:286; Y:132; W:270; H:186),
(x:140; Y:250; W:70; H:30; Value:@Command),
(x:22; Y:160; W:70; H:30; Value:@ZF),
(x:22; Y:250; W:70; H:30; Value:@Akk),
(x:2; Y:132; W:239; H:186));
CurrentReg:word=1;
MaxCurrReg:word=5;
Выполнение машинных команд
Последовательность действий процессора по выполнению команды называются микропрограммой. Микропрограмма выполняется примерно так же, как и программа (основной цикл работы процессора):
1) прочитать команду по адресу на счётчике команд;
2) увеличить счётчик команд;
3) выполнить команду;
4) перейти на п. 1.
По аналогии с основным циклом работы процессора цикл выполнения микрооперации содержит следующие действия:
1) в соответствии с номером такта и кодом операции выполнить требуемую микрооперацию;
2) увеличить номер такта на 1;
3) перейти на п. 1.
Вариант 1.
Поскольку использовали цикл работы процессора, необходимо поступить по аналогии с выполнением команды безусловного перехода Jmp, в которой устанавливается адрес метки перехода; СчК:=@Метка. Следовательно, последней микрооперацией каждой команды должна быть микрооперация «NumTakt:=1». Затем в п. 2 номер такта увеличивается на 1 и станет равным 1, т.е. в следующем такте любая команда будет выполнять микрооперацию №1.
Для реализации этого варианта придётся в конце каждой команды добавить ещё одну микрооперацию «NumTakt:=0». Это первый недостаток варианта 1. Второй недостаток: этот такт является служебным, т.е. он нужен для организации последовательности выполнения тактов, и не должен отображаться на экране. Третий недостаток: в математике принято константы выносить за знак суммы, а в программировании принято действия над неизменяемыми в цикле переменными выносить из цикла с применением новой переменной, те. е одно и то же выражение не нужно вычислять в каждом цикле. Поэтому и эту микрооперацию, которая является общей для всех команд, следует вынести за цикл выполнения микропрограммы.
Вариант 2.
Чтобы увеличить номер такта на 1, но в последний раз номер устанавливался в начальное положение можно использовать деление по модулю:
NumTakt:=(NumTakt +1) mod MaxTakt.
Это выражение устанавливает начальное значение такта в 0, поэтому нумерация тактов будет с 0. Количество тактов различно для каждых команд, поэтому MaxTakt есть массив, хранящий количество тактов каждой команды.
Построение элемента изображения (текста, линии, рамки) в относительных координатах дает возможность просто перемещать элемент по экрану, изменяя только координаты точки привязки (X, Y).
Выполнение машинных команд:
MaxTakt зависит от каждой команды, т.е. MaxTakt есть массив, хранящий количество тактов каждой команды. Индексом массива должен быть машинный код операции:
MaxTakt:array [0..7] of word=(5, 11, 11, 11, 10, 8, 10, 11);
{NOp, Add, SUb, Loa, Sto, Js, Jmp, End.}
Подпрограммы выполнения конкретной операции - это практически оператор выбора.
procedure ExecEND;
begin
case NumTakt of
7: Adres:=Aisp;
8: Data:=Mem[Adres];
9: PC:=Data;
10: EndProg:=True;
end;
end;
procedure ExecAdd;
begin
case Numtakt of
7: Adres:=Aisp;
8: Data:=Mem[Adres];
9: Akk:=Akk+Data;
10:begin
If AKK=0 Then ZF:=1 Else ZF:=0;
end;
end;
end;
procedure ExecSub;
begin
case NumTakt of
7: Adres:=Aisp;
8: Data:=Mem[Adres];
9: Akk:=Akk-Data;
10: begin
If AKK=0 Then ZF:=1 Else ZF:=0;
end;
end;
end;
procedure ExecLoa;
begin
case Numtakt of
7: Adres:=Aisp;
8: Data:=Mem[Adres];
9: Akk:=Data;
10: If AKK=0 Then ZF:=1 Else ZF:=0;
end;
end;
procedure ExecSto;
begin
case Numtakt of
7: Adres:=Aisp;
8: Data:=Akk;
9: Mem[Adres]:=Data;
end;
end;
procedure ExecJz;
begin
If ZF=1 Then PC:=Aisp;
end;
procedure ExecJmp;
begin
case Numtakt of
7: Adres:=Aisp;
8: Data:=Mem[Adres];
9: PC:=Data;
end;
end;
procedure ExecOperation;
begin
case COP of
1: ExecAdd;
2: ExecSub;
3: ExecLoa;
4: ExecSto;
5: ExecJz;
6: ExecJmp;
7: ExecEnd;
end;
end;
procedure ExecTakt;
begin
case NumTakt of
0: Adres:=PC;
1: Data:=MEM[Adres];
2: Command:=Data;
3: Inc(PC);
4: COp:=Command shr 8;
5: ADR:=Command and $00FF;
6: Aisp:=PC and $FF00 or ADR;
7. 10: ExecOperation;
end;
NumTakt:=(NumTakt+1) mod MaxTakt[cop];
EndCmnd:=NumTakt=0;
end;
procedure ExecuteProgram;
begin
if Sost<>Vvod then begin
ExecTakt;
OutValues;
case Sost of
Takt: Sost:=Vvod;
Cmnd: if EndCmnd then Sost:=Vvod;
Avto: if EndProg then Sost:=Vvod;
Demo: begin
if Speed<>0 then
Delay (10000 div Speed);
if EndProg then Sost:=Vvod;
end;
end;
end;
end;
end.
4. Описание программы
Общие сведенья.
Программа «Модель Вычислительной Машины Фон-Неймана» является основой в приобретении навыков графических возможностей языка программирования Turbo Pascal и изучения алгоритма работы цифровой вычислительной машины со структурой, предложенной Фон-Нейманом.
Программное обеспечение, необходимое для функционирования программы:
Microsoft Windows 98 или выше;
Языки программирования, на которых написана программа
Turbo Pascal 7.0
Функциональное назначение
Программа предназначена для демонстрации работы модели вычислительной машины и ее функционирования в графическом режиме Turbo Pascal.
Пользователь имеет возможность:
1) вводить исходные значения переменных;
2) выбирать различные режимы работы программы (авто, демо, такт, команда);
3) получить результаты выполненной программы;
Описание логической структуры
В состав программы входят следующие модули:
§ MBMMY - главный модуль;
§ MBMData - модуль данных;
§ MBMInOut - модуль ввода-вывода;
§ MBMCpu - модуль выполнения машинных команд;
§ GraphLib - модуль графических подпрограмм.
Главный модуль - получает управляющие директивы пользователя и вызывает подпрограммы выполнения требуемых операций:
Модуль данных - хранит общие данные проекта и общие типы данных.
Модуль ввода-вывода - содержит подпрограммы для реализации интерфейса с пользователем.
1. procedure OutValues; Вывод данных на экран в ячейки, в определенной системе счисления
2. procedure RectangDoubl; Прорисовка двойной рамки, для определения используемой ячейка
3. procedure InitMBM; Инициализация графики и вывод структуры VDV
4. Function getuserCMND:char; Прочитать расширенный код клавиши и преобразовать его в код директивы пользователя
Модуль процессора (машинных команд) - содержит подпрограммы моделирования работы процессора ЦВМ.
1. procedure ExecEND; Выполнить псевдо команду.END
2. procedure ExecAdd; Выполнить сложение
3. procedure ExecSub; Выполнить вычитание
4. procedure ExecLoa; Выполнить загрузку в аккамулятор
5. procedure ExecSto; Выполнить сохранение
6. procedure ExecJz; Выполгить переход по нулю
7. procedure ExecOperation; Выполнить одну команду
8. procedure ExecTakt; Выполнить один такт
9. procedure ExecuteProgram; Выполнить машинную программу по тактам
Модуль с графическими подпрограммами - расширяет возможности стандартного модуля Graph.
1. procedure ClearBar (Left, Top, Right, Bottom: integer); Очистить прямоугольник
2. procedure OutHexXY (X, Y:integer; Lens:byte; Val:word); Вывести целое 16-ричное значение системы счисления
3. procedure OutIntegerXY (X, Y, Lens: integer; IntVal: word); Вывести целое с числом символов Lens
4. procedure OutHexDXY (X, Y:integer; Lens:byte; Val:word); Вывести целое в 16-ричной системе счисления с разделением на младший и старший разряды
Используемые технические средства
Минимальные системные требования:
§ Microsoft Windows 98;
§ Персональный компьютер с 80386DX процессор;
§ 4 Мб памяти ОЗУ;
§ Свободное место на жёстком диске 10Мб
§ Разрешение VGA.
Вызов и загрузка.
Загрузка программы осуществляется запуском файла BMBM.bat.
Входные данные
Входные данные находятся в модуле MBMData. Представляют собой 16-ричные положительные числа в диапазоне от 0 до FFFF. Изменять входные значения можно после запуска программы, путем переключения между ячейками памяти (клавиша «Tab»), и изменением желаемого элемента (клавиши «+», «-»).
Выходные данные.
Выходные данные выводятся на экран в графическом режиме, в частности результат вычисления F.
Достоинства
1. Возможность прогона программы МВМ в различных режимах с разной скоростью, любое допустимое изменение входных, в том числе и во время выполнения программы МВМ с последующим продолжением ее работы.
2. Наглядность и простота модели.
3. Небольшие требования к аппаратному обеспечению.
Недостаток
1. Изменить программу, выполняемую МВМ, равно как и содержимое остальных ячеек ее памяти можно только перекомпилировав исполняемый файл МВМ
Выводы
В ходе выполнения работы были изучены принципы функционирования цифровой вычислительной машины. Также было изучено модульное программирование на языке Турбо Паскаль. Освоен модуль Graph, что в дальнейшем пригодится для проектирования своих графических проектов.
Список литературы
вычислительный программа машина
1. Моделирование машины Фон-Неймана. Методические указания к лабораторной работе /Сост. А.Л. Симаков; Чуваш. ун-т. Чебоксары, 2001. - 24 с.
2. Разработка модели ЦВМ: лабораторный практикум /Сост. А.Л. Симаков. Чебоксары: Изд-во Чуваш. ун-та, 2010. - 52 с.
3. Работа в интегрированной среде программирования Turbo Pascal: Методические указания к лабораторным работам /Сост. А.Л. Симаков. Чебоксары: Изд-во Чуваш. ун-та, 1993. - 60 с.
Размещено на Allbest.ru
Подобные документы
Разработка программы для изображения в графическом режиме на экране структуры модели вычислительной машины и демонстрация функционирования при выполнении программы вычисления. Описание процесса разработки, обоснование структур данных и их форматов.
курсовая работа [170,3 K], добавлен 07.06.2019Функциональный состав микро-ЭВМ, разработка системы команд. Описание взаимодействия всех блоков электронно-вычислительной машины при выполнении команд программы. Арифметико-логическое устройство, кэш-память процессора, функциональное моделирование.
курсовая работа [981,4 K], добавлен 27.05.2013Программное обеспечение для диспетчерских станций карьеров по добыче полезных ископаемых. Описание технологий и языков программирования, используемых при разработке программы. Технические и программные средства. Описание логической структуры программы.
дипломная работа [2,0 M], добавлен 23.12.2016Составление программы вычисления матрицы и программы вычисления интеграла с погрешностью, не превышающей заданную величину. Схема алгоритма и её описание. Инструкция по использованию разработанной программы и проверка правильности е функционирования.
курсовая работа [54,8 K], добавлен 27.10.2010Методологическая основа моделирования – диалектико-математический метод познания и научного исследования. Назначение и условия применения программы. Описание задачи и логической структуры программы. Используемые технические средства, вызов и загрузка.
курсовая работа [311,8 K], добавлен 06.01.2009Требования к программе или программному продукту. Условия эксплуатации и требования к параметрам технических средств. Программное обеспечение, рекомендуемое для функционирования программы. Руководство системного программиста и настройка программы.
отчет по практике [1,1 M], добавлен 22.07.2012Формальная схема и закон функционирования моделируемой вычислительной системы для обработки программ. Составление алгоритма моделирующей программы на языке GPSS и листинга программы для стохастической модели. Верификация программы и анализ результатов.
курсовая работа [347,3 K], добавлен 21.01.2013Программное обеспечение - важный компонент функционирования компьютерной деятельности. Изучение принципа работы резидентных программ. Разработка программы по удалению слов из текстового файла без учета регистра. Требования к программе, разработка проекта.
курсовая работа [404,5 K], добавлен 03.02.2011Разработка многопоточного приложения, выполняющего обмен данными между двумя процессами и анализ содержимого служебной области системного диска. Описание логической структуры программы, создание программы-инсталлятора, методика и результаты испытаний.
курсовая работа [4,3 M], добавлен 27.03.2011Функции компилятора как системной обрабатывающей программы. Этапы компиляции: анализ и синтез. Разработка лексического анализатора. Алгоритм и программа лексического анализа. Реализация двухфазного компилятора. Описание логической структуры программы.
курсовая работа [310,4 K], добавлен 26.03.2010