Задачах программирования лабораторный практикум по дисциплине «Системное программное обеспечение»


Скачать 0.68 Mb.
Название Задачах программирования лабораторный практикум по дисциплине «Системное программное обеспечение»
страница 4/6
Тип Задача
rykovodstvo.ru > Руководство эксплуатация > Задача
1   2   3   4   5   6

ПРОГРАММИРОВАНИЕ СИСТЕМНЫХ ФУНКЦИЙ BIOS И DOS ДЛЯ РАБОТЫ С КЛАВИАТУРОЙ



2.1. Цель работы

Целью настоящей работы является изучение возможностей базовой системы ввода-вывода и дисковой операционной системы для программирования ввода информации с клавиатуры.

2.2. Теоретическая часть

2.2.1. Системные функции BIOS для работы с клавиатурой

Базовая система ввода-вывода (BIOS) имеет три функции для работы с клавиатурой. Они являются частью клавиатурного драйвера и выполняются с помощью прерывания 16h. Номер конкретной функции задается в регистре AН. Результат выполнения функции получается в регистрах AL и AH.

2.2.1.1. Чтение очередного символа

Функция AH=00h помещает в регистр AL очередной ASCII-код символа, введенного с клавиатуры, а в регистр AH заносит скэнкод этого символа. Если буфер клавиатуры пуст, то компьютер ожидает нажатия клавиши. Если клавиша или комбинация клавиш генерирует расширенный код, то в регистр AL помещается 0, а в регистр AH расширенный код. Введенный символ на экране не отображается.

MOV AH,00h

INT 16h

2.2.1.2. Справка о наличии символа

Функция AH=01h сбрасывает флаг нуля в 0 (ZF=0), если в буфере клавиатуры есть символ для чтения, и устанавливает флаг в 1, если буфер пуст. Этот символ и его скэн-код будут помещены в регистры AL и AH соответственно. Символ остается в буфере.

MOV AH,01h

INT 16h

2.2.1.3 Определение текущего состояния клавиатуры

Функция 02h помещает в регистр AL содержимое первого из двух байтов состояния клавиатуры с абсолютными адресами 417h и 418h. Если нужно узнать содержимое второго байта, его необходимо прочитать из памяти.

Содержимое первого байта (417h):

Бит клавиша значение, когда бит = 1

7 Ins ; режим вставки включен

6 CapsLock ; фиксация верхнего регистра

5 NumLock ; фиксация цифровой клавиатуры

4 ScrollLock ; прокрутка экрана включена

3 Alt ; клавиша нажата

2 Ctrl ; клавиша нажата

1 Shift ; клавиша нажата

Содержимое второго байта (418h):

7 Ins ; клавиша нажата

6 CapsLock ; клавиша нажата

5 NumLock ; клавиша нажата

4 ScrollLock ; клавиша нажата

3 Ctrl-NumLock ; режим паузы

Остальные биты не используются.

MOV AH,02h

INT 16h

Системные функции, осуществляемые прерыванием 16h, принадлежат к числу тех, которые позволяют создавать программы, не зависящие от операционной системы.

Тем не менее целесообразней пользоваться более гибкими возможностями системных функций для работы с клавиатурой, вызываемых с помощью прерывания 21h.

2.2.2 Системные функции DOS для работы с клавиатурой

Функции DOS для чтения с клавиатуры различаются, главным образом, по трем признакам:

а) ожидают ли ввода или нет;

б) выводят ли после чтения символ на экран;

в) проверяется ли при их выполнении наличие "Ctrl-Break" или нет.

2.2.2.1 Ввод с клавиатуры с эхоотображением

Функция 01h ожидает ввода символа, если буфер клавиатуры пуст, а затем выводит его на экран в текущую позицию курсора. Введенный символ помещается в регистр AL. Если AL содержит 00Н, это означает, что получен расширенный ASCII-код, второй байт которого будет прочитан при следующем выполнении функции. При выполнении функции осуществляется проверка наличия "Ctrl-Break". Клавиша Esc игнорируется. Клавиша Backspace сдвигает курсор на одну позицию влево, но символ, находящийся в этой позиции, не стирается. Клавиша Enter вызывает перемещение курсора в первую позицию текущей строки (нет автоматического перевода строки).

