
- •Лабораторна робота №4 Системи керування на базі процесорного елементу (пе) к1810 вм86
- •Призначення виводів мп
- •Вибір режиму конфігурації
- •Структурна схема мікросхеми
- •Адресація портів вводу-виводу
- •63 Адресація пам'яті
- •Фізична організація пам'яті
- •Переривання
- •Часові діаграми роботи мп у мінімальному режимі роботи
- •Часові діаграми роботи мп у максимальному режимі
- •Початкова ініціалізація
- •Система команд мп
- •Мультипроцесорні системи
Адресація портів вводу-виводу
Як і в МП К580ВМ80 порти вводу виводу та пам'ять знаходяться в окремих адресних просторах. Для звертання до портів вводу-виводу використовуються команди IN, OUT, які можуть працювати з прямою адресацією в діапазоні адрес 0-FFH, (наприклад, команда IN AL, 16h,) та із непрямою в більш широкому діапазоні адрес 0-FFFFH (наприклад, команда IN AX, DX).
63 Адресація пам'яті
Кожна комірка пам'яті, адресована МП К1810ВМ86, має два типи адрес: фізичну, що однозначно визначає її положення в 1Мбайті пам'яті, та логічну. Логічна адреса, містить 32 біти та складається із 2 частин - сегмента та зміщення, які є 16 бітними числами. Зазвичай, при програмуванні МП корисуються логічною адресою, яка записується у формі SEG:OFSET, де SEG - сегментна частина адреси, OFSET - зміщення. Наприклад: B800:0024, 0040:0000, FF00:0000 тощо. Між фізичною та логічною адресами є проста відповідність:
PhA = 16* SEG + OFFSET,
де PhA - фізична адреса.
Слід зауважити, що у мікропроцесорі К1810ВМ86 у фізичній адресі використовуються тільки 20 молодших бітів результату додавання. При переповненні розрядної сітки старший 21 біт результату відкидається. Наприклад, при логічній адресі FFFF:0010 фізична адреса буде 00000, а не 100000. Зрозуміло, що одній і тій же фізичній адресі відповідає 16К різних логічних адрес. Це полегшує написання та використання програм, які можуть розміщатись у різних областях пам'яті.
Для того, аби налаштувати програму на використання в новій області пам'яті, необхідно лише змінити значення сегментної частини адреси. Зазвичай таке настроювання проводиться операційною системою. В літературі сегментом також часто називають сукупність усіх комірок пам'яті, які мають однакову сегментну частину адреси. Довжина такого блока в МП К1810ВМ86 становить 64 Кбайт.
В будь-який момент часу програма може звертатись до одного із 4 сегментів, що відповідають одному з 4 сегментних регістрів. Кожен тип даних, які використовує МП, має свій сегментний регістр, що визначає адресу цих даних. Можливі сегментні регістри, які використовуються при адресації різних типів даних, наведені в таблиці 4.
Таблиця 4. Використання сегментів при адресації об'єктів у пам'яті
Дані, що адресуються |
Сегмент |
|||
CS |
DS |
SS |
ES |
|
Коди команд |
+ |
— |
— |
— |
Дані, індексовані регістрам ВР |
S |
S |
+ |
S |
Елементарні дані, та індексовані дані, крім даних, де |
S |
+ |
S |
S |
зміщення формується за допомогою регістра ВР |
|
|
|
|
Стек |
— |
— |
+ |
— |
Рядок джерела |
S |
+ |
S |
S |
Рядок приймача |
— |
— |
— |
+ |
Таблиця |
S |
+ |
S |
S |
У таблиці прийняті такі позначення: |
|
|
|
|
+ - сегмент по замовчуванню; |
|
|
|
|
S - сегмент, що може використовуватись за наявності префікса перекриття |
||||
сегменту; |
|
|
|
|
- - сегмент неможливо використати. |
|
|
|
|
Формування зміщення залежить від режиму адресації типу команда та типу передавання по шині (вибірка команди, вибірка даних і.т.п.), і визначається такими правилами:
При вибірці команди зміщення береться із регістра IP.
При роботі зі стеком зміщення береться із регістра SP.
При роботі з даними формування зміщення здійснюється залежно від типу команди, що виконується.
При прямій адресації зміщення визначається в самій команді MOV AX, [1040H] ; AX:=Mem[DS:1040].
Де MЕМ[SEG:OFFSET] - комірка пам'яті з логічною адресою SEG:OFFSET.
При непрямій базовій адресації зміщення визначається вказівником
бази
MOV AX, [BX] ; AX:=MEM[DS:BX] .
При непрямій індексній адресації зміщення визначається індексним регістром
MOV AX, [DI] ; AX:=MEM[DS:BX] .
При непрямій базово-індексній адресації зміщення визначається сумою індексного і базового регістрів
MOV AX, [BX] [SI] ;AX:=MEM[DS:BX+SI] .
У випадку, коли сума індексного і базового регістрів не вміщується в 16 розрядів, старші розряди відсікаються. Це правило розповсюджується і на інші види адресації.
При непрямій адресації з базовим регістром і зміщенням, зміщення даних визначається сумою базового регістра та зміщення, заданого в команді
MOV AL, [BP] [1020h] ; AL:=MEM[SS:BP+1020h].
При непрямій адресації з індексним регістром і зміщенням, зміщення даних визначається сумою індексного регістра та зміщення, заданого в команді
MOV AX, [DI] [1000h] ; AD:=MEM[DS:DI+1000h]
При непрямій адресації з індексним і базовим регістрами та зміщенням, зміщення даних визначається сумою індексного та базового регістрів до якої додається зміщення, задане в команді
MOV AX, [SI][DI] [2000h] ; AD:=MEM[DS:SI+DI+2000h]
Слід зауважити, що зміщення може бути як 16-, так і 8-бітним. У випадку 8 бітного зміщення при формуванні адреси зміщення розширюється до 16 біт за допомогою копіювання в старший байт сьомого біта зміщення, заданого в команді.
При табличній адресації адреса формується шляхом сумування вмісту регістра AL з регістром BX. Така адресація використовується при виконанні команди XLAT AL - команди перекодування по таблиці. Дії, що виконує команда, можна пзаписати у вигляді: AL:=MEM[DS:BX+AL].
При адресації рядка з якого беруться дані (рядка-джерела) в якості зміщення обов'язково використовується регістр SI.
При адресації рядка в яку поміщаються дані (рядка-приймача) в якості зміщення обов'язково використовується регістр DI.