Външни устройства на компютърния модел
Ако VU може да генерира заявка за прекъсване, тогава при създаването й му се присвоявавектор на прекъсване- десетично число. На различни VU трябва да бъдат присвоени различни вектори за прекъсване.
Софтуерният модел на учебния компютър е комплектован с комплект външни устройства, включващи:
на които по подразбиране са зададени параметрите, посочени в табл. 1.
Таблица 1. Параметри на външни устройства
Описаната версия на системата не предвижда възможност за свързване на няколко идентични устройства към системата.
Повечето външни устройства съдържат регистриcontrolCR иstatusSR и обикновено регистрите CR са само за запис, а SR са само за четене.
Регистърът CR съдържа флагове и полета, които определят режимите на работа на UU, а SR съдържа флагове, които отразяват текущото състояние на UU. SR флаговете се задават от хардуер, но се нулират от софтуер (или чрез външен сигнал). Полетата и флаговете на CR се задават и изчистват от софтуер, когато кодът на данните се записва в регистъра CR или чрез специални команди.
Контролер на клавиатурата
Клавиатурният контролер (фиг. 3) е модел на външно устройство, което получава ASCII кодове от клавиатурата на компютъра.
Знаците се поставят последователно вбуфера за знаци,чийто размер е зададен на 50 знака и се показва в прозореца на браузъра (Фигура 4).
Клавиатурният контролер включва три софтуерно достъпни регистъра:
o Е — флаг за разрешение за получаване на кодове в буфера;
o I - флаг за разрешаване на прекъсване;
o S - флаг за режим на въвеждане символ по знак.
o Err - флаг за грешка;
o Rd - флаг за готовност.
![]() |
Ориз. 3. Клавиатурен контролер

Ориз. 4. Прозорец на браузъра на контролера на клавиатурата
Флаговетена контролния регистър CRсе задават и изчистват софтуерно.
Флагът E, когато е зададен, позволява получаване на кодове в буфера. Когато E = O, контролерът игнорира натискане на клавиатурата, не се получават кодове в буфера. Флаг E няма ефект върху четенето на кодове от буфера.
Флагът I, когато е зададен, позволява на контролера да генерира заявка за прекъсване при определени условия. Когато 1 = 0, заявка за прекъсване не се генерира.
Флаг S = 1 задава така наречения,режим на въвеждане на символ по символ,в противен случай контролерът работи в нормален режим. Флагът S се задава и изчиства от софтуера, освен това S се изчиства, когато се натисне бутонътИзчистване на буфера впрозореца на контролера на клавиатурата.
Условията за генериране на заявка за прекъсване се определят, от една страна, от стойността на флага за разрешаване на прекъсване I, а от друга страна, от режима на работа на контролера. В режима на въвеждане на символ по знак се генерира заявка за прекъсване след въвеждане на всеки символ (разбира се, с I=1), в нормален режим заявката ще се генерира в края на набора от редове.
Можете да завършите въвеждането, като щракнете върху бутонаЗавършване на въвеждането в прозорецаКлавиатурен контролер (виж Фиг. 8.10). Това задава флага за готовност Rd (от английскиready)в регистъра за състояние SR. Флагът за грешка Err (от английскиerror)в същия случай се задава при опит за въвеждане на 51-ия знак в буфера. Въвеждането на 51-ия и всички следващи символи е блокирано.
Флагът Rd се нулира автоматично при четене от регистъра DR, флагът Err се нулира от софтуера. В допълнение, и двата флага се нулират, когато се натисне бутонътClear Buffer в прозорецаKeyboard Controller; едновременно с нулирането на флаговете, буферът се изчиства - целият буфер се запълва с кодове 00h иуказателите за запис и четене са зададени в началото на буфера.
Клавиатурният контролер интерпретира следните командни думи:
- xxxl0l — изчистване на буфера (действието на командата е еквивалентно на натискане на бутонаИзчистване на буфер);
- xxx 102 - нулиране на флага Err в регистъра SR;
- ххх10З - задайте флага S в регистъра CR;
- xxx 104 - нулиране на флага S в регистъра CR.
Дисплей
Дисплеят (фиг. 5) е модел на външно устройство, което изпълнява функциите на символен дисплей. Дисплеят може да показва знаци, определени от ASCII кодове, предоставени на неговия регистър с данни. Дисплеят включва:
• символен екран от 8 реда по 16 знака на ред;
• четири софтуерно достъпни регистъра:

Ориз. 5. Дисплей контролер
Регистър за управлениеCR е достъпен само чрез запис и съдържа два флага в 4-ия и 5-ия бит, съответно:
• Е — показване на флаг за разрешение; когато E = 0, записът в регистрите AR и DR е блокиран;
• ххх102 — изчистване на флага за грешка Err.