MOV AH,01h ; номер функции

INT 21h ; ожидаем нажатия клавиши

CMP AL,0 ; расширенный код ?

JE EXT_CODE ; если да, то на процедуру обработки

........ ...... .. расширенного кода

EXT_CODE: INT 21h ; получаем в AL номер кода

CMP AL,77 ; проверка на (-->)

JNE C_R ; если нет, то следующая проверка

JMP CUR_RIT ; если да, то на процедуру

C_R: CMP AL,75 ; и т.д.

2.2.2.2 Ввод символа без ожидания

Некоторые программы, работающие в реальном времени, не могут останавливаться и ждать нажатия клавиши. Такие программы принимают символ из буфера, только тогда, когда это им удобно, например, это игровые программы.

Функция 6 прерывания 21h – единственный способ получить введенный символ без ожидания. Эта функция не дает эха на экране и не распознает Ctrl-Break. Перед вызовом прерываний в DL должно быть помещено FFh. Иначе функция 6 будет печатать символ, находящийся в DL в текущую позицию курсора. Если символ принят, то он помещается в AL. Нулевое значение говорит о расширенном коде, и прерывание должно быть повторено.

MOV AH,6 ; номер функции

MOV DL,FFh ; запрос ввода с клавиатуры

INT 21H ; получение символа

JZ NO_CHAR ; переход, если нет символа

CMP AL,0 ; проверка на расширенный код

JE EXT_COD ; переход,если расширенный код

...........

EXT_COD: INT 21h

2.2.2.3. Прямой ввод с клавиатуры без эхо

Функции 7 и 8 прерывания 21h ожидают ввода символа, если буфер клавиатуры пуст. Появление символа на экране не отображается. При этом функция 8 распознает Ctrl-Break, а функция 7 не реагирует на него. В обоих случаях символ возвращается в AL. Когда в AL содержится 0, получен расширенный код. Нужно повторить прерывание, и в AL появится второй байт расширенного кода.

MOV AH,7 ; номер функции

INT 21h ; ожидаем ввод символа

CMP AL,0 ; проверка на расширенный код

JE EXT_COD ; переход на процедуру, иначе код

символа в AL

2.2.2.4. Проверка состояния клавиатуры

Функция 0B помещает значение FF в регистр AL, если буфер клавиатуры содержит один или более символов, и значение 0, когда буфер пуст.

MOV AH,0Bh ; номер функции

INT 21h ; вызываем прерывание

CMP AL,FFh ; сравниваем с FF

JE GET_KEY ; переход, если буфер не пуст
2.2.2.5. Получение строки символов

Функция 0A позволяет вводить строку длиной до 254 символов, выдавая эхо на экран. Эта функция продолжает ввод поступающих символов до тех пор, пока не нажата клавиша Enter. DS:DX указывает на адрес памяти, куда должна быть помещена строка. Первый байт в этой позиции должен содержать число байтов, отводимых для этой строки. После того как строка введена, второй байт даст число реально введенных символов. Сама строка начинается с третьего байта.

MOV AX,5000h ; указываем адрес области данных

MOV DS,AX ;

MOV DX,0 ;

MOV BX,DX ;

MOV AL,51 ; указываем длину строки

MOV [BX],AL ; заполняем первый байт

MOV AH,0Ah ; номер функции

INT 21h ; получаем строку

Эта функция выполняет команды редактирования строки. Нажатие клавиши Backspace или "стрелка-влево" удаляет символ с экрана без помещения его в память. Расширенные коды игнорируются, пустые строки допускаются (имеется в виду клавиша Enter, которой не предшествует другой символ). Когда вводится больше символов, чем отведено места для строки, лишние символы игнорируются, и включается гудок динамика.

