Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Программирование работы с клавиатурой

Читайте также:
  1. I. Категория: научные работы
  2. I. Общая характеристика работы
  3. I. Схема работы для организации семинарского занятия
  4. II. ВИДЫ САМОСТОЯТЕЛЬНОЙ РАБОТЫ ОБУЧАЮЩИХСЯ
  5. II. Выполнение работы
  6. II. Порядок формирования экспертных групп, организация экспертизы заявленных на Конкурс проектов и регламент работы Конкурсной комиссии
  7. III. Процедура защиты выпускной квалификационной работы в Государственной аттестационной комиссии

При программировании работы с клавиатурой могут быть использованы прерывания 16Н BIOS и прерывания 21Н (АН= 1, б, 7, 8, А, В, С) DOS.

Прерывание 16Н BIOS предусматривает достаточно простые операции обмена данными с клавиатурой, полезные при написании программ, выполняемых независи­мо от операционной системы DOS. Так, при АН=0 и 1 считываются из буфера кла­виатуры scan-код клавиш в регистр АН и ASCII-код клавиш в регистр AL; при АН=2 в AL возвращается байт состояния клавиатуры — состояние управляющих клавиш: Shift, Ctrl, Alt, Scroll Lock, Mum Lock и Insert; при АН=3 — устанавливаются режимы ра­боты клавиатуры в IBM PCjr.

Ввод с клавиатуры по прерыванию 21Н DOS предполагает:

1. Чтение символа с клавиатуры (с ожиданием ввода) и отображением символа на экране дисплея: АН=1 или АН=6 и DL=OFFH; то же, но без отображения символа на экране дисплея: АН=7 или АН=8. Считанный символ (ASCII-код) — в регистре AL, (scan-код не формируется). Если к моменту запроса на чтение символа клавиша еще не нажата, то управление прерванной программе не будет возвращено до тех пор, пока клавиша не будет нажата. Если код клавиши расширенный (клавиши F1-F10, Alt, Ctrl и т. д.), то необходимо повторное чтение. Пример фрагмента программы чтения символа:

mov АН, 1

Int 21H

2. Чтение строки символов с буферизацией: АН=ОАН. Для инициализации такого
чтения необходимо:

- задать буфер, указав в нем число символов строки, подлежащих вводу, директивой: buf DB n.0,0……..0,0 (buf — имя поля, которое, в принципе, может быть и любым другим); количество нулей в директиве должно быть на два больше, чем n (n — максимальное количество вводимых символов), на место следующего «О» будет после ввода записано количество фактически введен­ных символов, на место последующих «О» будут введены ASCII-коды сим­волов строки и еще один «О» для кода клавиши Enter — 13;

- занести в регистр DS: DX адрес буфера.

При выполнении рассматриваемого прерывания управление прерванной (ос­новной) программе возвращено не будет до тех пор, пока не нажаты все клави­ши и клавиша Enter. При нажатии каждой очередной клавиши ее код записыва­ется в буфер клавиатуры и отображается на дисплее, но из буфера поступит в основную программу (в поле buf) только после нажатия клавиши Enter. Если до Enter клавиш нажато больше, чем указано в буфере, то раздастся звонок и лиш­ние символы восприняты не будут.

Пример фрагмента программы чтения строки символов:

buf DB 9,0,0.0,0.0,0,0,0,0,0,0

mov АН, ОАН

mov DX, offset buf

int 21H

В поле буфера будут записаны ASCII-коды символов строки, и если в програм­ме предусмотрены операции над двоичными кодами символов (цифр) строки, то необходимо преобразовать ASCII-коды в двоичный код числа, используя, например, процедуру STR2BIN.

3. Чтение состояния клавиатуры: АН=ОВН. В регистр AL записывается 0, если буфер
клавиатуры имеет хотя бы один символ.

4. Очистка буфера клавиатуры и вызов функции: АН=ОСН. Обнуляется буфер клавиатуры и инициируется выполнение одной из 5 функций прерывания 21Н; в этом случае номер вызываемой функции должен быть записан не в регистре АН, а в регистре AL (AL-1,6,7,8 или ОА).


5. Ввод с клавиатуры текстового файла: AH=3FH. Используются функции расширенного управления файлами MS-DOS по файловому указателю. Пример фрагмента программы для ввода с клавиатуры текстового файла Text, содержащего 50 байт:

text db 50 dupC ');задание поля памяти для ввода

mov АН. 3FH

mov ВХ, 0 указание устройства ввода

mov CX. 50 указание числа вводимых байтов

mov DX. Offset text:указание начального адреса

;поля памяти для ввода

Int 21H


Дата добавления: 2015-12-07; просмотров: 76 | Нарушение авторских прав



mybiblioteka.su - 2015-2024 год. (0.007 сек.)