Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
287
Добавлен:
19.03.2015
Размер:
175.1 Кб
Скачать

ществляется передача «в», а при d=0 - передача «из» МП. Направление передачи относится ко второму операнду (регистру), определяемому полем reg второго байта команды. Поле w задает формат операнда: при w=0 МП оперирует с байтом, а при w=l производится обработка 16-битного слова.

Второй байт команды, называемый постбайтом адресации, определяет работающий регистр или ячейку памяти и состоит из трех полей: режима mod, регистра reg и селектора регистр/память r/m.

В поле reg в соответствии с таблицей 19.1 задается один из регистров, содержащий второй операнд команды.

Таблица 19.1

reg (r/m)

w=0

w=1

reg (r/m)

w=0

w=l

0 0 0

0 0 1

0 1 0

0 1 1

AL

CL

DL

ВL

AX

CX

DX

BX

1 0 0

1 0 1

1 1 0

1 1 1

АН

СН

DH

ВН

SP

ВР

SI

DI

Поле mod задает используемый режим адресации и предназначено для определения первого операнда команды. Если mod=11, то операнд содержится в регистре, адресуемом полем reg в соответствии с таблицей 19.1. Во всех остальных случаях (mod11) первый операнд располагается в памяти. При этом код поля mod задает способ использования смещений disp в соответствии с таблицей 19.2.

Таблица 19.2

mod

Режим

Пояснения

00

01

10

Disp=0

Disp=dispL

Disp=dispH, dispL

Смещения нет

8-битное смещение

16-битное смещение

11

Регистровая адресация в соответствии с таблицей 19.1

Во всех случаях, связанных с обращением к памяти (mod11), в поле r/m команды кодируется способ вычисления эффективного адреса ЕА (смещения) операнда. В операционном устройстве МП этот эффективный адрес формируется в соответствии с таблицей 19.3.

Имеется только одно исключение: при mod=00 и r/m=110 смещение отсутствует и код команды содержит прямой (физический) адрес EA=dispH, dispL.

Таким образом, операнд в памяти можно адресовать 24 различными способами (3 кода поля mod в таблице 10.2 и 8 кодов поля r/m в таблице 19.3).

Таблица 19.3

r/m

Смещение (ЕА)

000

001

010

011

100

101

110

111

ЕА=(ВХ)+(SI)+disp

ЕА=(ВХ)+(DI)+disp

ЕА=(ВР)+(SI)+disp

EA=(BP)+(DI)+disp

ЕА=(SI)+disp

EA=(DI)+disp

ЕА=(ВР)+disp

ЕА=(ВХ)+disp

Формат двухоперандной команды с непосредственным операндом показан на рис.19.2.

З

Рис.19.2. Двухоперандная команда с непосредственным операндом

десь отсутствует не-обходимость адресации второго операнда, и поэ-тому полеreg в постбайте используется для расши-рения поля КОП. От-сутствует также и поле d. Формат непосредственного операнда определяется полями s и w в соответствии с таблице 19.4.

Таблица 19.4

S, w

Формат операнда

Пояснения

Х0

01

11

data L

data H, data L

data L*

байт данных

2байта данных

байт данных с расширением знака до 16бит

Назначение полей mod и r/m сохраняется таким же, как и в предыдущем формате команд.

Н

Рис.19.3. Однооперандная команда

а рис.19.3 приво-дится формат одноопе-рандной команды. Все правила интерпретации полей однооперандных команд такие же, как и для двухоперандных.

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

19.2. Способы адресации

В таблице 19.5 приведены сведения о способах формирования эффективных адресов в МП К1810. В МП К1810 реализуются следующие способы адресации: регистровая непосредственная, прямая, косвенная, базовая, индексная, индексно - базовая, относительная и некоторые их комбинации.

Таблица 19.5

r/m

mod

Регистр

00

01

10

w=0

w=l

000

(ВХ)+(SI)

(BX)+(SI)+dispL

(BX)+(SI)+dispH, L

AL

AX

001

(BX)+(DI)

