Автор работы: Пользователь скрыл имя, 15 Января 2013 в 08:06, лабораторная работа
Целью этой лабораторной работы является изучение способов организации взаимодействия процессора и внешних устройств (ВУ) в составе ЭВМ.
Выше отмечалось, что связь процессора и ВУ может осуществляться в синхронном или асинхронном режиме. Синхронный режим используется для ВУ, всегда готовых к обмену. В нашей модели такими ВУ являются дисплей и тоногенератор — процессор может обращаться к этим ВУ, не анализируя их состояние (правда дисплей блокирует прием данных после ввода 128 символов, формируя флаг ошибки).
Лабораторная работа №2
Программирование внешних устройств
Целью этой лабораторной работы является изучение способов организации взаимодействия процессора и внешних устройств (ВУ) в составе ЭВМ.
Выше отмечалось, что связь процессора и ВУ может осуществляться в синхронном или асинхронном режиме. Синхронный режим используется для ВУ, всегда готовых к обмену. В нашей модели такими ВУ являются дисплей и тоногенератор — процессор может обращаться к этим ВУ, не анализируя их состояние (правда дисплей блокирует прием данных после ввода 128 символов, формируя флаг ошибки).
Асинхронный обмен предполагает анализ процессором состояния ВУ, которое определяет готовность ВУ выдать или принять данные или факт осуществления некоторого события, контролируемого системой. К таким устройствам в нашей модели можно отнести клавиатуру и блок таймеров.
Анализ состояния ВУ может осуществляться процессором двумя способами:
- в программно-управляемом режиме;
- в режиме прерывания.
В первом случае предполагается
программное обращение процессо
Во втором случае при возникновении контролируемого события ВУ формирует процессору запрос на прерывание программы, по которому процессор и осуществляет связь с ВУ.
Задание
Свой вариант задания (табл. 1) требуется выполнить двумя способами — сначала в режиме программного контроля, далее модифицировать программу таким образом, чтобы события обрабатывались в режиме прерывания программы. Поскольку "фоновая" (основная) задача для этого случая в заданиях отсутствует, роль ее может сыграть "пустой цикл":
M: NOP
NOP
JMP M
Таблица 1. Варианты задания
№ варианта |
Задание |
Используемые ВУ |
Пояснения |
1 |
Вывод символов на дисплей |
Клавиатура, дисплей |
Выводить на дисплей
каждый введенный с клавиатуры символ,
пока не будет введена последовательнос |
2 |
Вывод на дисплей трех текстов, хранящихся в памяти, с задержкой |
Дисплей, таймер |
Первый текст выводится сразу при запуске программы, второй – через 10 с, третий – через 15 с после второго |
3 |
Вывод на дисплей одного из трех текстовых сообщений, в зависимости от нажатой клавиши |
Клавиатура, дисплей |
<1> - вывод на дисплей первого текстового сообщения, <2> - второго, <3> - третьего, остальные символы - нет реакции |
4 |
Выбирать из потока ASCII-кодов только цифры и выводить их на дисплей |
Клавиатура, дисплей, тоногенератор |
Вывод каждой цифры сопровождается коротким звуковым сигналом |
5 |
Выводить на дисплей каждый введенный с клавиатуры символ, причем цифру выводить "в двух экземплярах'' |
Клавиатура, дисплей, тоногенератор |
Вывод каждой цифры сопровождается троекратным звуковым сигналом |
6 |
Программа ввода символов с клавиатуры с выводом на дисплей |
Клавиатура, дисплей, таймер |
Через каждые 10 секунд выводить на дисплей то, что есть в буфере клавиатуры, после этого буфер очищать. |
7 |
Вывод на дисплей цифр по таймеру |
Дисплей, таймер |
Через каждую секунду добавлять в первую строку дисплея цифру 1, через каждые 2 секунды – во вторую строку дисплея цифру 2, через каждые 3 секунды в третью строку дисплея цифру 3. |
8 |
Вывод кодов символов на дисплей |
Клавиатура, дисплей, тоногенератор |
Выводить в центр дисплея код нажатой на клавиатуре клавиши. Вывод каждой цифры сопровождается коротким звуковым сигналом |
9 |
Вывод цифр на дисплей |
Клавиатура, дисплей, тоногенератор |
На клавиатуре набираются цифры. Цифры 0, 4, 8 выводить в левый верхний угол дисплея, цифры 1, 5, 9 выводить в правый верхний угол дисплея, цифры 2, 6 выводить в левый нижний угол дисплея, цифры 3, 7 выводить в правый нижний угол дисплея. Нажатия остальных клавиш игнорируются. Вывод каждой цифры сопровождается троекратным звуковым сигналом |
10 |
Вывод на дисплей только русских букв |
Клавиатура, дисплей |
Выводить на дисплей только русские буквы, набранные на клавиатуре, остальные символы не выводить |
11 |
Вывод чисел на дисплей |
Дисплей, таймер |
В центр дисплея выводить последовательно числа от 0 до 60 через каждые 0,5 секунд. |
12 |
Вывод на дисплей средней скорости нажатия клавиш на клавиатуре |
Клавиатура, дисплей, таймер |
После каждого нажатия клавиши на клавиатуре выводить на дисплей среднюю скорость нажатия клавиш в целых числах. |
13 |
Вывод чисел на дисплей |
Дисплей, таймер |
Через 1 секунду после запуска программы вывести в центр дисплея цифру 1, еще через 2 секунды цифру 2, через 3 секунды после этого цифру 3, и т.д. до числа 20. |
14 |
Определить промежуток времени между двумя последовательными нажатиями клавиш |
Клавиатура, таймер, дисплей |
Выводить на дисплей промежуток времени в секундах между двумя нажатиями клавиш. Предусмотреть возможность вывода двузначных чисел. |
15 |
Вывод на дисплей |
Дисплей, клавиатура |
На клавиатуре набирать цифры от 1 до 9. В соответствии с цифрой выводить в центр дисплея месяц: для цифры 1 – «январь», для цифры 2 – «февраль» и т.д |
16 |
Ввод пятиразрядных чисел в ячейки ОЗУ |
Клавиатура |
Программа должна обеспечить ввод последовательности ASCII-кодов десятичных цифр (не длиннее пяти), перекодировку в "8421", упаковку в десятичное число (первый введенный символ - старшая цифра) и размещение в ячейке ОЗУ. ASCII-коды не-цифр игнорировать |
17 |
Программа ввода символов с клавиатуры с выводом на дисплей |
Клавиатура, дисплей, таймер |
Очистка буфера клавиатуры после ввода 50 символов или каждые 10 с. |
18 |
Селективный ввод символов с клавиатуры |
Клавиатура, дисплей |
Все русские буквы, встречающиеся в строке ввода - в верхнюю часть экрана дисплея (строки 1 - 4), все цифры - в нижнюю часть экрана (строки 5 – 8), остальные символы не выводить |
19 |
Вывод содержимого заданного участка памяти на дисплей посимвольно с заданным промежутком времени между выводами символов |
Дисплей, таймер |
Остаток от деления на 256 трех младших разрядов ячейки памяти рассматривается как ASCII - код символа. Начальный адрес памяти, длина массива вывода и промежуток времени - параметры подпрограммы. |
20 |
Выводить на дисплей каждый введенный с клавиатуры символ, причем заглавную русскую букву выводить "в двух экземплярах" |
Клавиатура, дисплей, таймер |
Очистка буфера клавиатуры после ввода 48 символов, очистка экрана каждые 15с |
21 |
Вывод на дисплей содержимого группы ячеек памяти в числовой форме (адрес и длина группы -параметры подпрограммы) |
Дисплей, таймер |
Содержимое ячейки распаковывается (с учетом знака), каждая цифра преобразуется в соответствующий ASCII-код и выдается на дисплей. При переходе к выводу содержимого очередной ячейки формируется задержка 10 с |