Все про Assembler українською мовою на сайті net.kr.ua

 

:: Меню ::

Головна
Введення
Архітектура реального режиму
Основи програмування
Команди і алгоритми
Розширені можливості сучасних мікропроцесорів
Система команд процесорів Intel
Книга для гостей
Контакти
Добавити у вибране

:: Друзі ::

 
 

:: Лічильники ::

=

 

 

 

 

fff00e50

Система введення-виводу

Система введення-виводу, тобто комплекс засобів обміну інформацією із зовнішніми пристроями, є найважливішою частиною архітектури процесора і машини в цілому. До системи введення-виводу можна віднести і способи підключення до системної шини різного устаткування, і процедури взаємодії процесора з цим устаткуванням, і команди процесора, призначені для обміну даними із зовнішніми пристроями.
Безперервне вдосконалення мікропроцесорів і прагнення максимальне підвищити продуктивність всієї обчислювальної системи привело до істотного ускладнення внутрішньої організації комп'ютерів: підвищенню розрядності шин, появі внутрішніх швидкодіючих магістралей обміну даними, використанню кеш-буферів для прискорення обміну з пам'яттю і дисками і інш. Якщо, проте, відвернутися від важливих з погляду продуктивності, але неістотних для програміста деталей, то логічну схему сучасного комп'ютера можна представити традиційним чином, у вигляді системної шини (магістралі), до якої підключаються сам мікропроцесор і всі пристрої комп'ютера (мал. 1.13).

Мал. 1.13. Підключення пристроїв комп'ютера до системної шини(A - адреси; D - дані; M/io - один з сигналів управління)

Системна шина є, по суті, набором ліній - проводів, до яких одноманітно підключаються всі пристрої комп'ютера. У ширшому плані в поняття системної шини слід включити електричні і логічні характеристики сигналів, що діють на лініях шини, їх призначення, а також правила взаємодії цих сигналів при виконанні тих або інших операцій на шині - те, що зазвичай називають протоколами обміну інформацією. Сигнали, що розповсюджуються по шині, доступні всім підключеним до неї пристроям, і в завдання кожного пристрою входить вибір призначених йому сигналів і забезпечення реакції на них, відповідної протоколу обміну.
Процесор пов'язаний з системною шиною великою кількістю ліній (практично всіма своїми виводами), з яких нас цікавитимуть тільки лінії трьох категорій: набір ліній адрес, набір ліній даних і один з сигналів управління, що носить назву М / IO' (М - "IO із запереченням"). Останній сигнал, строго кажучи, є тільки серед вихідних сигналів мікропроцесора, а на системну шину приходять похідні від цього сигналу, утворені, як комбінації сигналу М / IO' з сигналами запису і читання, що управляють. Проте суть справи від цього не змінюється, і для простоти ми опустили ці подробиці.
Процесор, бажаючи записати дане за деякою адресою в пам'яті, виставляє на лінії адрес необхідну адресу, а на лінії даних - дане. Пристрій управління пам'яттю розшифровує адреса, що поступила, і, якщо ця адреса належить пам'яті, приймає з ліній даних дане, що поступило, і заносить його у відповідний елемент пам'яті. Описана процедура відображає виконання процесором команди типу

 

mov mem,ax

де mem - символічне позначення елементу пам'яті, що належить сегменту даних програми.
Якщо процесор, виконуючи команду типу

mov AX, mem

