Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы СПО-new.docx
Скачиваний:
7
Добавлен:
14.11.2019
Размер:
239.58 Кб
Скачать

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

  1. Что такое вектор прерывания?

  2. Каким образом осуществляется обслуживание прерывания?

  3. Каким образом используется стек при обслуживании прерывания?

  4. Средства TP7.0, позволяющие использовать стандартные функции MSDOS.

  5. Последовательность действий для задания собственного прерывания.

  6. Расширение существующего прерывания.

  7. Что такое таблица векторов прерываний ?

  8. Какие внешние прерывания МП 8086 вы знаете ?

  9. Какие внутренние прерывания МП 8086 вы знаете ?

  10. Что такое программируемый контроллер прерываний ?

  11. Какие и сколько аппаратных прерываний используется в IBM PC ?

Лабораторная работа № 2

Управление клавиатурой и ввод символьной информации в MS-DOS

Продолжительность работы – 4 часа.

Цель работы: знакомство с программно-аппаратными средствами ввода символьной информации с клавиатуры IBM PC.

Используемое оборудование: любой IBM РС совместимый компьютер.

Используемое программное обеспечение: операционная система MSDOS версии 3.5 и выше, система программирования Turbo Pascal 7.0.

Подготовка к работе

Изучить по конспекту лекций и приведенной ниже литературе, следующие вопросы:

  • скан-коды клавиш в IBM PC;

  • преобразование скан-кодов в коды символов: ASCII коды и расширенные коды;

  • функции аппаратного прерывания клавиатуры 09Н;

  • буфер клавиатуры;

  • клавиши статуса и слово состояния клавиатуры;

  • расширение стандартного прерывания клавиатуры 09Н.

Программа работы

  1. Составить программу на языке Pascal, которая должна генерировать меню, соответствующее п.п.2 – 5 данной лабораторной работы.

  2. Составить фрагмент программы, которая считывает скан-коды нажатия и отжатия заданной клавиши (табл. 7) из порта контроллера клавиатуры.

  3. Составить фрагмент программы, которая выводит на экран содержимое указателей буфера клавиатуры до и после нажатия заданной клавиши (табл. 7), а также ASCII код нажатой клавиши.

  4. Составить фрагмент программы, которая выводит на экран состояние клавиш статуса клавиатуры Shift, CapsLock и NumLock при нажатии на клавиши, указанные в табл. 8.

Примечание: если в приведенной таблице в одном задании встречаются одинаковые символы, например ‘A’,’A’ или ‘1’,’1’ подразумевается, что они должны набираться соответственно на латинском/русском языке или на основной/дополнительной клавиатуре.

  1. Создайте свою подпрограмму прерывания от клавиатуры, которая будет являться расширением стандартного прерывания BIOS 09H. Ваша подпрограмма должна выполнять следующую последовательность действий:

  • вызов процедуры ScanCode_Read модуля KeyBoard;

  • вызов стандартного прерывания клавиатуры, вектор которого вы должны обменять с вектором прерывания, заданным в табл. 3;

  • вызов процедуры Status_Print модуля KeyBoard;

  • вызов процедуры Buffer_Print модуля KeyBoard.

  1. Запустить программу, разработанную в предыдущем пункте, и выполнить последовательное нажатие клавиш, соответствующих символам в табл. 8. Зафиксировать содержимое буфера клавиатуры, слова состояния клавиатуры, указателей головы и хвоста буфера после ввода каждого символа. В основной программе ограничить число нажатий на клавиши – не более 7 раз (по числу заданных символов).

  2. Повторить п.6, увеличив число нажатий до 20 раз. Запустить программу и нажать какую-либо клавишу указанное число раз. Объяснить происходящее.

  3. Сделайте выводы и оформите отчет по лабораторной работе.

табл. 7

Номер варианта

1

2

3

4

5

6

7

8

Клавиша

A

T

7

F1

Ctrl

Enter

C

Tab

Скан-код клавиши

56

20

8

59

29

28

71

15

ASCII код клавиши

65

84

55

0

0

13

67

9

табл. 8

вар.

1

2

3

4

5

6

7

Набор символов

A a a A 5%

F1 Tab

2 » @ 3#№

BackSpace

6 ^ 4 $ 6 4

Esc

F10

, < Б б / ?

Y y Н н \ |

Enter

Z я ~ ` + = +

* * ; : ж Ж

Tab