Сервис клавиатуры BIOS - Int 16 h



ОТЧЕТ

По учебной практике

«Микропроцессорные системы»

Вариант №1

 

Выполнил Бабко Богдан Олегович ОКС 07 – 2

Руководитель Дворниченко Елена Александровна

 

 

Донецк

2010


СОДЕРЖАНИЕ

 

ВВЕДЕНИЕ

1 ОПЕРАЦИИ ВВОДА/ВЫВОДА В БАЗОВОЙ ВЕРСИИ DOS

1.1 Функции ввода с клавиатуры

1.2 Функции вывода на экран

1.3 Сервис клавиатуры BIOS-Int 16h

1.4 Описание алгоритмов вывода чисел

1.5 Задание

2 ГЕНЕРАЦИЯ ЗВУКОВЫХ СИГНАЛОВ В ПЭВМ

2.1 Таймер КР1810ВИ54

2.2 Программируемый периферийный интерфейс КР580ВВ55А

2.3 Генерация звука в IBM PC

2.4 Выполнение задержки

2.5 Область данных BIOS

2.6 Задание

3 ПРИНЦИП РАБОТЫ КЛАВИАТУРЫ

3.1 Таблица векторов прерываний

3.2 Маскирование прерываний

3.3 Изменение таблицы векторов прерываний

3.4 Задание

4 ПРИНЦИПЫ РАБОТЫ ВИДЕОСИСТЕМЫ ПЭВМ

4.1 Адресация и режимы работы адаптера CGA

4.2 Режим работы дисплея

4.3 Задание

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ

 


ВВЕДЕНИЕ

 

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

-управление технологическими процессами, включая автоматизированные контроль и диагностику технических средств;

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

Стремительное совершенствование технологии производства интегральных полупроводниковых компонентов, обеспечившее возможность создания высокоэкономичных цифровых устройств обработки и хранения информации, а также появление эффективных средств программирования оказывают все более существенное влияние не только на развитие техники измерений и управления, но и на подход к автоматизации вообще. Первые попытки применения цифровых устройств для автоматизации производственных процессов относятся к началу 60-х гг., когда были разработаны первые управляющие вычислительные машины. В 70-х гг. ЭВМ стала обычным элементом оборудования автоматизированных систем.

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

 


ОПЕРАЦИИ ВВОДА/ВЫВОДА В БАЗОВОЙ ВЕРСИИ DOS

 

Программное прерывание Int 21h – это набор функций, с помощью которых организуется операции ввода/вывода в базовой версии DOS.

 

Функции ввода с клавиатуры

 

аh=01h – Фильтрующий ввод с клавиатуры с ожиданием и эхом на экране.

Пример:

mov ah, 01

int 21h

Результат функции – в AL находится код символа из буфера клавиатуры.

При вводе функциональных клавиш (F1,…F12, PgUp и др.) необходимо 2 обращения к этой функции. При 1-м AL = 0, при 2-м AL = расширенный код ASCII. В процессе выполнения этой функции проверяется нажатие комбинаций клавиш Ctrl + Break, которая используется для прерывания работы программы, если она зацикливается. По Ctrl + Break можно снять программу, если она использует функции ввода/вывода, содержащие проверку на Ctrl + Break. Такие функции называют фильтрующими.

ah = 08h – Фильтрующий ввод символа с клавиатуры с ожиданием без эха.

Пример:

mov ah, 08h

int 21h

Результат функции – в AL код символа.

Отличается от предыдущей тем, что символ не отображается на экране.

ah = 07h – Не фильтрующий ввод символа с клавиатуры с ожиданием без эха.

Пример:

mov ah, 07h

int 21h

Результат функции – в AL код символа.

Отличается от предыдущей тем, что не реагирует на Ctrl + Break.

аh = 0Вh – Проверить статус ввода (фильтрующая).

Функция проверяет на наличия символа в буфере клавиатуры без извлечения его из буфера.

Пример:

Mov ah, 0Вh

Int 21h

Результат функции – AL = 00h, если буфер пуст, и AL=FFh, если есть символ в буфере клавиатуры.

Пример выхода из программы по нажатию клавиши ESC без ожидания нажатия клавиши.

mov ah, 0bh

int 21h

cmp al,0

jz m1

mov ah, 07h

int 21h

cmp al, 27

jne m1

mov ax, 4C00h

int 21h

m1: ;---Продолжение программы

ah=0Ch – Чтение с предварительной очистки буфера .

Пример:

mov ah, 0Ch

mov al, <номер функции 01h, 07h, 08h, 06h,или 0Ah>

int 21h

Чтобы программа не читала из буфера клавиатуры давно нажатую клавишу, данная функция очищает буфер клавиатуры, а затем выполняет функцию, номер которой указана в регистре al. Для функций 06h и 0Ah необходимо указать дополнительные параметры в регистре dl и dx. Реакция на Ctrl – Break определяется используемой функцией ввода.

