Программа изменения цвета границы экрана

Исследование структуры com-файла, определение функций ввода и вывода. Разработка com-программы изменения цвета границы экрана при последовательном нажатии на клавишу F10. Выбор системных функций, разработка алгоритма. Функциональное описание программы.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 31.10.2017
Размер файла 34,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru

Задание на проектирование

а) Создать программу изменения цвета границы экрана при последовательном нажатии на клавишу F10.

б) Формат программы: com-программа.

в) Ввод с клавиатуры: средствами DOS.

г) Вывод на экран: в текстовом режиме.

д) Динамическое распределение памяти: определение размера программы.

файл программа цвет экран алгоритм

Введение

Целью данного курсового проекта является закрепление, углубление и обобщение знаний, полученных во время обучения по дисциплине «Системное программное обеспечение», и применение этих знаний к системному решению конкретной задачи по программированию системных функций IBM PC, развитие навыков работы со специальной литературой и навыков программирования.

Знакомство с назначением и возможностями системных программ (их обычно называют DOS и BIOS) является необходимым элементом подготовки квалифицированного программиста, независимо от того, в какой предметной области он работает. При разработке программ на языках высокого уровня (Паскаль, Си) многие средства DOS и BIOS реализуются в неявной форме с помощью операторов языка, его встроенных функций или библиотечных процедур, и необходимость прямого использования системных функций возникает реже. Однако знакомство с внутренними возможностями DOS и BIOS с помощью языка низкого уровня Turbo Assembler, ее алгоритмами и процедурами позволяет увидеть за формализмом языка высокого уровня те реальные процессы, которые будут протекать в системе при выполнении прикладной программы и, следовательно, более осознанно подойти к разработке структуры программы и ее конкретных алгоритмов.

Выбор системных функций и разработка алгоритма

В первую очередь, исходя из поставленной задачи, рассмотрим структуру com-файла и определим функции ввода и вывода.

Программа типа .com содержит лишь один сегмент, включающий все компоненты программы: PSP (префикс программного сегмента - это область размером 100h байт, которая содержит информацию необходимую DOS для работы программы), программный код (т.е. оттранслированные в машинные коды программные строки), данные и стек. После загрузки программы все сегментные регистры (CS, DS, ES, SS) указывают на начало PSP. Указатель стека инициализируется числом FFFEh. Отсюда следует, что, независимо от фактического размера программы ей выделяется 64 Кбайт адресного пространства, всю нижнюю часть которой занимает стек.

Первое слово PSP содержит номер прерывания DOS, которое будет приводить к завершению программы. Когда выполняется последний оператор RET программы, то значения на вершине стека указывают счетчику команд (регистр IP) на начало PSP, таким образом, код завершения выполняется как следующая инструкция программы.

Реализация алгоритма программы требует нажатия на клавиатуре следующих клавиш:

а) F10 - вызывает изменение цвета границы экрана;

б) Esc - выход из программы;

в) В случае нажатия других - вывод сообщения об ошибке.

Прерывание DOS позволяющее реализовать ввод символа без эха и без обработки Ctrl/C - INT 21h c функцией 7h. Данная функция при вызове вводит в программу один символ из кольцевого буфера ввода, при отсутствии ждет его ввода. Она так же позволяет вводить в программу расширенные коды ASCII, что дает возможность управлять программой с помощью функциональной клавиши F10.

Для вывода на терминал необходимы две функции: первая - выводит строку с информационными сообщениями MSG1 и MSG2, используется функция 09h прерывания DOS - INT 21h; вторая - для вывода символа - функция 40h прерывания DOS - INT 21h. Посимвольный вывод необходим для преобразования числа из кода ASCII в нормальную цифровую форму, для этого делением числа на 10 производится отделение цифр слева направо и вывод на экран, что вызывает необходимость использования функции позиционирования курсора 02h прерывания BIOS - 10h.