Ориз. 6. Покажете прозореца на браузъра на контролера
Блок на таймера
Блокът от таймери (фиг. 7) включва три канала от същия тип, всеки от които съдържа:
• петцифрен десетичен реверсивен брояч T, който получава като вход времеви марки (таймер);
• програмируем прескалер D;
• регистър за управление на таймера CTR;
• флаг за препълване на таймера FT.
Входовете на предразпределителя получават CLK времеви отпечатъци, общи за всички канали с период от 1 ms. Предварителните разпределители във всеки канал са програмирани независимо, така че таймерите могат да работят на различни честоти.
![]() |
Ориз. 7. Таймер блок
• Т (бит 5) — флаг за включване на таймера;
• EI (бит 4)—флаг за разрешаване на генериране на заявка за прекъсване при препълване на таймера;
• I/D (цифра 3) — посока на броене (увеличаване/намаление), ако I/D = О таймерът работи за събиране, ако I/D =1 — за изваждане;
•к(битове [1:2]) — коефициент на делене на прескалера (от 1 до 99).
Прозорецът на браузъра (фиг. 8) предоставя бутон за нулиране, натискането на който нулира до 0 всички регистри на блока на таймера, с изключение на CTR, които са настроени на 001000. По този начин и трите таймера се нулират, превключват в режим на нарастване, броенето спира, прекъсванията са деактивирани, флаговете за препълване се нулират и коефициентите на разделяне на прескалерите са зададени на 01.

Ориз. 8. Прозорец на браузъра на таймерния блок
• xхх100 — общо нулиране (еквивалентно на натискане на бутонаНулиране в прозореца на браузъра);
• xxxl0l — нулира флага за препълване на таймера FT1;
• ххх102 — нулиране на флага за препълване на таймера FT2;
• ххх10З — нулиране на флага за препълване на таймера FT3.
Тон генератор
Моделът на това просто външно устройство няма собствен браузър, той съдържа само два регистъра само за запис:
Подсистема за прекъсване
Обучаващият компютърен модел предвижда механизъм на векторни външни прекъсвания. Външни устройства генерират заявки за прекъсване, които се получават на входоветена контролера за прекъсване.Когато е свързано VU, способно да генерира заявка за прекъсване, му се присвоява номерът на входа на контролера за прекъсване - вектор на прекъсване, който приема стойност в диапазона 0-9.
Контролерът предава вектора, съответстващ на заявката, към процесора, който стартирарутинна услуга за прекъсване.
Всяко от възможните прекъсвания в системата трябва да отговаря на т.нар.обработчик на прекъсванее подпрограма, извикана при възникване на конкретно прекъсване.
Механизмът за прекъсване, внедрен в модела на учебния компютър, поддържатаблица с вектори на прекъсвания, която се създава в RAMот модела на операционната система(ако се използва) или директно от потребителя.
Процесорът започва обработка на прекъсване (ако е разрешено), като завършва текущата инструкция. Правейки това, той:
1. Получава вектор за прекъсване от контролера.
3. Нулира флага за разрешаване на прекъсване I на 0.
Не всяко събитие, което може да причини прекъсване, води до прекъсване на текущата програма. Процесорът включва софтуерно достъпен флаг за разрешаване на прекъсване I. Когато I = 0, процесорът не отговаря на заявки за прекъсване. След като процесорът се нулира, флагът I също се нулира и всички прекъсвания се забраняват. За да разрешите прекъсванията, трябва да изпълните командата ei (от английскиenable interrupt) в програмата.
По-горе беше отбелязано, че при превключване към манипулатора на прекъсвания, флагът I се нулира автоматично, в този случай е невъзможно да се прекъсне услугата на едно прекъсване от друго прекъсване. Командата iret възстановява стойността на флаговете, включително настройката I=1 отново, следователно прекъсванията отново са разрешени в основната програма.
Ако искате да активирате други прекъсвания в манипулатора на прекъсвания, просто изпълнете командата ei в него. Контролерът за прекъсване и процесорът на хардуерно ниво се опитват да стартират прекъсване, ако неговият манипулатор е започнал, но не е завършил работата си.
По този начин флагът I разрешава или забранява всички системни прекъсвания. Ако искашселективно разрешаване на подмножество от прекъсвания, наличните в софтуера флагове за разрешаване на прекъсвания се използват директно на външни устройства.
Като правило, всяко външно устройство, което може да предизвика прекъсване, съдържа в своите регистри бита на флага за разрешаване на прекъсване (вижте формата на регистрите CR и CTR на фиг. 9, 13), който по подразбиране е зададен на 0. Ако този флаг е оставен на нула, тогава на външното устройство е забранено да генерира заявка към контролера за прекъсване.
Затова в системите с инструкции на много компютри, включително и в нашия модел, има инструкции за извикване на прекъсвания - int n (в нашия модел n н ), където n е векторът на прекъсването. Процесорът, изпълнявайки инструкцията int n, извършва същите действия, както при обработката на прекъсване с вектора n.
Характерно е, че с помощта на инструкцията int n можете да извикате манипулатора на прекъсване, дори ако флагът за разрешаване на прекъсване I е изчистен.