Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсач (переделанный под меня).doc
Скачиваний:
52
Добавлен:
17.11.2018
Размер:
502.78 Кб
Скачать

1.1.4. Адресний простір пам'яті і введення - висновку

Розміщення байтів і слів у пам'яті.

Пам'ять логічно організована як одномірний масив байтів, кожний з який має 20-бітову фізичну адресу в діапазоні 00000 - FFFFF. Будь-які два суміжних байти в пам'яті можуть розглядатися як 16-бітове слово. Молодший байт слова

має менша адреса, а старший - більший. Адресою слова вважається адреса його молодшого байта. Таким чином, 20-бітова адреса пам'яті може розглядатися і як адреса байта, і як адреса слова

Для запам'ятовування покажчика адреси потрібно два слова пам'яті, причому слово з меншою адресою завжди містить зсув, а слово з великою адресою - базову адресу сегмента.

Для економії часу виконання програми треба розміщати слова дані в пам'яті по парних адресах, так як МП передасть такі слова за один цикл шини. Слово з парною адресою називається вирівняним на границі слів. Слова з непарними адресами також припустимі, але для їхньої передачі вимагаються два цикли шини, що знижує продуктивність МП.

Сегментація пам’яті і обчислення адрес.

Сегмент складається із суміжних осередків пам’яті і є незалежної й окремо адресованою одиницею пам'яті ємністю 64 Кбайт. Кожному сегменту програмою призначається початкова (базова) адреса, що є адресою першого байта сегмента в просторі пам'яті. Поточні адреси чотирьох сегментів записуються в сегментні регістри CS, DS, SS і ES, тим самим фіксуються поточні сегменти коду (програми), даних, стека і додаткових даних.

Фізична адреса комірки пам'яті представляє 20-бітове число в діапазоні 0 -FFFFF, що однозначно визначає положення кожного байта в просторі пам'яті ємкістю 1 Мбайт. На початку кожного циклу шини, зв'язаного зі звертанням до пам'яті, фізична адреса видається па типу адреси і супроводжується сигналом АLE. Тому що МП ВМ86 є 16-бітовим, то всі операції при обчисленні фізичної адреси виробляються з 16-бітовими адресними об'єктами.

Логічна адреса комірки пам'яті складається з двох 16-битовых без знакових значень: початкової адреси сегмента(базою чи сегментом), і внутрішнього сегментного зсуву. Для обчислення фізичної адреси база сегмента зрушується вліво на 4 біт і сумується зі зсувом.

Перенос зі старшого біта, що може виникнути при підсумовуванні, ігнорується. Це призводить до так званої кільцевої організації пам'яті при якій за рейкою з максимальною адресою FFFFF випливає осередок з кульовою адресою. Аналогічну кільцеву організацію має і кожен сегмент.

1.1.5. Організація уведення — виводу.

Уведення й вивід даних може здійснюватися двома способами: з використанням адресного простору уведення - виводу, і з використанням загального з пам'яттю адресного простору, тобто з відображенням на пам'ять.

При першому способі застосовуються спеціальні команди IN (уведення) і OUT (вивід), які забезпечують передачу даних між акумуляторами AL або АХ і адресуемими портами. При виконанні цих команд виробляється сигнал М/Ю = 0, що ідентифікує вибір простору уведення - виводу й у сукупності із сигналами WR і RD Кзволяє сформувати системні сигнали IOW і IOR для керування операціями запису даних у порт і читання з порту.

Команди IN і OUT можуть використовувати пряму адресацію, коли адреса порту втримується у вигляді константи в другому байті команди, і непряму адресацію, коли адреса розташовується в регістрі DX. У першому випадку можна адресувати по 256 портів для уведення й виводу даних. У другому забезпечується адресний простір до 64К 8-бітових портів або до 32К 16-бітових портів. Непряма адресація дозволяє обчислювати адреси портів при виконанні програми й зручна при організації обчислювальних циклів для обслуговування декількох портів за доопомогою однієї процедури.

Вісім осередків F8 - FF у просторі уведення - виводу зарезервовані для системних цілей, і використовувати їх у прикладних програмах не рекомендується.

При другому способі адреси портів розміщаються в загальному адресному просторі, і звертання до них не відрізняється від звертання до комірок пам'яті. Це підвищує гнучкість програмування, тому що для уведення - виводу можна використовувати будь-яку команду зі зверненням до пам'яті при будь-якому способі адресації. Так, команда MOV дозволяє передавати дані між будь-яким загальним регістром або коміркою пам'яті й портом уведення - виводу, а логічні команди AND, OR, XOR і TEST дозволяють маніпулювати бітами в регістрі порту. При цьому, однак, варто враховувати, що команди зі зверненням до пам'яті мають більший формат і виконуються довше, ніж прості команди IN і OUT. Крім того, трохи ускладнюється дешифрування 20-бітової фізичної адреси порту й скорочується число адрес, які можуть використовуватися для комірок пам'яті.

Мікропроцесор може передавати по шині байт або слово в/из ВУ. Щоб слово передавалося за один цикл шини, адреса ВУ повинен бути парним. Адреса байтового ВУ може бути парний або непарним, і відповідно порти цих зовнішніх пристроїв підключаються К ліній молодшого й старшого байта шини даних. Для роздільного звертання до цих портів дешифрування адрес здійснюється з урахуванням сигналів на лініях ПОЗА і АТ.