Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаба 4 АК K1810.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
637.95 Кб
Скачать

Адресація портів вводу-виводу

Як і в МП К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 - сегмент, що може використовуватись за наявності префікса перекриття

сегменту;

- - сегмент неможливо використати.

Формування зміщення залежить від режиму адресації типу команда та типу передавання по шині (вибірка команди, вибірка даних і.т.п.), і визначається такими правилами:

  1. При вибірці команди зміщення береться із регістра IP.

  2. При роботі зі стеком зміщення береться із регістра SP.

  3. При роботі з даними формування зміщення здійснюється залежно від типу команди, що виконується.

    1. При прямій адресації зміщення визначається в самій команді MOV AX, [1040H] ; AX:=Mem[DS:1040].

Де MЕМ[SEG:OFFSET] - комірка пам'яті з логічною адресою SEG:OFFSET.

    1. При непрямій базовій адресації зміщення визначається вказівником

бази

MOV AX, [BX] ; AX:=MEM[DS:BX] .

    1. При непрямій індексній адресації зміщення визначається індексним регістром

MOV AX, [DI] ; AX:=MEM[DS:BX] .

    1. При непрямій базово-індексній адресації зміщення визначається сумою індексного і базового регістрів

MOV AX, [BX] [SI] ;AX:=MEM[DS:BX+SI] .

У випадку, коли сума індексного і базового регістрів не вміщується в 16 розрядів, старші розряди відсікаються. Це правило розповсюджується і на інші види адресації.

    1. При непрямій адресації з базовим регістром і зміщенням, зміщення даних визначається сумою базового регістра та зміщення, заданого в команді

MOV AL, [BP] [1020h] ; AL:=MEM[SS:BP+1020h].

    1. При непрямій адресації з індексним регістром і зміщенням, зміщення даних визначається сумою індексного регістра та зміщення, заданого в команді

MOV AX, [DI] [1000h] ; AD:=MEM[DS:DI+1000h]

    1. При непрямій адресації з індексним і базовим регістрами та зміщенням, зміщення даних визначається сумою індексного та базового регістрів до якої додається зміщення, задане в команді

MOV AX, [SI][DI] [2000h] ; AD:=MEM[DS:SI+DI+2000h]

Слід зауважити, що зміщення може бути як 16-, так і 8-бітним. У випадку 8 бітного зміщення при формуванні адреси зміщення розширюється до 16 біт за допомогою копіювання в старший байт сьомого біта зміщення, заданого в команді.

    1. При табличній адресації адреса формується шляхом сумування вмісту регістра AL з регістром BX. Така адресація використовується при виконанні команди XLAT AL - команди перекодування по таблиці. Дії, що виконує команда, можна пзаписати у вигляді: AL:=MEM[DS:BX+AL].

    2. При адресації рядка з якого беруться дані (рядка-джерела) в якості зміщення обов'язково використовується регістр SI.

    3. При адресації рядка в яку поміщаються дані (рядка-приймача) в якості зміщення обов'язково використовується регістр DI.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]