Программа изменения цвета границы экрана
Исследование структуры 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