Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КС-ZAO / Лекции ЦЭВМруский вариант11.doc
Скачиваний:
205
Добавлен:
07.02.2016
Размер:
15.82 Mб
Скачать

§14. Система команд мп типа к580ик80

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

Существуют команды разного назначения. Большинство из них осуществляет пересылку данных, расположенных в памяти или в одном из внутренних регистров МП. Имеются команды, осуществляющие взаимодействие МП с устройствами ввода вывода; есть и другие команды, предназначенные для управления и выполнения некоторых вспомогательных функций МП. Вся совокупность команд, воспринимаемых МП, образует его систему команд.

Раньше мы говорили о том, что команды МП могут иметь различную длину и состоять из 1, 2 или 3 байт. Однако код операции, указывающий на то, что должен делать МП при выполнении данной команды, всегда содержится в ее первом байте и при вводе в МП размещается в регистре команд. Этот код дешифруется и управляет дальнейшими действиями МП. Команда должна указывать МП также адрес или месторасположение данных, подлежащих обработке. Например, МП может получить указания о пересылке содержимого ячейки памяти по заданному адресу в один из внутренних регистров или сдвиге содержимого аккумулятора.

Из приведенных примеров следует, что команда указывает МП не только, что ему необходимо сделать, но и где хранятся и куда должны быть направлены обрабатываемые данные. Итак, любая команда должна состоять из двух частей: первая часть представляет собой код операции, вторая часть называется адресной. Однако, встречаются так называемые безадресные команды. К ним относится, например, команда останова.

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

§14.1 Способы адресации мп

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

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

Например, на рис. 14.1 показана команда прямой загрузки аккумулятора содержимым ячейки памяти, расположенной по шестнадцатеричному адресу 001А.6.

Рис. 14.1. Пример выполнения команды прямой адресации

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

Являясь наиболее естественной и простой для понимания, прямая адресация имеет существенный недостаток: длина команд с прямой адресацией содержит три байта; поэтому для своего выполнения команда требует три машинных цикла, т. е. больших затрат времени.

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

Номера регистровых пар кодируются следующим образом:

ВС—,00 HL—10 DE—01 SP—11

В первом регистре пары всегда хранится старший байт адреса, а во втором младший байт.

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

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

На рис. 14.2 в качестве примера показано выполнение команды косвенной загрузки аккумулятора содержимым ячейки, адрес которой OOlA хранится в регистровой паре DE. Команда косвенной загрузки аккумулятора однобайтная и, кроме кода операции, содержит номер 01 регистровой пары DE. Старшая часть адреса ячейки памяти (00ig) хранится в регистре D, а младшая часть (lA1E)— в регистре Е. Содержимое OOl A1 регистровой пары передается в регистр адреса МП, в результате чего происходит обращение к ячейке памяти по адресу 001А,о. Содержимое ячейки памяти по указанному адресу копируется в аккумулятор, в котором после выполнения команды загрузки окажется двоичное число 11010111. Поскольку при обращении к ячейке памяти ее содержимое не разрушается, оно может использоваться многократно при выполнении других команд.

Рис. 14.2. Пример выполнения команды косвенной адресации

Непосредственная адресация. В командах с непосредственной адресацией данные операнда находятся непосредственно во втором или втором и третьем байтах команды. В первом байте, как обычно, размещается код операции. При использовании такого способа не требуется указание какого-либо адреса памяти. Эти данные берутся непосредственно из команды, куда они заносятся программистом при программировании. В процессе выполнения программы эти данные остаются неизменными, так как вместе с командами размещаются в ПЗУ. Этими данными обычно являются некоторые константы, заранее известные программисту.

Рис. 14.3. Пример выполнения команды непосредственной адресации

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

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

Рис.14.4 . Пример выполнения команды пересылки содержимого регистра В в регистр С

Рис. 14.5. Пример выполнения команды пересылки содержимого ячейки памяти M в регистр C

На рис. 14.4 показан пример выполнения команды пересылки данных из регистра B в регистр С. Три младших разряда 000 однобайтовой команды являются кодом регистра-источника В, а следующие три двоичных разряда представляют код регистра-приемника информации С. После выполнения команды копия содержимого регистра В пересылаются в регистр С. Содержимое регистра B при этом остается неизменным.

Читатель, вероятно, уже обратил внимание на то, что среди кодов регистров отсутствует код 110. Наличие этого кода в регистровой команде означает, что необходимо обратиться не к одному из перечисленных регистров, а к некоторой ячейке памяти M, адрес которой хранится в регистрах H и L, причем старшая часть адреса размещается в регистре Н, а младшаяв регистре L. Команды, в которых наряду с регистровой адресацией используется косвенная, называются командами с косвенно-регистровой адресацией.

На рис. 14.5 дан пример выполнения косвенно-регистровой команды пересылки содержимого ячейки с адресом OOlA, хранящимся в регистрах Н и L, в регистр С, адрес которого 001 указан в команде. Двоичный код 110 в первых трех разрядах команды означает, что источником информации является ячейка М, адрес которой хранится в регистрах Н и L. После завершения команды содержимое ячейки копируется в регистр С.

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

Соседние файлы в папке КС-ZAO