повинен прочитати дане з пам'яті, він виставляє на лінії адрес необхідну адресу і чекає надходження даних. Пристрій управління пам'яттю, розшифрувавши адресу, що поступила, і переконавшись в наявності такої адреси в пам'яті, відшукує в пам'яті необхідний осередок, прочитує з неї дане і виставляє його на лінії даних. Процесор знімає дане з шини і відправляє його у вказаний в команді операнд (в даному випадку в регістр АХ).
Описані процедури запису і читання справедливі не тільки після відношення до пам'яті; для решти всіх пристроїв комп'ютера вони виглядають так само. За кожним пристроєм закріплена певна група адрес, на які воно повинне відгукуватися. Виявивши свою адресу на магістралі, пристрій, залежно від заданого процесором напряму передачі даних, або прочитує з магістралі дані, що поступили, або, навпаки, встановлює наявні в нім дані на магістраль.
З мал. 1.13 видно, що всі пристрої комп'ютера можна розбити на дві категорії. Представником однієї категорії є відеобуфер, що входить у відеосистему комп'ютера. Пристрій управління відеобуфером налаштований на дві групи адрес, які як би продовжують адреси, що відносяться до оперативної пам'яті. Дійсно, адреса останнього байта оперативної пам'яті складає 9ffffh, а вже наступна адреса A0000h є адресою першого байта графічного відеобуфера. Графічний відеобуфер займає 64 Кбайт адресного простору до адреси Affffh (реально трохи менше, але в плані даного питання це не має значення). Текстовий відеобуфер розташований на деякій відстані від графічного і займає 32 Кбайт, починаючи з адреси B8000h. Таким чином, адреси оперативної пам'яті і пам'яті відеобуфера рознесені і не перекриваються.
До другої категорії пристроїв можна віднести всі пристрої, адреси яких перекриваються з адресами оперативної пам'яті. Наприклад, за контроллером клавіатури закріплено дві адреси: 60h і 61h. За адресою 60h виконується читання коди натиснутої клавіші, а адреса 61h використовується для управління роботою контроллера. І той, і інша адреса є в оперативній пам'яті і, таким чином, виникає проблема розпізнавання пристрою, до якого відбувається звернення. Аналогічна ситуація спостерігається і з багатьма іншими пристроями комп'ютера. Наприклад, контроллер переривань, службовець для об'єднання сигналів переривань від всіх пристроїв комп'ютера і напряму їх на єдиний вхід переривання мікропроцесора, управляється через дві адреси Оскільки -в склад машини завжди включають два контроллери, для них виділяються дві пари адрес. У всіх комп'ютерах типу IBM РС контроллерам переривань призначаються адреси 20h-21h і A0h-alh, які так само відповідають і деяким байтам оперативної пам'яті.
Проблема ідентифікації пристроїв з адресами, що перекриваються, має два аспекти: апаратний і програмний. Ідентифікація пристроїв на системній шині здійснюється за допомогою сигналу М / IO', якою генерується процесором в будь-якій операції запису або читання. Проте значення цього сигналу залежить від категорії пристрою, що адресується. При зверненні до пам'яті або відеобуфера процесор встановлює значення сигналу М / IO' = 1 (М позначає memory, пам'ять). При зверненні до останніх пристроїв цей сигнал встановлюється в Про (IO позначає in-out, уведення-виведення, і якщо IO із запереченням рівне 0, то IO дорівнює 1, і це втілює не операцію з пам'яттю, а операцію введення-виводу). В той же час всі пристрої, підключені до шини, аналізують значення сигналу М / Io1. При цьому пам'ять і відеобуфер відгукуються на операції читання-запису на шині, тільки якщо вони супроводяться значенням М / IO' = 1, а решту пристроїв сприймають сигнали магістралі тільки при значенні М / IO' = 0. Таким чином здійснюється апаратне розділення пристроїв "типу пам'яті" і пристроїв "введення-виводу".
Програмне розділення пристроїв реалізується за допомогою двох наборів команд процесора - для пам'яті і для пристроїв введення-виводу. До першої групи команд входять практично всі команди процесора, за допомогою яких можна звернутися за тією або іншою адресою, - команди пересилки mov і movs, арифметичних дій add, mul і div, зрушень rol, ror, sal і sar, аналізу вмісту байта або слова test і багато інших. Фактично до цієї групи команди входять більшість команд процесора. Другу групу команд утворюють специфічні команди введення-виводу. У МП 86 їх всього дві - команда введення in і команда виведення out. При виконанні команд першої групи процесор автоматично генерує М / IO' = 1; при виконанні команд in і out процесор встановлює сигнал М / IO' = 0.
Таким чином, при зверненні до пам'яті і до відеобуфера програміст може використовувати всі відповідні по сенсу команди процесора, при цьому, працюючи, наприклад, з відеобуфером, можна не тільки засилати в нього (або отримувати з нього) дані, але і виконувати прямо у відеобуфері будь-які арифметичні, логічні та інші операції.
Звертатися ж до контроллерів тих або інших пристроїв (і, між іншим, до відеоадаптера), допустимо тільки за допомогою двох команд - in і out. Арифметичні операції або аналіз даних в пристрої неможливий. Необхідно спочатку прочитати в процесор дане із зовнішнього пристрою, і лише потім виконувати над ним необхідну операцію.
Наявність двох категорій адрес пристроїв дає підстава говорити про існування двох адресних просторів - простори пам'яті, куди входить сама пам'ять, а також відеобуфери і ПЗП, і простору введення-виводу (простори портів), куди входять адреси решти апаратури комп'ютера. При цьому, якщо об'єм адресного простору пам'яті складає 1 Мбайт (а в захищеному режимі 4 Гбайт), то адресний простір портів значно менше - його розмір складає всього 64 Кбайт. Ця величина визначається форматом команд введення-виводу. Адреса порту, що адресується, має бути записаний в регістр DX (і ні в якій інший) і, таким чином, максимальне значення цієї адреси складає величину Ffffh. Реально з 64 Кбайт адресного простору портів використовується лише дуже мала частина. Практичні питання програмування через загальне з пам'яттю адресне простори і через простір портів будуть розглянуті в наступних розділах.

-

:: Наша кнопка ::

Отримати код:

Підтримайте наш сайт і розмістіть нашу кнопку на своєму ресурсі.


:: Популярне ::

-


:: Посилання ::

-


 

 

 


Copyright © net.kr.ua, 2019-2025 (assem.us)