Команды

  • 09 янв. 2011 г.
  • 1202 Слова
Команди вводу-виводу
Жодна інша група команд не розрізняється настільки сильно в різних машинах, як команди вводу-виводу. В сучасних персональних комп'ютерах використовуються три різні схеми вводу-виводу:
1. Програмований ввід-вивід з активним чеканням.
2. Ввід-вивід з керуванням по перериваннях.
3. Ввід-вивід із прямим доступом до пам'яті.
Ми розглянемо кожну з цих схем по черзі.Найпростішим методом вводу-виводу є програмований ввід-вивід, що часто використовується в дешевих мікропроцесорах, наприклад у вбудованих системах або у таких системах, що повинні швидко реагувати на зовнішні зміни (це системи, що працюють у режимі реального часу). Ці процесори звичайно мають одну вхідну й одну вихідну команди. Кожна з цих команд вибирає один із пристроїв вводу-виводу. Між фіксованим регістром упроцесорі й обраним пристроєм вводу-виводу передається один символ. Процесор повинен виконувати визначену послідовність команд при кожному зчитуванні і записі символу.
Як приклад даного методу розглянемо термінал з чотирма 1-байтними регістрами, як показано на мал. 7.1. Два регістри використовуються для вводу: регістр стану пристрою і регістр даних. Два регістри використовуються для виводу: теж регістрстану пристрою і регістр даних. Кожний з них має унікальну адресу. Якщо використовується ввід-вивід з розподілом пам'яті, усі 4 регістри є частиною адресного простору, і будуть зчитуватися і записуватися за допомогою звичайних команд. У противному випадку для читання і запису регістрів використовуються спеціальні команди вводу-виводу, наприклад IN і OUT. В обох випадках ввід-вивід здійснюєтьсяшляхом передачі даних та інформації про стан пристрою між центральним процесором і цими регістрами.
Регістр стану клавіатури містить 2 біти, що використовуються, і 6 бітів, що не використовуються. Апаратне забезпечення встановлює самий лівий біт на 1 усякий раз, коли з'являється символ. Якщо програмне забезпечення раніше установило на 1 біт 6, то відбувається переривання. У противному випадку перериванняне відбувається. При програмованому вводі-виводі для одержання вхідних даних центральний процесор звичайно знаходиться в циклі, періодично зчитуючи регістр стану клавіатури, поки біт 7 не прийме значення 1. Коли це відбувається, програмне забезпечення зчитує буферний регістр клавіатури, щоб одержати символ. Зчитування регістра даних викликає установку біта CHARACTER AVAILABLE (наявності символу) на0.

Вивід здійснюється подібним чином. Щоб написати символ на екрані, програмне забезпечення спочатку зчитує регістр стану дисплея, щоб довідатися, чи встановлений біт READY (біт готовності) на 1. Якщо він не встановлений, програмне забезпечення проходить цикл знову і знову доти, поки даний біт не прийме значення 1. Це значить, що пристрій готовий прийняти символ. Як тільки термінал приходитьу стан готовності, програмне забезпечення записує символ у буферний регістр дисплея, що переносить символ на екран і дає сигнал пристрою установити біт готовності в регістрі стану дисплея на 0. Коли символ уже відображений, а термінал готовий до обробки наступного символу, біт READY знову встановлюється на 1 контролером.
Як приклад програмованого вводу-виводу розглянемо процедуру, написану на Java(листінг 7.1). Ця процедура викликається з двома параметрами: масивом символів, який потрібно вивести, і кількістю символів, що присутні в масиві (до 1 ДО). Тіло процедури являє собою цикл, що виводить по одному символу. Спочатку центральний процесор повинен почекати, поки пристрій буде готов, і тільки після цього він виводить символ, і ця послідовність дій повторюється для кожного символу.Процедури in і out - це звичайні процедури мови асемблера для читання і запису регістрів пристроїв, що визначаються по першому параметру, з АБО в перемінну, котра визначається по другому параметру. Розподіл на 128 забирає молодші 7 бітів, при цьому біт READY залишається в біті 0.
Основний недолік програмованого вводу-виводу полягає в тому, що центральний процесор проводить...