Студопедия

КАТЕГОРИИ:


Архитектура-(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 [BX+3],AL;-> аналогично предыдущему способу

MOV BX,[BP+2]

BX:=((BP)+2); <- слово

При такой форме записи адресация по SS, т. е. осуществляется прямое обращение к стеку без использования PUSH и POP.

Задача: по значению элементов массива Х сформировать массив Y, в котором

X[i-1] + X[i+1]

Y[i] = -----------------------

i = 2,3.. n-1

Y[1] = X[1]; Y[n] = X[n]

----------------------------------

X DW 20 DUP(?)

Y DW 20 DUP(?)

N DW?

----------------------------------

MOV AX,AX; Ё AX:=X[1]

MOV Y,AH; Ё Y[1]:=X[1]

MOV CX,N

SUB CX,2

MOV SI,2;индекс Х[2]

ML: MOV DI,offset Y+2

MOV AX,X[SI-2]; AX:=X[i-1]

ADD AX,X[SI+2]; AX:=X[i-1]+X[i+1]

MOV BX,2

CWD

IDIV BX

MOV [DI],AX

ADD DI,2

ADD SI,2

DEC CX

JNZ ML

; после выхода из цикла SI указывает на Х[n], а DI - на Y[n]

MOV AX,X[SI]

MOV [DI],AX

 

 

 

(BX)+(DI) = EA

(BP)+(DI) = EA

 

MOV [BX+SI],AL – одинаковые команды

MOV [BX][SI],AL

 

d w mod reg r/m

┌───────┬───┬───┐ ┌───┬───┬───┐ команда двухбайтная т. к. нет

│ KOП │ 0 │ 0 │ │ 00│000│000│ смещения

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

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

A DB 5 DUP(?)

M DW 3; число строк

N DW 5; число столбцов

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

; │A11│A12│A13│A14│A15│>┐ Пусть BX содержит начальный

; └───┴───┴───┴───┴───┘ │ адрес поля А

; ┌───────────────────────┘

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

; └>│A21│A22│A23│A24│A25│>┐

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

; ┌───────────────────────┘

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

; └>│A31│A32│A33│A34│A35│

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

 

MOV BX,offset A

;В дальнейшем BX будем использовать для адресации строк. В

;исходном состоянии BX указывает одновременно на 1-ю строку

;Дельта BX = m * size(A)

;Начальное значение SI = 0

SUB SI,SI

;SI указывает на текущий элемент строки

;Дельта SI = size(A)

;Условно BX соответствует индексу i, а SI - j

 

Команды MOV [BP+SI],BL

MOV AX,[BP+SI]

выполняются аналогично, но адресуются в стек.

 

 

 

MOV [BX+SI-1],AL

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

│A11│A12│A13│A14│A15│>┐ Пусть [BX+SI] указывает на элемент

└───┴───┴───┴───┴───┘ │ А22, тогда [BX+SI-1] указывает на

┌───────────────────────┘ элемент А21

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

└>│A21│A22│A23│A24│A25│>┐ Диапазон d8 -> -128..127

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

┌───────────────────────┘

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

└>│A31│A32│A33│A34│A35│

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

 

MOV [BX+SI-1],AL

 

d w mod reg r/m DISPL

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

│ KOП │ 0 │ 0 │ │ 01│000│000│ │ FF │

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

EA = (BX) + (SI) + DISPL

(BX)+(SI)+d8(16) \ работают с DS

(BX)+(DI)+d8(16) /

(BP)+(SI)+d8(16) \ работают с SS

(BP)+(DI)+d8(16) /

 

r/m │ mod = 01

│ mod = 10

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

000 │ (BX)+(SI)+d8(16)

001 │ (BX)+(DI)+d8(16)

010 │ (BP)+(SI)+d8(16)

011 │ (BP)+(DI)+d8(16)

 

Данный способ адресации позволяет проводить эффективную обработку двумерных массивов.

 

┌───┬───┬───┬───┬───┐ А – прямой адрес матрицы или

; │A11│A12│A13│A14│A15│>┐ адрес первого элемента

; └───┴───┴───┴───┴───┘ │ BX – смешение строк матрицы

; ┌───────────────────────┘

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

; └>│A21│A22│A23│A24│A25│>┐

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

; ┌───────────────────────┘

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

; └>│A31│A32│A33│A34│A35│

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

 

MOV BX,0;первая строка

;Дельта BX = m * size(A) - нашем случае - 1 байт

;SI - смещение элементов внутри строки

MOV si,0; -> текущий элемент в строке

;Дельта SI = size(A) - нашем случае - 1 байт

;EA = (базовый адрес А) + (BX) + (SI)

 

 

ДВУХОПЕРАНДНАЯ КОМАНДА,

 

7 0 7 0

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

│ KOP │S │W│ │mod│ kop│ r/m │ dispL dispH │dataL│ dataH

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

 

Бит направления d в данной команде не нужен, т. к. результат помещается только на место первого операнда. Поэтому биты s,w определяют формат второго операнда.

 

┌──

│ *0, один байт данных dataL

sw=│ 01, два байта данных dataL dataH

│ 11, один байт данных, при выполнении команды расширяется до слова

└──

 

Add bx,5h

│ └────────────────┐

└─────────┐ │

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

│ kop │0│1│ │11│ кор │011│ │00 05│

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

│ s w mod │ r/m data

└───────┬────────┘

код операции

 

Предположим, что А имеет размерность byte, тогда:

Sub A[BX+SI],-8 – НО с базированием и индексированием

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

│ kop │0│0│ │10│ кор │000│ │ пр. адрес А │ │F8│

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

disp dataL

 

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


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


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



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




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