ah=0Ah – Ввод строки в буфер ввода(фильтрующая).

Для ввода строки нужно подготовить блок параметров.

Пример:

 

BL_par label byte

Maxlen  db 7

Actlen             db ?

S            db 7 dup(?)

……………….

Mov ah, 0Ah

Lea dx, BL_par     ;адрес поля блока параметров

Int 21h

 

Результат функции – в поле S введённая строка, а в поле Actlen длинна введённой строки.

Функция ожидает ввода строки начиная с текущей позиции курсора. Пользователь может набрать на экране 6 символов максимум (т.е. Maxlen - 1), а при вводе следующего символа выдаётся предупреждающий звуковой сигнал и символ не вводится. Набор строки завершается нажатием клавиши Enter, до нажатия Enter с помощью Back Space строку можно отредактировать.

Например:

Если набранная строка – Строка  Enter

Тогда Actlen =6

 ‘С’ ‘Т’ ‘Р’ ‘О’ ‘К’ ‘А’ 0Dh(Код Enter)

S=

 

Если набрана строка – 123  Enter

Тогда Actlen = 3

 

‘1’ ‘2’ ‘3’ 0Dh(Код Enter)

S=

 

Если набранная строка – Строка -  Enter

Тогда Actlen = 0

0Dh X X X X X

 

S =

 

Функции вывода на экран

 

Ah=02h – Вывод символа на дисплей (фильтрующая)

Пример

mov ah, 02

mov dl, 35h или dl, ‘5’

int 21h

В регистр dl помещается ASCII-код символа или указывается непосредственно сам символ в кавычках. Функция выводит символ на экран в текущую позицию курсора и перемещает курсор вправо на одну позицию. На символ Back Space перемещает курсор влево на одну позицию. Функция реагирует на вывод управляющих кодов 07h(звонок), 08h(Back Space), 09h(Tab), 0Ah(lf), 0Dh(cr).

ah=09h – Вывод строки.

Пример:

 

Msg db 13,10эPress and key…$’

mov ah, 09h

lea dx, Msg

int 21h

 

В регистр dx помещается адрес выводимой строки, которая должна быть предварительно описана в сегменте данных, при этом в конце строки обязательно нужно указать символ $ (конец строки). 13 и 10 – это ASCII-коды символов возврата каретки и перевода строки, которые указываются для вывода строки в первую позицию новой строки экрана. Действие функции полностью аналогично функции 02h, но выводится не один символ, а целая строка.

 

Сервис клавиатуры BIOS - Int 16 h

 

Клавиши Alt, Ctrl левый и правый Shift называются клавишами сдвига. При нажатии такой клавиши соответствующий бит байта состояния клавиатуры устанавливается в 1, а при отпускании сбрасывается в 0. Клавиши Insert, Caps Lock, Scroll Lock, Num Lock называются клавишами режимов. При первом нажатии такой клавиши в соответствующий бит байта состояния клавиатуры записывается 1 (Режим установлен), при следующем – 0 и т.д. Нажатие клавиши сдвига или режима не изменяет содержимого буфера клавиатуры. Они обеспечивают расширение возможности управления ЭВМ в различных программных системах.

Назначение бит регистра флагов клавиатуры следующее:

 

7           6             5                   4        3          2            1                      0

Insert Caps Lock Num Lock Scroll Lock Alt Ctrl Shift левый Shift правый

Клавиши режимов                              Состояния клавиш сдвигов

 

Для чтения данного регистра флагов используется функция 02h прерывания BIOS Int 16h.

ah=02h – Читать байт флагов клавиатуры (статус флагов клавиатуры).

Пример:

Mov ah, 02h

int 16h

Результат функции – в AL байт флагов клавиатуры.

Пример завершения циклической программы при нажатой клавише Ctrl:

c:…………………. ; основная часть программы

 

Mov ah,02h                

Int 16h

And al, 00000100b ; выделение флага Сtrl

Jz c

Mov ax, 4c00h ; выход из программы

Int 21h

 

При нажатии клавиши Ctrl взводится бит 2 в статусе клавиатуры и пока клавиша нажата остается в состоянии «1». При отпускании клавиши производится сброс флага Ctrl. Остальные флаги работают аналогично.

Значении байтов флагов клавиатуры хранится по адресу 0040:0017h в области данный BIOS (0040:0000h – 0040:00FFh). Поэтому проверку флага клавиатуры можно осуществить прямым обращением к ячейке 0040:0017h.

Тот же пример без использования int 16h

 

MovES, 40h

MovSI, 17

C:…………………. ; основная часть программы

MovAL, ES:[SI]; результат этой команды такой же, как и у функции ah=02h int 16h

AndAL, 04h

Jzc

Movax, 4c00h; выход из программы

Int21h

 


Дата добавления: 2020-01-07; просмотров: 309; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!