Задание к работе
Программа для обработки прерывания от клавиатуры.
Подключите внешние устройства: клавиатуру и дисплей.
Адрес обработчика прерывания от клавиатуры (значение метки ОбрПр) необходимо записать в ячейку 100, так как вектор клавиатуры по умолчанию равен 0. Если компилировать приведённую программу с нулевого адреса подряд, то адрес команды IN 0 (начало обработчика) равен 8. Поэтому число 8 следует перед запуском программы записать в ячейку 100.
Напишите программу для обработки прерывания пустого цикла при вводе символа с клавиатуры и передаче этого символа на дисплей.
Таблица 1. Программа прерывания пустого цикла при вводе символа с клавиатуры и передаче этого символа на дисплей.
-
Метка
Команда
Описание
RD #11
; число 11 – в аккумулятор;
OUT 1
; включить клавиатуру и разрешить прерывание от неё;
OUT 11
; включить дисплей в режиме автоинкремента адреса;
RD #103
; передаём в контроллер код команды
OUT 1
; Установить S в «1» (режим посимвольного ввода);
EI
; установить FI в «1» (разрешить прерывания);
M1:
NOP
; пустой
JMP M1
; цикл;
IN 0
; считывание введённого символа из буфера в аккумулятор;
OUT 10
; передача ASCII-кода на символьный дисплей
IRET
; возврат из прерывания.
Вывод введённых символов с клавиатуры на дисплей по опросу устройства:
Заполните таблицу:
-
Метка
Команда
Описание
RD #10
OUT 1
OUT 11
RD #103
OUT 1
M1:
IN 2
JZ M1
IN 0
OUT 10
JMP M1
Выполните программу, что выполняет данная программа?
Самостоятельно, напишите программу для реализации алгоритма, с применением прерывания и без применения прерывания:
Таблица 2. Задание на тему Подсистема прерываний
Вариант № |
|
0 |
Напишите программу для ввода только вводимых цифр, вводимых с клавиатуры в память, начиная с ячейки памяти с номером 50 |
1 |
Напишите программу для ввода слов, вводимых с клавиатуры в память, начиная с ячейки памяти с номером 30 |
2 |
Выбирать из потока АSСII-кодов только цифры и выводить их на дисплей |
3 |
Выбирать из потока АSСII-кодов только символов латинского алфавита и выводить их на дисплей |
4 |
Напишите программу для вывода на экран вводимых символов >, <, = |
5 |
Выбирать из потока АSСII-кодов только знаки +, -, *, / и выводить их на дисплей |
6 |
Выбирать из потока АSСII-кодов только и выводить их на дисплей |
7 |
Напишите программу для ввода только символов русского алфавита, вводимых с клавиатуры в память, начиная с ячейки памяти с номером 30 |
8 |
Выбирать из потока АSСII-кодов только символов русского алфавита и выводить их на дисплей |
9 |
Напишите программу для ввода только символов латинского алфавита, вводимых с клавиатуры в память, начиная с ячейки памяти с номером 30 |
