Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Адресация по сумме d8 и индексный регистр

ПРЯМАЯ АДРЕСАЦИЯ С БАЗИРОВАНИЕМ

ПРЯМАЯ АДРЕСАЦИЯ С ИНДЕКСИРОВАНИЕМ

РЕГИСТРОВАЯ АДРЕСАЦИЯ

ПРИМЕР ФОРМАТА КОМАНД С ЧИСТО КОСВЕННОЙ АДРЕСАЦИЕЙ

 

MOV AX,[BX]

 

┌───────┬───┬───┐ ┌───┬───┬───┐┌ ─ ─ ─ ─ ┐

│ KOП │ 1 │ 1 │ │ 00│000│111│ disp -> смещение = 0

└───────┴───┴───┘ └───┴───┴───┘└ ─ ─ ─ ─ ┘ поля disp нет

EA = (BX)

При использовании косвенной адресации команды с постбайтом самые короткие – 2 байта.

В данной команде 2 операнда:

1) регистр – кодируется 3-мя битами (поле REG)

2) в памяти, кодируется 5 битами (поле MOD, r/m)

 

Пример:

Вычислить сумму элементов массива Х:

x db 19 DUP (?)

n dw 10

s db?

;-----------------------------------

;считаем, что массив Х каким-то образом определен.

MOV DL,0; - сумматор

MOV CX,N; - число повторений -> счетчик цикла

MOV BX,offset X

;беззнаковое смещение – BX положить равным адресу поля Х

 

0 1 2 9

┌──────┬──────┬───────────┬──────┐

│ Х1 │ Х2 │......... │ Х10 │

└──────┴──────┴───────────┴──────┘

 

Адрес Х – это одновременно и адрес 1-го элемента – Х1.

Для того, чтобы перейти к Х2 нужно BX:=BX+1

ML: ADD DL,[BX]

INC BX; переадресация на следующий элемент мас-

DEC CX; сива уменьшили счетчик

JNZ ML

MOV S,DL

 

 

 

Если операнд находится в регистре, то такая адресация называется регистровая, однако в общем случае говорят, о регистровой адресации, когда оба операнда в регистрах (MOD = 11).

Пример

ADD AL,CL

 

d w mod reg r/m

┌───────┬───┬───┐ ┌───┬───┬───┐

│ KOП │ 1 │ 0 │ │ 11│000│001│

└───────┴───┴───┘ └───┴───┴───┘

 

Все команды с постбайтом имеют длину 2 байта.

MOV BP,DX

d w mod reg r/m

┌───────┬───┬───┐ ┌───┬───┬───┐

│ KOП │ 1 │ 1 │ │ 11│101│010│ – в этом случае – 2 байта

└───────┴───┴───┘ └───┴───┴───┘

 

 

 

r/m │ mod = 01

│ mod = 10

──────┼───────────

100 │(SI)+d8(16) = EA

101 │(DI)+d8(16) = EA

 

Данный способ адресации по своим возможностям и назначению аналогичен прямой адресации с базированием. Отметим, что в данном случае регистры SI и DI обеспечивают обращение к сегменту данных.

SAB A[SI],DX

/ \

d16 + (SI) -> EA

┌── A 0 2 4

│ ┌──────┬──────┬───────────┬──────┐

│ │ A1 │ A2 │......... │ An │

│ └──────┴──────┴───────────┴──────┘

 

базовый адрес массива (SI) – индекс

Пусть SI = 0, тогда -> A[SI] -> A1

SI = 4, тогда -> A[SI] -> A3

SUB A [SI], DX

/ \

d w mod reg r/m

┌───────┬───┬───┐ ┌───┬───┬───┐ ┌─────────┐

│ KOП │ 0 │ 1 │ │ 10│010│100│ │адр.масив│

└───────┴───┴───┘ └───┴───┴───┘ └────┴────┘

 

Пример: ОПРЕДЕЛИТЬ В МАССИВЕ А СУММУ ЧЕТНЫХ ЭЛЕМЕНТОВ

 

A DW 10 DUP (?)

N DW 10

S DW?

; SI:= N DIV 2

; Начальное значение SI = 2. Приращение индекса = 4

MOV DI,2;начальное значение индекса

ML: ADD DX,A[DI]

ADD DI,4;переадресация

DEC CX

JNZ ML

MOV S,DX

 

 

 

r/m │ mod = 01 Команды имеют длину 3,4 байта.

│ mod = 10 Используются для обработки струк-

─────┼─────────── туированных типов данных.

110 │ (BP)+d8(16)

111 │ (BP)+d8(16)

 

MOV X[BX],AX EA = (BX) + d16

ADD Y[BP],CX EA = (BP) + d16

Данный способ адресации работает точно также как и прямая адресация с индексированием. Он выделен только потому, что регистры SI, DI - индексные, а BX, BP - регистры базы.

В данной команде регистр BP адресуется через DS, т. е. к сегменту данных.

 

 

 

ЕА = (SI) + d8

ЕА = (DI) + d8

d8 – короткое знаковое смещение. До выполнения операций сложения d8 расширяется до слова.

┌──────┬──────┬──────┬───────────┬──────┐

│ A1 │ A2 │ A3 │......... │ An │

└──────┴──────┴──────┴───────────┴──────┘

 

Пусть А3 – максимальный элемент.

SI – адрес элемента А3

MOV AL,[SI-1];AL:=A2 – предшествующий элемент

MOV BL,[SI+1];BL:=A4 – следующий элемент

Такая форма записи команд используется, когда необходимо от текущего адреса отступить вперед не более чем на 127 и отступить назад не более чем на 128.

Если адресное расстояние выйдет за диапазон, то будет сформировано смещение d16

MOV AL,[SI-1]

 

d w mod reg r/m DISP

┌───────┬───┬───┐ ┌───┬───┬───┐ ┌────┐

│ KOП │ 1 │ 0 │ │ 01│000│100│ │ FF │

└───────┴───┴───┘ └───┴───┴───┘ └────┘

 

MOV AL,[SI+1]

 

d w mod reg r/m DISP

┌───────┬───┬───┐ ┌───┬───┬───┐ ┌────┐

│ KOП │ 1 │ 0 │ │ 01│000│100│ │ 01 │

└───────┴───┴───┘ └───┴───┴───┘ └────┘

 

 

<== предыдущая лекция | следующая лекция ==>
Косвенная адресация | В которой второй операнд непосредственный
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 511; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.