2.2.2.6. Очистка буфера клавиатуры и ввод символа

Функция 0С выполняет любую из функций ввода с клавиатуры 1,6,7,8 и A, но перед этим чистит буфер клавиатуры. Надо просто поместить номер функции ввода в AL.

MOV AH,0Ch ; номер функции

MOV AL,1 ; выбираем функцию ввода символа

INT 21h ; чистим буфер,ждем ввода

2.2.2.7. Установка позиции курсора

Функция 02h прерывания 10h устанавливает курсор в любую позицию на экране в соответствии с координатами строки и столбца. Номер страницы обычно равен 0, но может иметь значение от 0 до 3 при 80 столбцах на экране. Для установки позиции курсора необходимо занести в регистр AH значение 02, в регистр BH – номер страницы и в регистр DX – координаты строки и столбца.

MOV AH,02 ; номер функции

MOV BH, 00 ; номер страницы

MOV DH,строка ; номер строки

MOV DL,столбец ; номер столбца

INT 10h ; устанавливаем курсор

2.2.2.8. Очистка экрана

Выведенная на экран информация остается на экране до тех пор, пока не будет смещена в результате прокручивания или замене на на том же месте другой информацией. Когда программа пользователя начинает свое выполнение, экран может быть очищен. Очищаемая область экрана может начинаться в любой позиции и заканчиваться в любой другой позиции с большим номером. Начальное значение строки и столбца заносится в регистр CX, конечное – в DX, значение 07 в регистр BH и 0600h в AX. В следующем примере выполняется очистка всего экрана:

MOV AX,0600h ; AH=06 (прокрутка), AL=00 (весь экран)

MOV BH,07 ; нормальный атрибут

MOV CX,0000 ; верхняя левая позиция

MOV DX,184Fh ; нижняя правая позиция

INT 10h ; передача управления в BIOS

Значение 06 в регистре AH указывает на выполнение операции очистки экрана. Эта операция очищает экран пробелами. В регистр AL заносится число сдвигаемых строк (00 - весь экран). CH и CL содержат строку и столбец левого верхнего угла, а DH и DL –строку и столбец правого нижнего угла. Появляющиеся из-за сдвига строки чистые, они выводятся с кодом атрибутов из BH.

3. Порядок выполнения работы

1. Напишите и выполните, пользуясь отладчиком DEBUG, команды для установки курсора по координатам: строка 20, столбец 58.

2. Напишите и выполните, пользуясь отладчиком DEBUG, команды для очистки экрана, начиная с 0-го столбца 12 строки, до 79-го столбца 22-й строки.

3. Пользуясь отладчиком DEBUG, введите с клавиатуры дату в формате дд/мм/гг в центре предварительно очищенного экрана.

4. Используя отладчик DEBUG, проверьте воздействие на содержимое регистра AX нажатие клавиш на клавиатуре. Для этого введите следующие команды:

MOV AH,00

INT 16h

JMP 100
Используя команду U 100,104, дисассемблируете программу и с помощью G 104 выполните команды MOV и INT. Выполнение программы остановится, и процессор перейдет в ожидание ввода. Для проверки регистра AH нажмите любую клавишу. Нажимая различные клавиши, проверьте работу этой программы.

5. Напишите и выполните программу, которая переводит курсор в 24 строку и нулевой столбец, если нажата клавиша PgDn.

4. Требования к отчету

Отчет по лабораторной работе должен содержать:

а) титульный лист;

б) условие задания;

в) текст программ на языке Ассемблера;

г) ответы на контрольные вопросы.

5. Контрольные вопросы

1. Какие шестнадцатеричные значения строки и столбца соответствуют нижнему правому углу экрана?

2. В какие регистры помещается скэн-код и код символа при нажатии символьной клавиши?

3. Какая информация будет находиться в регистре AL после нажатии функциональной клавиши?
1   2   3   4   5   6

Похожие:

