- •4. Программирование микропроцессоров
- •4.1. Запись программ
- •4.2. Методы адресации
- •4.3. Состав команд арифметических действий
- •4.4. Состав команд логических операций
- •4.5. Команды перемещения данных
- •4.6. Команды операций перехода и передачи управления
- •4.7. Команды операций вызова подпрограмм и возврата в основную программу
- •4.8. Команда загрузки в стек и возврата в основную программу
- •4.9. Команды управления
- •Вопросы для самоконтроля
4.1. Запись программ
Существуют различные формы записи программ. Мы рассмотрим только одну, содержащую шесть граф (табл. 4.2), в которой для примера вписана команда АD1.
Обычно сначала заполняют графы 3 и 6. В графе 3 записывают метки - названия, которые даст программист отдельным фрагментам программы. Названия меток произвольные. Например, «Время» или «Выдержка» или буквенные обозначения - Конст 1. В графе 4 против метки пишется мнемоника операции, а в графе 5 записывают операнды и адреса. При записи 16-разрядных чисел их размещают побайтно, слева направо, сначала младшие по разрядам байты, затем старшие.
Одна из форм записи программ Таблица 4.2
Адрес |
Н-код |
Метка |
Мнемокод |
Операция |
Комментарии |
I |
2 |
3 |
4 |
5 |
6 |
8400 |
С6 |
-- |
АDI |
(А)+ 2-» А |
сложить с непосредственным операндом |
Графа 6 предназначена для комментариев – пояснений к тем или иным действиям, выполняемым программой. Комментарии полезны как при отладке, так и при использовании программы.
В графе 1 записывается адрес команды в Н-коде, а в графе 2 шестнадцатеричный код команды и операндов. Полный перечень команд МП К580 приведен в табл. 4.1.
4.2. Методы адресации
Микропроцессору для выполнения команды необходимо сообщить ее адрес, а также адреса операндов, констант и мест для помещения результатов обработки или вывода информации. При составлении программ для МП серии К580 используют адресацию прямую, непосредственную, неявную, косвенную и по содержимому стека.
Прямую адресацию применяют в двух видах команд: при обращении к внешнему ЗУ и к СОЗУ, образованному восемью регистрами общего назначения (РОН) внутри MП.
При обращении к ЗУ адрес операнда, размещенного в основном ЗУ, указывают в байтах команды, следующих за 1-м байтом – байтом КОП (см. рис. 4.2, а). Так как шина адресов содержит 16 разрядов (2 байта), а команды с прямой адресацией занимают три байта, то первый из них - код операции - передается по шине данных. Недостатки команд этого вида - их большая длина и соответственно время исполнения.
При обращении к СОЗУ время исполнения команд значительно меньше. Так как для адресации восьми РОН достаточно трех битов (000 - 111), то их адреса задаются в том же байте, что и код операций. В формате команды адрес регистра - источника информации обозначен буквами SSS, адрес получателя - DDD (см. рис. 4.2, б).
При непосредственной адресации операнды располагают в ячейках ЗУ, следующих непосредственно за ячейками, содержащими код операции (см. рис. 4.2, в и г).
Код операции может содержать адрес одного из регистров РОН (см. рис. 4.2. в) или предусматривать сложение операнда непосредственно с содержимым аккумулятора (см. рис. 4.2, г). При непосредственной адресации операнд является составной частью (вторым байтом) команды.
Неявную адресацию используют при операциях с содержимым регистровой пары НL, например, при увеличении его на единицу (см. рис. 4.2, д), при сложении машинных слов, находящихся а каком-либо из регистров РОН и аккумуляторе (см. рис 4.2, е), при логической операции "Исключающее ИЛИ" с содержимым этих же регистров (см. рис. 4.2, д).
Косвенная адресация состоит в том, что в некоторый регистр или в регистровые пары RP РОН помещаются не сами операнды, а их адреса во внешнем ЗУ (см. рис. 4.2 , ж, з). При этом в однобайтовой команде указывают только адрес регистровой пары, содержащей, в свою очередь, адрес ячейки памяти, где находится искомый операнд. Так, команда LDАХRP (см. рис. 4.2, з) предусматривает загрузку аккумулятора кодовой комбинацией, адрес которой содержится в одной из пар регистров BС, ДЕ или HL. При этом каждая пара регистров задается адресом одного из них (ВС адресам В, ДЕ адресом Д и Н L адресом Н). По команде МОV ВМ (см. рис. 4.2, ж), слово, записанное в ячейке ЗУ, адрес которой находится в регистровой паре НL, поступает в один из регистров блока РОН, определяемый символами DDD. Команда ADDM выполняет сложение операндов, один из которых расположен в аккумуляторе, а второй - указан регистром HL. Составляя программу, предусматривают занесение адреса ячеек с операндами в соответствующую регистровую пару предварительными командами STAX RP или LHLD adr.
Косвенная адресация удобна при работе с массивами данных. Сначала с помощью какой-либо из указанных выше команд в пару регистров - указатель адреса - заносится адрес первой строки таблицы. Затем после обработки первого операнда, командами JNR R или JNR M содержимое указателя увеличивается на единицу и т. д. до завершения обработки табличных данных.
Адресация по содержимому стека осуществляется с помощью регистра SР - указателя стека. Так как стеком для МП К580 является некоторая заданная область в ОЗУ, то регистр SР должен получить начальный адрес стека извне. Для этого в основной программе предусмотрена трехбайтовая команда LХI HL, по которой два байта начального адреса ОЗУ пересылаются из внешнего ЗУ в регистровую пару НL. Перед операциями с использованием стека по команде SРНL код начала заданной области ОЗУ пересылается из пары НL в указатель стека SР. Далее по команде PUSН в ячейку памяти с адресом, на единицу меньшим записанного в указатель стека, заносятся восемь старших, а в ячейку с адресом, меньшим на два - восемь младших разрядов содержимого регистра SР. Для осуществления обратной операции - вызова из стека - прибегают к команде POP. B процессе ее выполнения данные, хранящиеся в стеке, переписываются в заданную пару регистров РОН или в счетчик. Содержимое регистра SР после выполнения каждой команды POP увеличивается на два.
