Взаимодействие основных частей ЭВМ при выполнении программы
Взаимодействие основных частей ЭВМ при выполнении программы
| |
| |
|Министерство образования РФ |
| |
|Хабаровский государственный технический университет |
| |
| |
|Институт (факультет) Институт информационных технологий |
|Кафедра Компьютерное проектирование и сертификация машин |
|Специальность Металлорежущие станки и инструменты |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|Взаимодействие основных частей ЭВМ при выполнении программы |
| |
| |
|Пояснительная записка к курсовой работе |
| |
|По дисциплине «Информатика» |
| |
|КР. 991096.00.00.00 ПЗ |
| |
| |
| |
| |
| |
|Выполнил: |
|студент группы МРС-91 |
|Егоров О.В. |
|зачетная книжка № 991096 |
|Руководитель работы: |
|доцент |
|Кетов А.В. |
| |
| |
| |
| |
| |
| |
|Хабаровск 2000 |
| |
| |
|Задание на курсовую работу |
|Разработать обучающую программу на тему "Взаимодействие основных частей ЭВМ|
|при выполнении программы". |
|Руководитель: |
|Реферат |
|Пояснительная записка к курсовой работе содержит 22 листа формата А4, 2 |
|рисунка, 1 использованный источник, 1 приложение. |
|ПРОГРАММА ДЛЯ ЭВМ, ПАСКАЛЬ, АЛГОРИТМИЧЕСКИЙ ЯЗЫК, ПРОГРАММИРОВАНИЕ, |
|ИНФОРМАТИКА. |
|Целью курсовой работы является разработка программы для ЭВМ средней |
|сложности с удобным пользовательским интерфейсом. |
|Это достигается путем проектирования, разработки и отладки на языке Паскаль|
|обучающей программы на тему: «Взаимодействие основных частей ЭВМ при |
|выполнении программы». |
|Приведена блок-схема процедуры для вывода главного меню. В приложении |
|приведен исходный текст программы на Turbo Pascal. |
| |
|Содержание |
|Введение 3 |
|Блок – схема процедуры «MainMenu» (вывода на экран главного меню) 3 |
|Описание программы 4 |
|1. Назначение 4 |
|2. Запуск программы 4 |
|3. Работа с программой 4 |
|3.1 Выбор пункта меню «Обучение» 4 |
|3.2 Выбор пункта меню «Проверка знаний» 5 |
|Заключение 5 |
|Список использованных источников 5 |
|Приложение А. Исходный текст программы 6 |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|Введение |
|Целью курсовой работы является разработка программы для ЭВМ средней |
|сложности с удобным интерфейсом на языке программирования Паскаль. |
|Блок – схема процедуры «MainMenu» |
|(вывода на экран главного меню) |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|Описание программы |
|1. Назначение |
|Данная программа показывает и обучает, как взаимодействуют основные части |
|ЭВМ при выполнении программы. |
|Программа написана на языке Turbo Pascal [1] для персональных ЭВМ, |
|совместимых с IBM PC, и операционной системой MS DOS. |
|2. Запуск программы |
|Находясь в каталоге с программой, в ответ на подсказку DOS набрать |
|computer.exe и нажать клавишу Enter. Выход из программы по нажатию клавиши |
|Esc. |
|3. Работа с программой |
|После запуска программы на экране появляется главное меню выбора: |
| |
| |
| |
| |
| |
|Выбор пунктов меню производится с помощью курсорных клавиш Вверх, Вниз и |
|нажатия клавиши Enter для запуска нужной части программы. Для выхода из |
|программы достаточно нажать клавишу Esc или выбрать в меню опцию с надписью|
|«Esc – Выход». |
|3.1 Выбор пункта меню «Обучение» |
|Обучающая часть программы имеет вид: |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|Внизу экрана находятся функциональные клавиши |
|Помощь (F1), Назад ((), Вперед ((), Выход (Esc): |
|Помощь (F1) – получить справку, |
|Назад (() – вернуться назад, |
|Вперед (() – вывести следующую информацию, |
|Выход (Esc) – выйти из обучения. |
| |
| |
| |
|3.2 Выбор пункта меню «Проверка знаний» |
|Тест имеет вид: |
| |
|Выбор ответа производится клавишами 1, 2 и 3. При необходимости выйти можно|
|нажать клавишу Esc и выйти из теста. |
| |
| |
| |
| |
| |
| |
| |
|По окончании теста выводится окно итога, которое имеет вид: |
| |
| |
| |
| |
| |
|Заключение |
|В курсовой работе была спроектирована, разработана и отлажена на языке |
|программирования Паскаль обучающая программа на тему: «Взаимодействие |
|основных частей ЭВМ при выполнении программы». |
|Программа имеет удобный для пользователя интерфейс и возможностью просмотра|
|графического изображения процессов проходящих в ЭВМ при выполнении |
|программы. |
|Список использованных источников |
|1. Марченко А.И. Программирование в среде Turbo Pascal 7.0. Учебное |
|пособие. – К.: ВЕК+, М.: ДЕСС, 1999. - 496 с. |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|Приложение А. Исходный текст программы |
|program LEAN_Ecm; |
| |
|uses Crt, Graph, Sm_Graph, Sm_Const; |
|{-------------------} {uses} |
| |
|var |
|I: Integer; |
|FuncKeyWindow: array [1..3] of TImage; |
|Temp: array [1..2] of TImage; {Массив вспомогательный} |
|{-------------------} {var} |
| |
|procedure BildWin; |
|const |
|TxtCol: Word = Red; {Цвет текста} |
|RTACol: Word = Yellow; {Цвет прямоугольников} |
|BACCol: Word = Black; {Цвет фона} |
|{Рисуем главную картинку} |
|begin |
|SetBkColor(BACCol); |
|SetColor(BRDCol); |
|Rectangle(X0, Y0, X0 + 385, Y0 + 300); |
|Rectangle(X0, Y0 + 305, GetMaxX - X0, YS - 5); |
|SetColor(MemCol); |
|{Ячейки памяти} |
|SetLineStyle(1, 0, 0); |
|for I := 1 to 4 do {Ячейки памяти} |
|begin |
|Line(X0 + 130 + 16 * I, Y0 + 120, X0 + 130 + 16 * I, Y0 + 200); |
|Line(X0 + 130, Y0 + 120 + 16 * I, X0 + 210, Y0 + 120 + 16 * I) |
|end; |
|{CPU} |
|SetColor(CPUCol); |
|MoveTo(X0 + 83, Y0 + 203); {0} |
|LineTo(X0 + 7, Y0 + 203); {1} |
|LineTo(X0 + 7, Y0 + 117); {2} |
|LineTo(X0 + 40, Y0 + 117); {3} |
|LineTo(X0 + 40, Y0 + 45); {4} |
|LineTo(X0 + 127, Y0 + 45); {5} |
|LineTo(X0 + 127, Y0 + 27); {6} |
|LineTo(X0 + 213, Y0 + 27); {7} |
|LineTo(X0 + 213, Y0 + 73); {8} |
|LineTo(X0 + 127, Y0 + 73); {9} |
|LineTo(X0 + 127, Y0 + 55); {10} |
|LineTo(X0 + 50, Y0 + 55); {11} |
|LineTo(X0 + 50, Y0 + 117); {12} |
|LineTo(X0 + 83, Y0 + 117); {12} |
|LineTo(X0 + 83, Y0 + 203); {13} |
|SetLineStyle(0, 0, 0); |
|{Прямоугольники} |
|SetColor(RTACol); |
|Rectangle(X0 + 10, Y0 + 120, X0 + 80, Y0 + 200); {УУ(ЦУУ)} |
|Rectangle(X0 + 55, Y0 + 120, X0 + 80, Y0 + 130); {КОП} |
|Rectangle(X0 + 130, Y0 + 120, X0 + 210, Y0 + 200); {ОЗУ} |
|Rectangle(X0 + 130, Y0 + 30, X0 + 210, Y0 + 70); {АЛУ} |
|Rectangle(X0 + 130, Y0 + 250, X0 + 210, Y0 + 290); {ВЗУ} |
|Rectangle(X0 + 260, Y0 + 120, X0 + 360, Y0 + 150); {У.Ввода} |
|Rectangle(X0 + 260, Y0 + 170, X0 + 360, Y0 + 200); {У.Вывода} |
| |
|{Подписи к прямоугольникам} |
|SetColor(TxtCol); |
| |
| |
| |
| |
| SetTextJustify(2, 0); |
|OutTextXY(X0 + 80, Y0 + 200, 'УУ(ЦУУ)'); |
|OutTextXY(X0 + 80, Y0 + 130, 'PC'); |
|OutTextXY(X0 + 210, Y0 + 200, 'ОЗУ'); |
|OutTextXY(X0 + 210, Y0 + 70, 'АЛУ'); |
|OutTextXY(X0 + 210, Y0 + 290, 'ВЗУ'); |
|OutTextXY(X0 + 360, Y0 + 150, 'У.Ввода'); |
|OutTextXY(X0 + 360, Y0 + 200, 'У.Вывода'); |
|SetTextJustify(0, 0); |
|{Стрелки Big} |
|SetColor(ARBCol); |
|SetFillStyle(1, FILCol); |
|{Вид стрелки} |
|CArrow := BArrow; |
|Arrow(X0 + 85, Y0 + 140, 40, 1); {ОЗУ - УУ(ЦУУ)} |
|FloodFill(X0 + 90, Y0 + 140, ARBCol); |
|Arrow(X0 + 150, Y0 + 75, 40, 3); {ОЗУ - АЛУ} |
|FloodFill(X0 + 150, Y0 + 80, ARBCol); |
|Arrow(X0 + 190, Y0 + 115, 40, 4); {АЛУ - ОЗУ} |
|FloodFill(X0 + 190, Y0 + 110, ARBCol); |
|Arrow(X0 + 150, Y0 + 205, 40, 3); {ВЗУ - ОЗУ} |
|FloodFill(X0 + 150, Y0 + 210, ARBCol); |
|Arrow(X0 + 190, Y0 + 245, 40, 4); {ОЗУ - ВЗУ} |
|FloodFill(X0 + 190, Y0 + 240, ARBCol); |
|Arrow(X0 + 215, Y0 + 135, 40, 1); {У.Ввода - ОЗУ} |
|FloodFill(X0 + 220, Y0 + 135, ARBCol); |
|Arrow(X0 + 255, Y0 + 185, 40, 2); {У.Вывода - ОЗУ} |
|FloodFill(X0 + 250, Y0 + 185, ARBCol); |
|{Стрелки Small} |
|SetColor(ARSCol); |
|{Вид стрелки} |
|CArrow := SArrow; |
|Arrow(X0 + 125, Y0 + 180, 40, 2); {УУ(ЦУУ) - ОЗУ} |
|Arrow(X0 + 125, Y0 + 270, 80, 2); {УУ(ЦУУ) - ВЗУ} |
|Arrow(X0 + 125, Y0 + 50, 80, 2); {УУ(ЦУУ) - АЛУ = КОП} |
|Line(X0 + 45, Y0 + 115, X0 + 45, Y0 + 50); {1} |
|OutTextXY(X0 + 70, Y0 + 60, 'КОП'); {2} |
|{УУ(ЦУУ) - У.Вводы, У.Вывода} |
|Line(X0 + 45, Y0 + 205, X0 + 45, Y0 + 295); {1} |
|Line(X0 + 45, Y0 + 295, X0 + 380, Y0 + 295); {2} |
|Line(X0 + 380, Y0 + 295, X0 + 380, Y0 + 135); {3} |
|Arrow(X0 + 365, Y0 + 135, 15, 1); {in} {4} |
|Arrow(X0 + 365, Y0 + 185, 15, 1); {out} {5} |
|{Носики стрелок Small} |
|SetColor(LightGreen); |
|Arrow(X0 + 125, Y0 + 180, 0, 2); {1} |
|Arrow(X0 + 125, Y0 + 270, 0, 2); {2} |
|Arrow(X0 + 125, Y0 + 50, 0, 2); {3} |
|Arrow(X0 + 365, Y0 + 135, 0, 1); {4} |
|Arrow(X0 + 365, Y0 + 185, 0, 1); {5} |
|SetColor(BRDCol); |
|Rectangle(0, 0, GetMaxX, GetMaxY); |
|end; {BildWin} |
|{-------------------} |
| |
|procedure BildContext; |
|const |
|TxtCol: Word = LightBlue; |
|begin |
|SetColor(BRDCol); {Устанавливаем цвет границы и рисуем ее} |
|Rectangle(XC, YC, GetMaxX - X0, YC + 300); |
|SetTextJustify(1, 1); |
|SetColor(TxtCol + 1); {Заголовок} |
|OutTextXY(GetMaxX - (GetMaxX - X0 - XC) div 2 - X0, YC + 20, 'Обозначения '|
|+ |
|'на схеме:'); |
| |
| |
| CArrow := BArrow; {Стрелки} |
|SetColor(ARBCol); |
|SetFillStyle(1, Blue); |
|Arrow(XC + 50, YC + 50, 40, 2); |
|FloodFill(XC + 40, YC + 50, ARBCol); |
|CArrow := SArrow; |
|SetColor(ARSCol); |
|Arrow(XC + 50, YC + 80, 40, 2); |
|SetColor(LightGreen); |
|Arrow(XC + 50, YC + 80, 0, 2); |
|SetColor(MemCol); |
|SetLineStyle(1, 0, 0); |
|Line(XC + 10, YC + 110, XC + 34, YC + 110); |
|Line(XC + 10, YC + 126, XC + 34, YC + 126); |
|Line(XC + 14, YC + 106, XC + 14, YC + 128); |
|Line(XC + 30, YC + 106, XC + 30, YC + 128); |
|SetColor(CPUCol); |
|Line(XC + 12, YC + 150, XC + 30, YC + 150); |
|SetLineStyle(0, 0, 0); |
|SetColor(TxtCol); |
|SetTextJustify(0, 1); {Значения} |
|OutTextXY(XC + 60, YC + 50, ' - Передача данных'); |
|OutTextXY(XC + 60, YC + 80, ' - Сигнал управления'); |
|OutTextXY(XC + 60, YC + 120, ' - Ячейка памяти'); |
|OutTextXY(XC + 60, YC + 150, ' - Данной линией'); |
|OutTextXY(XC + 60, YC + 160, ' обведены части'); |
|OutTextXY(XC + 60, YC + 170, ' входящие в состав'); |
|OutTextXY(XC + 60, YC + 180, ' процессора (ЦПУ)'); |
|OutTextXY(XC + 20, YC + 200, '? - содержимое файла'); |
|OutTextXY(XC + 20, YC + 210, '1 - адрес первого операнда'); |
|OutTextXY(XC + 20, YC + 220, '2 - адрес второго операнда'); |
|OutTextXY(XC + 20, YC + 230, '3 - адрес результата'); |
|SetTextJustify(0, 0) |
|end; {Context} |
|{-------------------} |
| |
|procedure BildFuncKey; |
|const |
|StrFK: array [1..4] of string[11] = |
|('Помощь F1', 'Назад ', 'Выход Esc'); |
|FkbCol: Word = Green; |
|TxtCol: Word = LightCyan; |
|begin |
|SetColor(BRDCol); |
|Rectangle(XS, YS, GetMaxX - XS, GetMaxY - XS); |
|SetTextJustify(1, 1); |
|SetFillStyle(1, DarkGray); |
|for I := 1 to 4 do |
|begin |
|SetColor(FkbCol); {Установка цвета границы клавиш} |
|Bar((GetMaxX - XS * 2) div 5 * I - Length(StrFK[I]) * 4, YS + 7, |
|(GetMaxX - XS * 2) div 5 * I + Length(StrFK[I]) * 4, YS + 23); |
|Rectangle((GetMaxX - XS * 2) div 5 * I - Length(StrFK[I]) * 4, YS + 7, |
|(GetMaxX - XS * 2) div 5 * I + Length(StrFK[I]) * 4, YS + 23); |
|SetColor(Black); {Установка цвета текста клавиш} |
|OutTextXY((GetMaxX - XS * 2) div 5 * I + 2, YS + 15 - 2, StrFK[I]); |
|SetColor(TxtCol); |
|OutTextXY((GetMaxX - XS * 2) div 5 * I, YS + 15, StrFK[I]) |
|end; |
|SetTextJustify(0, 0); |
|{Сахраняем картинки} |
|FuncKeyWindow[1].Get(XS, YS, GetMaxX - XS, GetMaxY - XS); |
|SetFillStyle(1, GetBkColor); |
|Bar((GetMaxX - XS * 2) div 5 * 3 - Length(StrFK[I]) * 4, YS + 7, |
|(GetMaxX - XS * 2) div 5 * 3 + Length(StrFK[I]) * 4, YS + 23); |
| |
| |
| FuncKeyWindow[3].Get(XS, YS, GetMaxX - XS, GetMaxY - XS); |
|FuncKeyWindow[1].Put(XS, YS); |
|Bar((GetMaxX - XS * 2) div 5 * 2 - Length(StrFK[I]) * 4, YS + 7, |
|(GetMaxX - XS * 2) div 5 * 2 + Length(StrFK[I]) * 4, YS + 23); |
|FuncKeyWindow[2].Get(XS, YS, GetMaxX - XS, GetMaxY - XS) |
|end; {FuncKey} |
|{-------------------} |
| |
|{+----------------------------------------------+} |
|{ } |
|{ Процедуры вывода текстовой информации на экран } |
|{ } |
|{+----------------------------------------------+} |
| |
|procedure Page_1; |
|begin |
|SetViewPort(X, Y, GetMaxX - X, YS - 10, ClipOn); |
|ClearViewPort; |
|SetColor(Blue); |
|OutTextXY(GetMaxX - X - 25, 100, '1'); |
|SetColor(TxtCol); |
|MyText(0, 8, 'До начала работы программы, она находится на ВЗУ, ' + |
|'в виде файла программы'); |
|MyText(0, 16, '(*.exe или *.com).'); |
|SetViewPort(0, 0, GetMaxX, GetMaxY, ClipOn) |
|end; {Page_1} |
|{-------------------} |
| |
|procedure Page_2; |
|begin |
|SetViewPort(X, Y, GetMaxX - X, YS - 10, ClipOn); |
|ClearViewPort; |
|SetColor(Blue); |
|OutTextXY(GetMaxX - X - 25, 100, '2'); |
|SetColor(TxtCol); |
|MyText(0, 8, 'После того как ЭВМ получила команду на запуск ' + |
|'программы, содержимое'); |
|MyText(0, 16, 'этого файла помещается в ячейку ОЗУ, начиная с ' + |
|'ячейки с некоторым'); |
|MyText(0, 24, 'стартовым адресом.'); |
|SetViewPort(0, 0, GetMaxX, GetMaxY, ClipOn) |
|end; {Page_2} |
Страницы: 1, 2
|