Рефераты

Взаимодействие основных частей ЭВМ при выполнении программы

Взаимодействие основных частей ЭВМ при выполнении программы

| |

| |

|Министерство образования РФ |

| |

|Хабаровский государственный технический университет |

| |

| |

|Институт (факультет) Институт информационных технологий |

|Кафедра Компьютерное проектирование и сертификация машин |

|Специальность Металлорежущие станки и инструменты |

| |

| |

| |

| |

| |

| |

| |

| |

| |

|Взаимодействие основных частей ЭВМ при выполнении программы |

| |

| |

|Пояснительная записка к курсовой работе |

| |

|По дисциплине «Информатика» |

| |

|КР. 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


© 2010 Современные рефераты