- •Введение
- •Порядок оформления срс по дисциплине «Системное программирование»
- •1. Постановка задачи.
- •2. Краткое описание алгоритма.
- •3. Текст программы.
- •4 . Результаты тестирования и характеристики
- •Трансляция программы. Компоновка программы. Отладка программы. Утилита make.
- •Арифметические команды: сложение,вычитание, умножение и деление со знаком и без знака.
- •Исследование различных структур данных.
- •4 Результаты тестирования и характеристики
- •Исследование операций над двоичными числами.
- •Команда int-прерывание .
- •Функции для работы с клавиатурой.
- •Вызовы функции, инициируемые прерыванием типа 21
- •Логические команды. Реализация программ разветвляющейся структуры
- •Команды передачи управления.
- •4 . Результаты тестирования и характеристики
- •Организация ввода данных и вывода результатов
- •Реализация алгоритмов работы со строками
- •Цепочные команды
- •Литература
Функции для работы с клавиатурой.
Эти функции достаточно просты; они считывают либо отдельные набираемые на клавиатуре символы в регистр AL, либо последовательность символов (строку) в память. Если только вам не приходится иметь дело с некоторыми необычными комбинациями клавиш, то вы найдете эти функции удобными для применения.
В диалоговых программах от пользователя нередко требуется дать ответ на приглашение к вводу или сделать выбор из меню вводом одной буквы или цифры. Пусть, например, ваша программа изображает сообщение, в котором от пользователя требуется нажать клавишу либо с буквой Д , либо с буквой К (для продолжения или прекращения работы). Ввод Д заставляет программу перейти к группе команд, помеченных меткой YES, а ввод Н - к команде с меткой N0. При нажатии любой другой клавиши программа снова должна ожидать ввода либо буквы Д, либо буквы Н. Эту задачу выполняет следующий фрагмент:
GET KEY: MOV АН, 1 ;считать символ INT 21H
СМР AL, "Д" ;0н равен Д?
JE YES ;если да, то перейти к метке YES СМР AL, "Н" ;он равен Н?
JE N0 ;если да, то перейти к метке N0 JNE GET KEY в противном случае ждать ввода Д или Н
Данный фрагмент распознает только прописные буквы Д и Н, но пользователи склонны набирать символы не нажимая клавишу верхнего регистра . Чтобы программа воспринимала ответы, набранные строчными буквами, добавьте дополнительные команды сравнения СМР AL, "д" и СМР АL, "н".
Вызовы функции, инициируемые прерыванием типа 21
Рег-р АH |
Операция |
Допол. входные регистры |
Выходные регистры |
1 |
Ожидание набора символа на клавиатуре и последующее его изображение на экране |
Не используются |
(AL) = символ |
6 |
Чтение символа с клавиатуры |
(DL) = FF |
(AL) = очеред символ, если буфер клавиатуры не пуст |
7 |
Ожидание набора символа на клавиатуре без последующего его отображения на экране |
Не используются |
(AL) = символ |
8 |
Ожидание набора символа на клавиатуре без последующего его отображения на экране с проверкой на расширение. |
Не используются |
(AL) = символ |
А |
Чтение клавиатурной строки в буфер |
(DS : DX) = адрес буфера 1-й байт размер буфера |
Второй байт буфера - число фактически прочитанных символов |
B |
Чтение состояния клавиатуры |
Не используются |
AL = FF, если клавиатур- ная строка пуста, AL = 0, если хоть 1 символ |
С |
Опустошение буфера клавиатуры и вызов функции для работы с клавиатурой |
(AL) = номер функции для работы с клавиатурой |
В соответствии с вызываемой функцией |
В программе-тренажере возможно использование только 2 функций прерывания типа 21: АH=7 и АН=8.
КОНТРОЛЬНЫЕ ВОПРОСЫ :
1. Каково назначение BIOS?
2. Дайте определение команде прерывания.
3. Перечислите все действия компьютера, получившего команду прерывания.
4. Какие функции работы с клавиатурой реализованы в прерывании типа 21?
5. Назовите типы прерываний системы BIOS.
Задание к СРС:
1. Подготовиться к ответу на контрольные вопросы.
2. Написать программу по заданию, полученному у преподавателя с использованием прерывания типа 21 для работы с клавиатурой.
СРС N 6