(BX)+(DI)+dispL

(BX)+(DI)+dispH, L

CL

CX

010

(BP)+(SI)

(BP)+(SI)+dispL

(BP)+(SI)+dispH, L

DL

DX

011

(BP)+(DI)

(BP)+(DI)+dispL

(BP)+(DI)+dispH, L

BL

BX

100

(SI)

(SI)+dispL

(SI)+dispH, L

AH

SP

101

(DI)

(DI)+dispL

(DI)+dispH, L

CH

BP

110

dispH, L

(BP)+dispL

(BP)+dispH, L

DH

SI

111

(BX)

(BX)+dispL

(BX)+dispH, L

BH

DI

Регистровая адресация. Этот способ адресации кодируется в поле КОП или в постбайте и определяет, что операнд находится в одном из регистров блока РОН. В двухоперандных командах определяются два регистра так, как это показано в таблице 19.5.

Непосредственная адресация. Операнд содержится в теле команды и обычно имеет формат 16 бит. В двухоперандных командах с помощью постбайта режима адресации имеется возможность определять операции над непосредственным операндом и содержимым регистра или ячейки памяти. МП К1810 не имеет команд загрузки непосредственного операнда в сегментные регистры или в стек.

Прямая адресация (mod=00, r/m=110). Команды с прямой адресацией содержат двухбайтный эффективный адрес (смещение) операнда вслед за постбайтом режима адресации. В командах безусловной передачи управления и вызова подпрограмм имеется возможность задавать двухбайтный сегментный адрес и двухбайтное смещение (длинная прямая адресация), что позволяет адресовать любой элемент памяти. В командах преобразования данных длинная прямая адресация не предусмотрена.

Регистровая косвенная адресация. Двухбайтный эффективный адрес (смещение) содержатся в регистрах ВХ, SI и DL Регистровая косвенная адресация через регистр ВР моделируется использованием базовой адресации с нулевым смещением. Регистр, используемый в команде с косвенно-регистровой адресацией, определяется постбайтом режима (mod=00; r/m=100, 101, 111).

Относительная адресация с использованием базовых регистров. Эффективный адрес операнда определяется как сумма содержимого указанного базового регистра (ВХ, ВР, SI, DI) и одно - или двухбайтного смещения (dispL, dispH, L), содержащегося в теле команды сразу вслед за постбайтом режима адресации. При этом все смещения представляются в дополнительном коде как целое со знаком. Базовый способ адресации используется для обращения к элементам различных структур данных, когда величина смещения известна во время ассемблирования, а базовый адрес структуры определяется в процессе исполнения программы.

Индексная адресация (mod=10: r/m=100, 101, 110, 111). В МП К1810 данный способ адресации операнда реализуется с использованием команд с базовой адресацией и двухбайтным смещением. При этом в теле команды содержится двухбайтный «базовый адрес», а в «базовом регистре» - индекс. Базовые регистры ВХ, ВР, SI и DI могут использоваться командами с базовой и индексной адресацией, однако чаще всего регистры ВХ и ВР выступают в качестве базовых, а регистры SI и DI - индексных.

Комбинированная относительная и индексная адреса­ция (mod=00; r/m=100, 101, 110, 111). В командах, использующих данный способ адресации, эффективный адрес операнда равен сумме базового адреса и смещения, содержащихся в регистрах. Базовый адрес представляется в регистрах ВХ, ВР, а индекс - в регистрах SI и DI. По командам с индексно-базовой адресацией обеспечивается эффективный доступ к элементам памяти, так как этот метод адресации позволяет вычислять в процессе выполнения команды не только базовый (начальный) адрес структуры данных, но и индекс (смещение) элемента внутри структуры.

Относительная адресация с использованием счетчика команд. При этом способе адресации эффективный адрес вычисляется как сумма содержимого счетчика команд и одно- или двухбайтного смещения, содержащегося в теле команды. Данный способ адресации используется только в командах условных и безусловных переходов, командах вызова подпрограмм и командах управления циклом.

Соседние файлы в папке Учебник тау