Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МПС / МПС лек / Программирование МП и мкЭВМ.doc
Скачиваний:
15
Добавлен:
28.03.2015
Размер:
109.57 Кб
Скачать

Как обратиться к данным?

Различный набор операндов определяет тот факт, что команд больше, чем существует операций. Так, например, можно переместить данные из регистра в регистр, из памяти в регистр и наоборот, из одной ячейки памяти в другую.

Для этих действий применима одна операция: ПЕРЕСЛАТЬ ДАННЫЕ, но для приведенного примера команд получается четыре. Три обращения к данным в команде называют режимом адресации. Рассмотрим некоторые, являющиеся типичными для многих МП.

  1. Через регистр.

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

Но чтобы обратится к регистру, его надо как-то определить. Принято нумеровать регистры. Например, РАк–0, РВ–1, РС–2 и т.д. Для нумерации семи регистров достаточно трех бит, поэтому в одном байте команды можно разместить КОП и номера двух регистров.

Содержание

КОП

Регистр ИСТ

Регистр ПЛЧ

Биты

7

6

5

4

3

2

1

0

Чтобы закодировать операцию ПЕРЕСЛАТЬ ДАННЫЕ из регистра В в регистр С, достаточно записать такой байт: 01001010,

где левые биты 01 – КОП,

следующие 3 бита 001 – номер регистра В,

3 последние бита 010 – номер регистра C,

(нумерация в двоичном коде). Команда разместилась всего в одном байте.

Такое построение команды имеет не только минимальную длину, но и выполняется значительно быстрее, и для ее реализации МП достаточно сделать два действия – осуществить цикл выборки команды из памяти и произвести ее выполнение за один шаг. Если цикл выборки присущ всем командам, то цикл выполнения для разных команд может быть длительностью в один или несколько шагов, поэтому минимальное время выполнение имеют команды с регистровой адресацией.

  1. Прямая адресация.

В предыдущем (регистровом) режиме операнды находились в регистрах, номера которых были встроены в байт вместе с кодом операции.

При прямом или абсолютном режиме адресации операнд находится в памяти и адрес памяти указывается во втором и третьем байтах команды.

Содержание

КОП

Адрес операнда

№ байта

1 байт

2 байт

3байт

Такой режим применим для вызова подпрограмм.

Последовательность

1 байт – 00000100 2 байт – 00111010 3 байт – 00010101

означает, что надо выполнить операцию ВЫЗОВ ПОДПРГРАММЫ: ее код 04, а сама подпрограмма находится по адресу3А15 (в шестнадцатеричном системе).

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

В этом режиме возможно обращение к данным расположенным в памяти отдельно от программы. Эти данные могут не только считываться, но на их место могут быть записаны новые. Таким образом, здесь имеем дело с переменными. Что же касается констант, то их удобнее хранить непосредственно в программе. При этом требуется меньше времени для выполнения команды, оперирующей с такими данными.

Это происходит потому, что данные следует в программе сразу во втором байте команды (или во 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 байт, называется кодом операции (КОП). Этот код содержит информацию о типе выполняемой команды и числе байтов в команде (формате команды). Первый байт может также содержать информацию о номере регистра, находящегося в МП. При трехбайтной команде код операции также определяет, что находится в остальных байтах: адрес или операнд.