КАТЕГОРИИ: Архитектура-(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; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |