ществляется передача «в», а при 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. Во всех остальных случаях (mod11) первый операнд располагается в памяти. При этом код поля mod задает способ использования смещений disp в соответствии с таблицей 19.2.
Таблица 19.2
| 
				 mod  | 
				 Режим  | 
				 Пояснения  | 
| 
				 00 01 10  | 
				 Disp=0 Disp=dispL Disp=dispH, dispL  | 
				 Смещения нет 8-битное смещение 16-битное смещение  | 
| 
				 11  | 
				 Регистровая адресация в соответствии с таблицей 19.1  | |
Во всех случаях, связанных с обращением к памяти (mod11), в поле 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.
	Двухоперандная команда с непосредственным
	операндом
Таблица 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. По командам с индексно-базовой адресацией обеспечивается эффективный доступ к элементам памяти, так как этот метод адресации позволяет вычислять в процессе выполнения команды не только базовый (начальный) адрес структуры данных, но и индекс (смещение) элемента внутри структуры.
Относительная адресация с использованием счетчика команд. При этом способе адресации эффективный адрес вычисляется как сумма содержимого счетчика команд и одно- или двухбайтного смещения, содержащегося в теле команды. Данный способ адресации используется только в командах условных и безусловных переходов, командах вызова подпрограмм и командах управления циклом.
