Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Программирование микропроцессорных систем
Система команд МП использует прямую, относительную (посредством базовых
регистров), непосредственную, косвенную и индексную адресацию. В МП могут
выполняться арифметические операции над 8- и 16-разрядными числами со знаком и
без знака, над упакованными и неупакованными двоично-кодированными десятичными
числами. Для простых операций обработки последовательностей данных (цепочек)
имеются однобайтные команды, для которых посредством префикса можно задавать
число повторений. Имеются команды передачи управления двух типов,
осуществляющие переходы соответственно внутри текущего программного сегмента и
к произвольному сегменту, который при этом становится текущим.
Форматы команд
Рис.19.1. Команда с непосредственным операндом
В первом байте команды содержится код опера-ции и два однобитных поля:
направления передачи d и слова w. При d=l осуществляется передача «в», а при 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
000
001
010
011
AL
CL
DL
ВL
AX
CX
DX
BX
100
101
110
111
АН
СН
DH
ВН
SP
ВР
SI
DI
Поле mod задает используемый режим адресации и предназначено для определения
первого операнда команды. Если mod=11, то операнд содержится в регистре,
адресуемом полем reg в соответствии с таблицей 19.1. Во всех остальных случаях
(mod11) первый операнд располагается в памяти. При этом код поля mod задает
способ использования смещений disp в соответствии с таблицей 19.2.
Таблица 19.2
Режим
mod
Пояснения
Смещения нет
8-битное смещение
16-битное смещение
00
01
10
Disp=0
Disp=dispL
Disp=dispH, dispL
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. Двухоперандная команда с непосредственным операндом
Здесь отсутствует необходимость адресации второго операнда, и поэ-тому поле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. Однооперандная команд
Все правила интерпретации полей однооперандных команд такие же, как и для
двухоперандных. Микропроцессор К1810 имеет в своем составе команды
специального формата, которые позволяют сокращать на один байт формат часто
используемых команд. Это команды операции с регистрами и, в частности, с
аккумулятором.
Способы адресации
В таблице 19.5 приведены сведения о способах формирования эффективных
адресов в МП К1810. В МП К1810 реализуются следующие способы адресации:
регистровая непосредственная, прямая, косвенная, базовая, индексная, индексно
- базовая, относительная и некоторые их комбинации.
r/m
Регистр
mod
00
01
10
w=0 w=l
000 (ВХ)+(SI) (BX)+(SI)+dispL (BX)+(SI)+dispH,L AL
001 (BX)+(DI) (BX)+(DI)+dispL (BX)+(DI)+dispH,
L
AX
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. По
командам с индексно-базовой адресацией обеспечивается эффективный доступ к
элементам памяти, так как этот метод адресации позволяет вычислять в процессе
выполнения команды не только базовый (начальный) адрес структуры данных, но и
индекс (смещение) элемента внутри структуры.
Относительная адресация с использованием счетчика команд. При этом способе
адресации эффективный адрес вычисляется как сумма содержимого счетчика команд и
одно- или двухбайтного смещения, содержащегося в теле команды. Данный способ
адресации используется только в командах условных и безусловных переходов,
командах вызова подпрограмм и командах управления циклом.