Базово-индексная адресация и ее развитие



в виде базово-индексной адресации с масштабированием

 

Более сложным видом относительной адресации является базово-индексная адресация (Рис.3.3). При ее использовании в адресной части команды выделяются три поля: база (base), индекс (index) и смещение (displacement), а исполнительный адрес формируется как сумма из трех компонент.

Поля base и index команды содержат адреса РОН, в которых в свою очередь находятся компоненты исполнительного адреса – базовый адрес (Base) и индекс (Index).

Частным случаем базово-индексной адресации является отсутствие смещения и формирование адреса из 2 компонент (база и индекс). Для уточнения этого случая соответствующий режим адресации принято называть базово-индексной адресацией без смещения.

 

Рис.3.3. Базово-индексная адресация со смещением

 

Дальнейшим развитием базово-индексной адресации является базово-индексная адресация с масштабированием, которая используется в старших моделях семейства 80х86 (начиная с 80386). При использовании масштабирования индекс как одна из компонент адреса предварительно умножается на заданный в машинной команде масштаб. Типичными значениями масштаба являются 2, 4, 8.

Косвенная адресация

 

При использовании косвенной адресации в адресной части команды задается не адрес операнда, а адрес адреса операнда. Принято различать 2 вида косвенной адресации:

а) косвенная регистровая (в команде задается адрес регистра, содержащего адрес операнда, находящегося в памяти).

б) косвенная адресация с использованием памяти (в команде задается адрес ячейки памяти, в которой содержится адрес операнда). В принципе адрес ячейки памяти может быть как прямым, так и относительным.

 

Рис.3.4. Косвенная адресация

 

Дальнейшим развитием косвенной регистровой адресации являются так называемые автоинкрементная и автодекрементная адресации. При автоинкрементной адресации содержимое адресуемого в команде регистра сначала используется как адрес операнда, а затем наращивается (инкрементируется) на длину операнда. При автодекрементной адресации содержимое адресуемого регистра сначала уменьшается (декрементируется) на длину операнда, а затем используется как адрес этого операнда. Эти режимы адресации находят широкое применение в ЭВМ с архитектурой DEC (М6800).

Автоинкрементную и автодекрементную адресации целесообразно использовать при работе со стеком.

 

Непосредственная адресация

При использовании непосредственной адресации в адресной части команды задается не адрес операнда, а сам операнд. Непосредственный операнд может являться только программной константой, но не переменной, т.к. его значение должно формироваться на этапе компиляции. Использование непосредственной адресации по сравнению с прямой для программных констант имеет следующие преимущества:

1) Экономия памяти, т.к. операнд представляется в команде и не требует дополнительной ячейки памяти как при прямой адресации.

2) Экономия времени. При выборке операнда не тратится время на обращение к памяти, как при прямой адресации, т.к. операнд выбирается вместе с командой на этапе выборки команды.

 

 

Неявная адресация

При использовании неявной адресации либо адрес операнда, либо сам операнд не задаются, а лишь подразумеваются. Использование неявной адресации позволяет в значительной степени сократить длину машинного (объектного) кода программы за счет отсутствия в нем адресов неявных операндов, а также самих неявных операндов.

Классическими примерами неявной адресации могут служить:

1) Аккумуляторные команды, в которых адрес аккумулятора, где находится сначала операнд, а затем и результата операции, не задается.

В базовой модели Intel 8086 байтным аккумулятором является регистр AL, двухбайтным – АХ, четырехбайтным – комбинация регистров АХ (младшие разряды) и DX (старшие разряды).

2) Стековые команды, в которых адрес указателя стека (SP) задается неявно.

 

Примерами использования неявного операнда могут служить:

1) те же стековые команды, в которых константа изменения указателя стека, равная 2, не задается, а подразумевается.

2) команды инкремента и декремента (INC и DEC), в которых константа изменения операнда, равная 1, подразумевается, а не задается.

6. Система команд. Основные группы, кратко о каждой группе команд.

БАЗОВАЯ СИСТЕМА КОМАНД

Она включает в себя более 100 различных мнемокодов команд (мнемокод – это буквенное кодирование операций).

С учетом разнообразных форматов команд и режимов адресации число разнообразных машинных команд, по мнению фирмы Intel, составляет более 3800.

По функциональному назначению команды можно разделить на следующие типы:

1.Команды пересылки данных, осуществляющие обмен информацией между регистрами, ячейками данных и портами ввода-вывода.

2. Арифметические команды, выполняющие арифметические операции над двоичными или двоично-десятичными (в формате BCD – binary-coded decimal) числами.

3. Команды манипулирования битами, выполняющие сдвиг, циклический сдвиг и логические операции со значениями регистров и ячеек памяти.

4. Команды передачи управления, управляющие последовательностью исполнения команд программы. К ним относятся переходы к другой команде, вызов процедуры и возврат из нее.

5. Команды обработки строк, перемещающие, сравнивающие и сканирующие строки данных.

6. Команды прерывания, отвлекающие микропроцессор на обработку некоторых специфичных ситуаций.

7. Команды управления процессором, устанавливающие и сбрасывающие флаги состояния, а также изменяющие режим функционирования микропроцессора.

 

7. Команды пересылок и работы со стеком. Их назначение, синтаксис, примеры.

MOV (MOVe data) – пересылка данных.

Команда передает значение операнда-источника в операнд-приемник. Команда MOV не может пересылать данные из одной области памяти в другую, для таких пересылок может быть использована команда MOVS.

В ассемблерной нотации команда представляется в виде: MOV dst, src.

Содержимое src пересылается на место dst (dst – приемник, src – источник).

dst := r, mem, sr (r –регистр, mem – память, sr – сегментный регистр),

src = r, mem, sr, imm      (imm – непосредственный операнд).

В зависимости от используемого формата и режима адресации команда MOV может реализовать следующие передачи данных:

reg à reg    (reg - регистр общего назначения);

imm à reg;

imm à mem;

reg à mem;

mem à reg;

reg à sr;

mem à sr;

sr à reg;

sr à mem.

Направление пересылки в машинном формате команды определяется специальным битом d (direct) кода операции. С помощью команды MOV нельзя реализовать пересылки типа:

mem à mem;

sr à sr;

imm à sr;

dst ¹ CS (В качестве приемника не может использоваться сегментный регистр CS – сегмент кода).


Дата добавления: 2018-04-04; просмотров: 1009; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!