Как обратиться к данным?
Различный набор операндов определяет тот факт, что команд больше, чем существует операций. Так, например, можно переместить данные из регистра в регистр, из памяти в регистр и наоборот, из одной ячейки памяти в другую.
Для этих действий применима одна операция: ПЕРЕСЛАТЬ ДАННЫЕ, но для приведенного примера команд получается четыре. Три обращения к данным в команде называют режимом адресации. Рассмотрим некоторые, являющиеся типичными для многих МП.
Через регистр.
Наиболее простым режимом адресации являетсярегистровый, когда данные, участвующие в операции, находятся в регистрах или пересылаются между ними.
Но чтобы обратится к регистру, его надо как-то определить. Принято нумеровать регистры. Например, РАк–0, РВ–1, РС–2 и т.д. Для нумерации семи регистров достаточно трех бит, поэтому в одном байте команды можно разместить КОП и номера двух регистров.
-
Содержание
КОП
Регистр ИСТ
Регистр ПЛЧ
Биты
7
6
5
4
3
2
1
0
Чтобы закодировать операцию ПЕРЕСЛАТЬ ДАННЫЕ из регистра В в регистр С, достаточно записать такой байт: 01001010,
где левые биты 01 – КОП,
следующие 3 бита 001 – номер регистра В,
3 последние бита 010 – номер регистра C,
(нумерация в двоичном коде). Команда разместилась всего в одном байте.
Такое построение команды имеет не только минимальную длину, но и выполняется значительно быстрее, и для ее реализации МП достаточно сделать два действия – осуществить цикл выборки команды из памяти и произвести ее выполнение за один шаг. Если цикл выборки присущ всем командам, то цикл выполнения для разных команд может быть длительностью в один или несколько шагов, поэтому минимальное время выполнение имеют команды с регистровой адресацией.
Прямая адресация.
В предыдущем (регистровом) режиме операнды находились в регистрах, номера которых были встроены в байт вместе с кодом операции.
При прямом или абсолютном режиме адресации операнд находится в памяти и адрес памяти указывается во втором и третьем байтах команды.
-
Содержание
КОП
Адрес операнда
№ байта
1 байт
2 байт
3байт
Такой режим применим для вызова подпрограмм.
Последовательность
1 байт – 00000100 2 байт – 00111010 3 байт – 00010101
означает, что надо выполнить операцию ВЫЗОВ ПОДПРГРАММЫ: ее код 04, а сама подпрограмма находится по адресу3А15 (в шестнадцатеричном системе).
Непосредственная адресация.
В этом режиме возможно обращение к данным расположенным в памяти отдельно от программы. Эти данные могут не только считываться, но на их место могут быть записаны новые. Таким образом, здесь имеем дело с переменными. Что же касается констант, то их удобнее хранить непосредственно в программе. При этом требуется меньше времени для выполнения команды, оперирующей с такими данными.
Это происходит потому, что данные следует в программе сразу во втором байте команды (или во 2 и 3, если оно велико). В первом, как всегда, расположен КОП.
-
Содержание
КОП
Регистр
Данное
№ байта
1 байт
2 байт
Такой режим получил названиенепосредственной адресации. Например, ЗАГРУЗКА РЕГИСТРА НЕПОСРЕДСТВЕННАЯ, имеющая код 18 может выглядеть так:
1 байт: 110000012 байт: 00000101
11000 – 18, 001 – номер регистра “B” 0000 – 0, 0101 – 5
По этой команде в регистр В (три правых бита 001 первого байта) загружается число 5, непосредственно находящееся в команде (во втором байте). Длительность команды состоит из цикла выборки команды и одного шага цикла выполнения.
Команды МП могут быть 1-байтные, 2-байтные и 3-байтные. 1 байт соответствует восьми разрядам командного слова.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
воичный код второго и третьего байтов содержит 16-разрядный адрес (А0+А15) ячейки памяти или операнд (данные). Если третий байт не используется, то во втором байте находится только операнд. Двоичное слово, помещаемое в 1 байт, называется кодом операции (КОП). Этот код содержит информацию о типе выполняемой команды и числе байтов в команде (формате команды). Первый байт может также содержать информацию о номере регистра, находящегося в МП. При трехбайтной команде код операции также определяет, что находится в остальных байтах: адрес или операнд.