Задачах программирования лабораторный практикум по дисциплине «Системное программное обеспечение» icon Лекция 1
Молчанов А. Ю. Системное программное обеспечение. Лабораторный практикум: – спб.: Питер, 2005. – 284 с
Задачах программирования лабораторный практикум по дисциплине «Системное программное обеспечение» icon Введение в системное программное обеспечение. Вопросы: Классификация программного обеспечения
Выделим еще один класс (скорее группу) программ специальное программное обеспечение информационных и управляющих систем
Задачах программирования лабораторный практикум по дисциплине «Системное программное обеспечение» icon Программа дисциплины «Системное программное обеспечение» для специальности...
Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов специальности 230101. 65 «Вычислительные...
Задачах программирования лабораторный практикум по дисциплине «Системное программное обеспечение» icon Программа дисциплины «Системное программное обеспечение» для специальности...
Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов специальности 230101. 65 «Вычислительные...
Задачах программирования лабораторный практикум по дисциплине «Системное программное обеспечение» icon Программа дисциплины «Системное программное обеспечение» для специальности...
Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов специальности 230101. 65 «Вычислительные...
Задачах программирования лабораторный практикум по дисциплине «Системное программное обеспечение» icon В. К. Никишев «Лабораторный практикум по современным языкам программирования Visual Studio »
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
Задачах программирования лабораторный практикум по дисциплине «Системное программное обеспечение» icon Инструментарий веб-разработчика: Apache, php, Mysql, phpMyAdmin Лабораторный...
Инструментарий веб-разработчика: Apache, php, Mysql, phpMyAdmin: Лабораторный практикум по дисциплине «Сети ЭВМ и телекоммуникации»...
Задачах программирования лабораторный практикум по дисциплине «Системное программное обеспечение» icon Эксплуатационные материалы лабораторный практикум
Эксплуатационные материалы: лабораторный практикум / А. Д. Синегибская. – Братск: БрГУ, 2011. – 65 с
Задачах программирования лабораторный практикум по дисциплине «Системное программное обеспечение» icon Среднетехнический факультет
Лабораторный практикум составлен для проведения лабораторных работ по дисциплине «Технохимический контроль производства»
Задачах программирования лабораторный практикум по дисциплине «Системное программное обеспечение» icon Лабораторный практикум по дисциплине
Лабораторные работы должны выполняться в той последовательности, в которой они приводятся в данной разработке
Задачах программирования лабораторный практикум по дисциплине «Системное программное обеспечение» icon Рабочая программа по дисциплине б 3 «Программное обеспечение инженерных и научных исследований»
Целью освоения дисциплины «Программное обеспечение инженерных и научных исследований» является формирование компетенций и навыков...
Задачах программирования лабораторный практикум по дисциплине «Системное программное обеспечение» icon Методические указания по дисциплине “Базы данных и субд”
Методические указания предназначены для студентов специальностей 230105 «Программное обеспечение вычислительной техники и автоматизированных...
Задачах программирования лабораторный практикум по дисциплине «Системное программное обеспечение» icon Методические указания по дисциплине “Системы управления базами данных”
Методические указания предназначены для студентов специальностей 230105 «Программное обеспечение вычислительной техники и автоматизированных...
Задачах программирования лабораторный практикум по дисциплине «Системное программное обеспечение» icon Рабочая программа по дисциплине «Системное и прикладное программное...
Рабочая пpогpамма составлена на основе на основании на основании решения кафедры «Вычислительная техника» Ульяновского государственного...
Задачах программирования лабораторный практикум по дисциплине «Системное программное обеспечение» icon Программа дисциплины разработана на основе государственного общеобязательного...
Госо рк 04. 019-2008 для специальности 050704 – “Вычислительная техника и программное обеспечение” и типовой программы утвержденной...
Задачах программирования лабораторный практикум по дисциплине «Системное программное обеспечение» icon Кафедра товароведения и товарной экспертизы лабораторный практикум...
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

Руководство, инструкция по применению




При копировании материала укажите ссылку © 2024
контакты
rykovodstvo.ru
Поиск