Определение размера программы происходит путем получения разности адреса конца и начала программы. Для этого в конце программы символ `$' присваиваем переменной newstk, началу же соответствует begin, т.е. размер программы равен (begin-newstk).

Рассмотрим более подробно работу в текстовом видеорежиме. Вся работы программы осуществляется в стандартном текстовом режиме 80 символов на 25 строк, режим устанавливается функцией 0h прерывания BIOS - 10h.

Когда дисплей установлен в текстовый режим, то каждой позиции символа на экране отводится два байта памяти. Первый байт содержит номер кода ASCII кода символа, а второй - атрибуты символа. Цветной адаптер может выводить в цвете, как сам символ, так и всю область, отведенную данному символу (фоновый цвет). Граница символьного экрана может иметь цвет, отличный от фонового цвета центральной части экрана.

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

EGA имеет специальную функцию BIOS для установки содержимого регистров палитры (набор цветов). Палитра состоит из 17 регистров. С 0 по 15 определяют саму палитру, а 16 регистр устанавливает цвет границы экрана. Для его изменения используются функция 0bh прерывания 10h, при этом регистр bh=00 - выбор цвета границы экрана, который заносится в регистр BL.

Схема алгоритма

Размещено на http://www.allbest.ru

Текст программы с необходимыми комментариями

Блок-схема программы представлена в приложении 1, листинг программы в приложении 2.

В начале программы происходит описание заголовка программы и сегмента кода:

title F10BORDUR ;заголовок

CODESG SEGMENT 'CODE'; начало сегмента кода

ASSUME CS:CODESG, DS:CODESG,SS:CODESG,ES:CODESG ;назначение адресаций регистров

ORG 100H; устанавливаем относительный адрес для начала выполнения программы

begin:

main proc; начало процедуры

1. Фрагмент программы, осуществляющий переход в текстовый режим (так же используется для очистки экрана):

mov ah,00h ; функция 00h позволяющая переключать режимы

mov al,03 ; 80х25 стандартный 16-цветовой текстовый режим

int 10h ; вызов BIOS для выполнения функции

2. Фрагмент программы, осуществляющий вывод на экран строки символов (сообщений):

MOV AH,09h ;Функция вывода на экран строки до символа $

LEA DX,MSG1 ; Команда LEA загружает адрес области NAMPRMP; в регистр DX для передачи в DOS адреса выводимой информации.

INT 21H ; Вызов DOS

3. Фрагмент программы, осуществляющий вычисление размера программы и вывод на экран результата с разбиением числа на цифры и выводом этих цифр справа налево.

mov ax,(newstk-begin) ; заносим в регистр AX разность конца и начала адресов; сегмента

GG: div ten ; делим на 10 для выделения цифры справа

mov c1,al ; цифра заносится в AL, ее перемещаем в C1 для того;сохранить ее

add ah,t3 ; для вывода на экран цифры, а не символа ASCII; соответствующего цифре 48, так как в таблице ASCII; цифры от 0 до 9 имеют соответственно код 48 - 57

mov c2,ah ; сохраняем «цифру» так как регистр AH будет; использоваться далее

MOV AH,02h ;функция установки положения курсора

MOV BH,00 ;указываем страницу 0

MOV DH,1 ; строка 1

MOV DL,i ; столбец соответствует переменной I

INT 10H ; Вызов BIOS

dec i ;уменьшение I на единицу для сдвига курсора влево

MOV AH,40h ;Функция вывода на экран

mov bx,01 ; дескриптор дисплея

mov cx,1 ; количество выводимых байт

LEA DX,c2 ; загружаем адрес строки С2 где хранится код цифры

INT 21H ; вызываем DOS

cmp c1,0 ; проверяем остались ли цифры в числе

je mainl ; если да то переходим к метке MAINL

mov al,c1 ; возвращаем в регистр оставшееся число

xor ah,ah ; обнуляем регистр AH для того чтобы число переместилось в AX

JMP GG ; переходим к метке GG для вывода следующей цифры

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

MAINl: MOV AH,07h ; Функция прямого ввода с клавиатуры без эхоотображения

INT 21H ; Вызов DOS

CMP AL,0 ; Если в регистре AL после ввода с клавиатуры 0, то это означает

JE func ; что была нажата функциональная клавиша, переходим к метке func

cmp al,1bh ;Иначе, проверяем на ESC - код 1BH,

je exitprog ; если да, то переходим к метке exitprog для завершения программы

mist: mov ah,00h ; в случае если была нажата другая клавиша, очищаем экран

mov al,03 ; методом перехода в текстовый режим

int 10h

; и выводим на экран сообщение MSG2

MOV AH,9h ;Функция вывода на экран строки

lea dX,MSG2

INT 21H

JMP MAINl ; переходим для ожидания ввода к метке Mainl

func: INT 21H ;для проверки функциональной клавиши нужно повторно вызвать DOS

CMP AL,44h ; Проверяем на F10, код ASCII - 44H

JE EX ;если это она, то переходим к метке EX для смены цвета границы экрана

JMP mist ; иначе означает что была нажата какая то другая функциональная

; клавиша, переходим к метке MIST для вывода сообщения об ошибке

ex: MOV AH,0bh ;Функция установки цвета

MOV BH,00 ;границы экрана

MOV BL,colorborder ; в переменной colorborder

INT 10H ;Вызвать BIOS

cmp colorborder,0fh ; Проверяем равена ли переменная colorborder 15

je obnul ;если да то к метке obnul

inc colorborder ; иначе инкреметируем

jmp mainl ; переходим к ожиданию ввода с клавиатуры

obnul: mov colorborder,0 ;Заносим нулевой цвет в colorborder

jmp mainl ; переходим к ожиданию ввода с клавиатуры

exitprog: ret ; Завершение программы возврат в DOS

main endp ; завершение процедуры

5. Фрагмент программы, осуществляющий определение данных:

MSG1 DB 'For change color of screen border press F10, for exit ESC. The program size in bytes is$'

MSG2 DB 'Wrong key is pressed, press F10. Or Esc for exit$'

colorborder db 1

c1 db 0

c2 db 0

ten db 10

i db 20

t3 db 48

newstk=$ ; newstk присваиваем адрес конца программы

CODESG ENDS ; конец сегмента

end begin ;конец программы

Описание программы

Программа представляет собой .com файл, запустив который в режиме MS-DOS выводит сообщение: «For change color of screen border press F10, for exit ESC. The program size in bytes is» где вместо … выводится размер программы в байтах. В сообщении выдается исчерпывающая информация о том, что, программа позволяет изменять цвет границы экрана при последовательном нажатии на клавишу F10 (причем цвет изменяется путем инкрементирования от 0 до 15, после 15 нажатия цвет заново сбрасывается в 0), а для выхода из программы необходимо нажать ESC. В случае если будет нажата не одна из требуемых клавиш, программа выдаст сообщение об ошибке: «Wrong key is pressed, press F10. Or Esc for exit».

Заключение

В результате разработки данного курсового проекта была усвоена работа с программным продуктом Turbo Assembler v.5.0., рассмотрена и реализована структура программы в виде com-файла, определяющая свой собственный размер в памяти и выполняющая смену цвета границы экрана при нажатии клавиши F10, используя системные функции прерываний DOS и BIOS. Таким образом, рассмотрены реальные процессы протекающие в системе в ходе выполнения программы.

Список литературы

1. Методические указания для курсового проектирования по курсу «Системное программное обеспечение» / Уфимск.гос.авиац.техн.ун-т; Сост.:О.Д.Лянцев - Уфа, 1997 - 27 с.

2. Абель П. Язык Ассемблера для IBM PC и программирования /Пер. с англ. Ю.В.Сальникова - М.; Высшая школа 1991 - 447 с.:ил.

3. Джордейн Р. Справочник программиста персональных компьютеров типа IBM PC, XT и AT: Пер. с англ./Предисл. Н.В.Гайского - М.: Финансы и статистика, 1991 - 544 с.:ил.

4. Скэнлон Л. Персональные ЭВМ IBM PC и XT. Программирование на языке ассемблера: Пер. с англ. - М.: Радио и связь, 1989 - 336с.:ил.

5. Стандарты в программной документации: Методические указания к курсовому и дипломному проектированию для студентов всех специальностей. - Уфа: УАИ, 1987 - 35с.

Приложение 1

Блок-схема программы

Размещено на http://www.allbest.ru

Размещено на http://www.allbest.ru

Приложение 2

Листинг программы.

title F10BORDUR

CODESG SEGMENT 'CODE'

ASSUME CS:CODESG, DS:CODESG,SS:CODESG,ES:CODESG

ORG 100H

begin:

main proc

mov ah,00h

mov al,03

int 10h

MOV AH,09h

LEA DX,MSG1

INT 21H

mov ax,(newstk-begin)

GG: div ten

mov c1,al

add ah,t3

mov c2,ah

MOV AH,02h

MOV BH,00

MOV DH,1

MOV DL,i

INT 10H

dec i

MOV AH,40h

mov bx,01

mov cx,1

LEA DX,c2

INT 21H

cmp c1,0

je mainl

mov al,c1

xor ah,ah

JMP GG

MAINl: MOV AH,07h

INT 21H

CMP AL,0

JE func

cmp al,1bh

je exitprog

mist:mov ah,00h

mov al,03

int 10h

MOV AH,9h

lea dX,MSG2

INT 21H

JMP MAINl

func: INT 21H

CMP AL,44h

JE EX

JMP mist

ex: MOV AH,0bh

MOV BH,00

MOV BL,colorborder

INT 10H

cmp colorborder,0fh

je obnul

inc colorborder

jmp mainl

obnul: mov colorborder,0

jmp mainl

exitprog: ret

main endp

MSG1 DB 'For change color of screen border press F10, for exit ESC. The program size in bytes is$'

MSG2 DB 'Wrong key is pressed, press F10 or Esc for exit$'

colorborder db 1

c1 db 0

c2 db 0

ten db 10

i db 20

t3 db 48

newstk=$

CODESG ENDS

end begin

Размещено на allbest.ru

...

Подобные документы

  • Описание записи, содержащей поля: расчётный счёт плательщика и получателя, перечисляемая сумма в рублях. Программа для ввода данных с клавиатуры в массив. Листинг исходного файла программы вывода информации на экран и распечатка снимков с экрана.

    контрольная работа [710,6 K], добавлен 20.01.2011

  • Программа для расчета полинома. Описание и схема алгоритма, распределение памяти под код программы, под данные и стек. Схема хранения операций ввода-вывода и их подключение. Изменения стека во время прогона программы. Листинг программы с комментариями.

    курсовая работа [59,0 K], добавлен 02.12.2009

  • Измерение и определение количества цвета с помощью электронной схемы. Анализ принципа действия генераторных и параметрических датчиков цвета. Разработка программы для управления системой определения цвета. Описания модуля датчика распознавания цвета.

    контрольная работа [489,4 K], добавлен 21.04.2015

  • Описание используемых в программе операторов, процедур, функций. Директива include. Правила объявления и определения функций в СИ++. Блок-схема алгоритма программы. Подпрограммы чтения из файла и записи в файл. Использование заголовочных файлов.

    курсовая работа [346,8 K], добавлен 26.04.2012

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

    курсовая работа [2,1 M], добавлен 21.01.2014

  • Разработка программы, аналога Paint системы Windows, с функциями открытия изображения в графическом редакторе и его сохранения, написания текста в любом указанном мышкой месте, изменения шрифта, размера и цвета текста на языке программирования Delphi.

    курсовая работа [278,5 K], добавлен 06.04.2014

  • Разработка алгоритма и программы, обеспечивающей вычисление максимального значения функции на заданном отрезке, первой производной заданной функции. Методика расчёта, алгоритм решения задачи, описание программы. Результаты расчётов и графики функций.

    курсовая работа [576,6 K], добавлен 17.05.2011

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

    курсовая работа [1,5 M], добавлен 08.02.2011

  • Определение необходимых модулей программы, структуры файла базы данных. Описание разработки программы, отладка и тестирование. Разработка приложения Organizer.exe, меню и руководство пользователя. Алгоритм обработки событий главного меню (расписания).

    курсовая работа [901,8 K], добавлен 11.02.2014

  • Написание алгоритма в среде Microsoft Foundation Classes, который приводит окружности к их перемещению слава направо с последующим появлением окружностей в левой части экрана, при достижении ими правой границы. Листинг и результаты работы программы.

    курсовая работа [294,2 K], добавлен 25.05.2015

  • Словесное описание алгоритма программы. Открытие файла процедурой Rewrite, его проверка на наличие ошибок при открытии. Особенности построения диаграммы. Листинг программы, ее тестирование и отладка. Выполнение процедуры CloseFile при закрытии файла.

    контрольная работа [17,3 K], добавлен 11.06.2010

  • Осуществление работы разрабатываемой программы на основе алгоритма, использующего Z-буфер. Аналитическое описание программной реализации. Алгоритмы основных функций программы. Содержание руководства пользователя. Файлы программы, пункты главного меню.

    курсовая работа [1,7 M], добавлен 15.04.2015

  • Анализ различных командных интерпретаторов. Разработка структуры программы на языке программирования С и ее алгоритма. Требования для работы с ней. Действия, необходимые для её запуска и функционирования. Описание функций translate, sozd, info и f.

    курсовая работа [238,2 K], добавлен 06.12.2014

  • Разработка программы игры в крестики-нолики. Примеры игровой ситуации на игровом поле. Описание входных и выходных данных, переменных и функций программы. Реализация алгоритма работы программы на языке C++. Текст программы и примеры ее выполнения.

    курсовая работа [352,8 K], добавлен 14.04.2011

  • Анализ и описание алгоритма. Основные характеристики выбранного компьютера, программных сред (операционная система и среда программирования). Описание компонентов и интерфейса программы, а также модулей, процедур и функций. Вызов и загрузка программы.

    курсовая работа [1,3 M], добавлен 26.04.2015

  • Считывание информации из файла, анализ заголовка. Установка видеорежима и анализ его параметров. Разработка процедуры вывода изображения на экран. Методы вывода сообщений. Разработка алгоритма, удовлетворяющего требованиям задания и интерфейса программы.

    курсовая работа [23,6 K], добавлен 17.05.2013

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

    курсовая работа [304,4 K], добавлен 17.08.2013

  • Создание приложения, которое будет производить построение графиков функций по заданному математическому выражению. Разработка программы "Генератор математических функций". Создание мастера функций для ввода математического выражения, тестирование.

    дипломная работа [1,7 M], добавлен 16.02.2016

  • Выбор режимов адресации, посредством которых будет осуществлен доступ к данным. Этапы создания программы. Характеристика таблицы символов и полученного файла листинга. Анализ изменения состояния регистра IP при выполнении команд JMP, Jcc, LOOPx.

    курсовая работа [4,9 M], добавлен 25.03.2012

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

    курсовая работа [159,8 K], добавлен 26.01.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.