Главная -> Книги

(0) (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20) (21) (22) (23) (24) (25) (26) (27) (28) (29) (30) (31) (32) (33) (34) (35) (36) (37) (38) (39) (40) (41) (42) (43) (44) (45) (46) (47) (48) (49) (50) (51) (52) (53) (54) ( 55 ) (56) (57) (58) (59) (60) (61) (62) (63) (64) (65) (66) (67) (68) (69) (70) (71) (72) (73) (74) (75) (76) (77) (78) (79) (80) (81) (82) (83) (84) (85) (86) (87) (88) (89) (90) (91) (92) (93) (94) (95) (96) (97) (98) (99) (100) (101) (102) (103) (104) (105) (106) (107) (108) (109) (110) (111) (112) (113) (114) (115) (116) (117) (118) (119) (120) (121) (122) (123) (124) (55)

бите байта состояния из регистра с адресом CSR, имеет следующий вид:

Метка Код Операнд Комментарий

WAIT:

TSTB BPL

CSR WAIT

Проверка бита готовности Зацикливание, если устройство не готово

Команда TSTB проверки байта устанавливает признак N=1, когда бит 7 содержит единицу. Если признак N=0, команда BPL (перейти, если плюс) передает управление команде с меткой WAIT, чго й обеспечивает зацикливание. Следующая за циклом ожидания команда MOV осуществляет непосредственную передачу данных.

В микропроцессоре КР580 аналогичные действия выполняет следующий фрагмент:

Метка Код Операнд Комментарий

WAIT:

CSR A

WAIT

Ввод состояния Установка признаков Зацикливание до готовности

Предполагается, что CSR - 8-битный адрес регистра управления и состояния, а флажок READY находится в старщем бите регистра. Следующая за циклом ожидания команда IN может произвести ввод данных из регистра ввода с другим адресом DATA, а для вывода данных необходимо сначала передать их в аккумулятор и затем вывести с помощью команды OUT.

Чтобы проиллюстрировать некоторые особенности программирования ВВ, приведем простую программу для процессоров СМ ввода данных с перфоленточного считывателя. Программная модель считывателя приведена на рис. 5-3. Виты регистра управления и состояния имеют следующий смысл:

RDR ENB (разрещение считывания) - единичное состояние инициирует считывание с перфоленты одного символа;

INT ENB (разрещение прерываний) -единичное состояние разрешает прерывание от считывателя по флажку READY или ERROR;

READY (готовность) - флажок готовности, фиксирующий состоянием READY= 1 наличие считанного символа в регистре данных;



BUSY (занятостьУ - флажок занятости, идентифицирующий состоянием BUSY= 1 механическое движение перфоленты;

ERROR (ошибка) - флажок ошибки, сигнализирующий условием ERR0R=1 неправильное считывание с перфоленты.

Вначале инициируется считывание символа посредством установки бита RDR ENB. Это действие вызывает установку бита BUSY, сброс бита READY и считывание символа в регистр данных. Когда символ загружается в регистр данных, устанавливается бит READY, а бит RDR ENB сбрасывается. Приводимая ниже программа вводит восемь символов в область памяти с начальным адресом AREA= = 17400.

Метка

Операнд

Комментарий

AREA START:

READ: WAIT:

READER:

MOV INC

TSTB

MOVB INC

.WORD

.END

17 400 17 744

READER, RO

#0, Rl (RO)

(RO) WAIT

2(R0), AREA (Rl) Rl

#10, Rl READ 177 560

START

Начальный адрес буфера данных

Начало программы

Адрес регистра управления и состояния

Смещение в регистре R1

Инициирование считывания символа

Считыватель готов?

Нет, цикл ожидания

Ввод символа

Продвижение смещения

Введено восемь символов?

Нет, повторение ввода

Адрес регистра управления и состояния

Конец программы

Основной недостаток программного ВВ связан с непроизводительными потерями времени процессора в циклах ожидания. Например, при выводе данных на перфоленту (скорость до 150 символов/с) или на пишущую машинку



Регистр управления и состояния 15 8 7

\шор busy/ reaby/ Sintenb шт/

15 8 7 О

Адрес 177560

Адрес 177562

Регистр ВВода Занных Рис. 5-3. Программная модель перфоленточного считывателя

(скорость ДО 25 символов/с) практически все время процессора приходится на бесполезные циклы ожидания, в кото, рых он не выполняет никакой полезной работы. К достоинствам программного ВВ относят простоту его реализации, не требующей дополнительных аппаратных средств.

5-3. ВВОД-ВЫВОД В РЕЖИМЕ ПРЕРЫВАНИЙ

При организации в ЭВМ системы (или подсистемы) прерываний непроизводительные потери времени процессора в циклах ожидания резко сокращаются.

Последовательность событий при прерываниях. Каждое периферийное устройство может посылать в процессор сигнал INT запроса прерывания или запроса на обслуживание, когда оно готово к операциям ВВ, т. е. требует немедленной реакции процессора. По существу, этот сигнал представляет собой выходной сигнал триггера, фиксирующего флажок готовности READY. Сигнал INT появляется в произвольные моменты времени, асинхронно по отнощению к действиям процессора, и управлять его появлением программа не может. Следовательно, заранее неизвестно, в какой точке программы и какие периферийные устройства инициируют прерывания, поэтому непосредственно в программе кбманды ВВ использовать нельзя. Остается одно: реагируя на сигнал ШТ, процессор должен прервать, т. е. временно приостановить, текущую программу, идентифицировать прерывающее устройство, перейти к подпрограмме обслуживания прерываний работы этого устройства, а после ее заверщения возобновить выполнение прерванной программы. Подпрограмме обслуживания потребуются внутренние регистры процессора: аккумулятор, программный счетчик, некоторые РОН, и их текущее содержимое будет модифицировано. Но прерванная программа должна



(0) (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20) (21) (22) (23) (24) (25) (26) (27) (28) (29) (30) (31) (32) (33) (34) (35) (36) (37) (38) (39) (40) (41) (42) (43) (44) (45) (46) (47) (48) (49) (50) (51) (52) (53) (54) ( 55 ) (56) (57) (58) (59) (60) (61) (62) (63) (64) (65) (66) (67) (68) (69) (70) (71) (72) (73) (74) (75) (76) (77) (78) (79) (80) (81) (82) (83) (84) (85) (86) (87) (88) (89) (90) (91) (92) (93) (94) (95) (96) (97) (98) (99) (100) (101) (102) (103) (104) (105) (106) (107) (108) (109) (110) (111) (112) (113) (114) (115) (116) (117) (118) (119) (120) (121) (122) (123) (124)