Директиви мікроасемблера для роботи з пристроями введення-виведення

Для роботи з ПВВ в мікроасемблері передбачено дві директиви.

ACCEPT DEV – директива задання параметрів ПВВ

Загальний вигляд директиви:

ACCEPT DEV[номер ПВВ]: <тип пристрою>, <адреса РС>,

<адреса РД>, <затримка формування RDD>,

<затримка встановлення біта готовності>

де <тип пристрою> може бути IN – пристрій введення інформації в аккумулятор, або OUT – пристрій виведення інформації з акумулятора (один і той самий фізичний пристрій може в один момент часу бути пристроєм введення, а в інший – пристроєм виведення);

<затримка формування RDD> - величина в тактах, яка задає швидкодію ПВВ. Зовнішній пристрій формує сигнал RDD=0 (ReaDy Device – готовність пристрою), якщо ПВВ закінчив цикл й готовий до обміну;

<затримка встановлення біта готовності> - величина в тактах, що є інтервалом часу, через який після звертання до РД в ньому можуть поновлюватись дані.

Ці параметри дозволяють моделювати роботу ПВВ з різними часовими затримками.

Приклад директиви:

accept dev[3]: in, \ пристрій введення в процесор (акумулятор)

30h, \ адреса регістра стану

32h, \ адреса регістра даних

3, \ затримка формування сигналу RDD

2 \ затримка встановлення біта готовності в РС

\ після звертання до РД




Рис. 19. Зв‘язок пристроїв введення-виведення з процесором

PC

Рис. 20. Структура регістра стану


 
 

Рис. 21. Структура пристрою введення-виведення

ACCEPT DEV_BUF – директива задання значень у буфері даних ПВВ

Для моделювання роботи з ПВВ вважатимемо, що ПВВ має внутрішній буфер ємністю 16 слів, звідки можна почергово зчитувати слова під час введення інформації в процесор або куди можна почергово записувати слова під час виведення інформації з процесора.

Приклад директиви:

accept dev_buf[2]: 1234h, 5678h, 9abch, 0deffh \ ці дані вводяться

\ в процесор почергово при кожному звертанні до РД даного

\ пристрою введення

Задача. Організувати введення слова із ПВВ 2 в акумулятор процесора.

Розв‘язування:

accept dev[2]: in, 30h, 32h, 3, 2

accept dev_buf[2]: 1234h, 5678h \ дані, які будуть вводитися по черзі в

\ акумулятор з РД

\ читання РС з простору пам‘яті

m2 ld_ha \ RgA[19…16]:=0000

ld_la 30h \ RgA[15…0]:=30h – адреса РС

m1 { cjp rdm, m1; r; add r0, z, bus_d; } \ R0:= (PC)

{ cjp zo, m2; and r0, r0, 8000h; } \ повторити читання РС, якщо біт

\ готовності дорівнює 0

\ читання даних

{ cjp rdd; i; add r15, z, bus_d; } \ R15:=1234h


6. ОБРОБКА ПРІОРИТЕТНИХ ПЕРЕРИВАНЬ


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: