Система программирования микропроцессора серии КР580
На основе МП серии К580 построены малоразрядные микроЭВМ СМ1800, программируемые контроллеры для логического (циклического) управления и программируемые регуляторы для динамического и технологического управления в СЧПУ, которые используются для управления автономными объектами и в качестве фрагментов систем управления ГПС.
Изучив систему программирования МП серии К580, можно легко освоить и программирование других МП и микроЭВМ, так как базовые принципы программирования для всех МП устройств одинаковы.
Способы адресации
Для МП К580 различают четыре вида адресации: непосредственную, прямую, регистровую и косвенную.
При непосредственной адресации необходимые данные содержит сама команда во втором и третьем (если он есть) байтах команды, поэтому она является самой экономичной по объему занимаемой памяти и скорости выполнения операций (рисунок 10).
| 1 байт | 2 байт | 3 байт |
| КО | Данные | Данные |
| <В1> | <В2> | <ВЗ> |
Рисунок 10 – Непосредственная адресация
При прямой адресации (рисунок 11) данные содержатся в ячейке ОЗУ, а во втором и третьем байтах команды указывается ее шестнадцатиразрядный адрес (в байте В2 - младшие 8 разрядов адреса, в байте ВЗ - старшие 8 разрядов адреса).
| 1 байт | 2 байт | 3 байт | ||
| КО | Данные | Данные | ||
| <В1> | <В2> | <ВЗ> | ||
ОЗУ
| ||||
Данные
| ||||
Рисунок 11 – Прямая адресация
При регистровой адресации данные хранятся в РОН, а в команде указываются коды этих регистров (разряды 0-2 и 3-5 для пары регистров). В разрядах 6,7 указывается код операции КО. Команда однобайтовая (рис. 12).
КО Коды РОН
| |
|
| РОН | |
Данные
| Данные |
Рисунок 12 – Регистровая адресация
При косвенной адресации данные содержатся в ячейках ОЗУ, шестнадцатиразрядные адреса этих ячеек – в паре РОН, а их коды – в команде. Старший бит адреса памяти записан в первом РОН пары, младший – во втором регистре пары РОН. Обычно используется пара регистров HL, иногда ВС и DE. Команда однобайтовая (рис. 13).
КО Коды РОН
| |
|
| РОН | |
| В | С |
| В | Е |
Адрес
| Адрес |
| H | L |
| ОЗУ |
Данные
|
Рисунок 13 – Косвенная адресация
Таблица 6- Данные косвенной адресации
| Регистр | Код | Пара регистров | Код |
| А | ВС | ||
| В | DE | ||
| С | HL | ||
| D | SP (стек) | ||
| Е | 01l | ||
| Н | |||
| L | |||
| М (ОЗУ) |
Система команд
По функциональному признаку все команды могут быть разбиты на пять групп: команды пересылки данных, логические команды, арифметические команды, команды переходов, команды работы со стеком, ввода-вывода и управления МП.
Список основных команд приведен в таблице 7. Полный список команд можно найти в специальной литературе.
Таблица 7 – Список основных команд
| Группа команд | Мнемокод команд | Восьмеричный код команды | Содержание команды | Число байт | Признаки результата операций | ||||
| Z | S | P | C | AC | |||||
| Команды пересылки | MOV D,S | 1DS | (D)(S) | - | - | - | - | - | |
| MVI D,d | 0D6 | (D1)d | - | - | - | - | - | ||
| LXI rp, d | 0D11 | (D1)D | - | - | - | - | - | ||
| LDA a | (A) (a) | - | - | - | - | - | |||
| STA a | (a) (A) | - | - | - | - | - | |||
| LHLD a | L(a), H(a+1) | - | - | - | - | - | |||
| SHLD a | (a)L, (a+1) (H) | - | - | - | - | - | |||
| LDAX rp | 0D22 | A(rp) | - | - | - | - | - | ||
| STAX rp | 0D23 | ((rp))A | - | - | - | - | - | ||
| XCHG | (H)<->(D), (L)<->(E) | - | - | - | - | - | |||
| Арифметические команды | ADD S | 20S | (A) (A)+(S) | + | + | + | + | + | |
| ADI d | (A) (A)+d | + | + | + | + | + | |||
| ADC S | 21S | (A) (A)+(S)+(C) | + | + | + | + | + | ||
| ACI d | (A) (A)+d+(C) | + | + | + | + | + | |||
| DAD rp | 0D41 | (HL) (HL)+(rp) | - | - | - | + | - | ||
| SUB S | 22S | (A) (A)-(S) | + | + | + | + | + | ||
| SUI d | (A) (A)-d | + | + | + | + | + | |||
| SBB S | 23S | (A) (A)-(S)-(C) | + | + | + | + | + | ||
| SBI d | (A) (A)-d-(C) | + | + | + | + | + | |||
| INR D | 0S4 | (D) (D)+1 | + | + | + | + | + | ||
| INX rp | 0D53 | (rp) (rp)+1 | - | - | - | - | - | ||
| DRC D | 0D5 | (D) (D)-1 | + | + | + | - | + | ||
| DRC rp | 0D25 | (rp) (rp)-1 | - | - | - | - | - | ||
| DAA | Десятичная коррекция | + | + | + | + | + |
Продолжение таблицы 7
| Группа команд | Мнемокод команд | Восьмеричный код команды | Содержание команды | Число байт | Признаки результата операций | ||||
| Z | S | P | C | AC | |||||
| Логические команды | ANA S | 24S | (A)(A)^(S) | + | + | + | + | ||
| ANI d | (A)(A)^d | + | + | + | + | ||||
| XRA S | 25S | (A)(A)Å(S) | + | + | + | ||||
| XRI d | (A)(A) Åd | + | + | + | |||||
| ORA S | 26S | (A)(A)V(S) | + | + | + | ||||
| ORI d | (A)(A)Vd | + | + | + | |||||
| CMP s | 27S | (A)-(S) | + | + | + | + | + | ||
| CMI d | (A)-d | + | + | + | + | + | |||
| RLC | (An+1) (An), (A0) (A7), (C) (A7) | - | - | - | + | - | |||
| RRC | (An+1) (An), (AT) (A0) | - | - | - | + | - | |||
| RAL | (An) (An+1), (C) (A7), (A0) (C), | - | - | - | + | - | |||
| RAR | (An+1) (An), (C) (A0), (A7) (C), | - | - | - | + | - | |||
| STC | (C) 1 | - | - | - | - | ||||
| CMC | (C) (OC) | - | - | - | + | - | |||
| CMA | (A) (OA) | - | - | - | - | - | |||
| Команды переходов | JMP a | (PC) a | - | - | - | - | - | ||
| Jc a | (PC) a, если условие ССС в поле С истинно | - | - | - | - | - | |||
| CALL a | (РС) а | - | - | - | - | - | |||
| Cc a | (РС) а, если условие ССС в поле С истинно | - | - | - | - | - | |||
| RET | Возврат из подпрограммы | - | - | - | - | - | |||
| Rc | Возврат из одпрограммы, если условие ССС в поле С истинно | - | - | - | - | - | |||
| PCHL | (PC) (H,L) | - | - | - | - | - | |||
| RST n | 3n7 | Команда повторного старта | - | - | - | - | - | ||
| Команды ввода-вывода | IN P | (A) (P) | - | - | - | - | - | ||
| OUT P | (P) (A) | - | - | - | - | - | |||
| PUSH rp | 3D65 | ((SP)) (rp) | - | - | - | - | - | ||
| PUSH PSW | ((SP)) (A) u (Z,S,P,C,AC) | - | - | - | - | - | |||
| POP rp | 3D61 | (rp) ((SP)) | - | - | - | - | - | ||
| POP PSW | (Z,S,P,C,AC) u (A) ((SP)) | + | + | + | + | + | |||
| XTHL | (HL)<->((SP)) | - | - | - | - | - | |||
| SPHL | (SP)<->(HL) | - | - | - | - | - | |||
| E1 | Разрешение прерывания | - | - | - | - | - | |||
| D1 | Запрещение прерывания | - | - | - | - | - | |||
| HLT | Остановка | - | - | - | - | - | |||
| NOP | Нет операции | - | - | - | - | - |
В таблице 7 приняты следующие обозначения:
rp – регистровая пара;
S – регистр-источник (source);
D – регистр-приемник (destination). Если на позиции S или D стоит 0,1,2,3,4, 5,6,7, то регистрами являются РОН В, С, D, Е, Н, L и М, А соответственно, где М – регистр в памяти (memory), A – аккумулятор;
d – (data) - восьми или шестнадцатибитное данное;
а – (address) - шестнадцатибитный адрес памяти;
(...) – содержимое ячейки памяти РОН МП;
(SP) – содержимое указателя стековой памяти;
((SP)) – содержимое ячейки стековой памяти;
D1 = 0, 2, 4, 6 для соответственных регистров РОН В, D, Н, SP;
D2 = 1, 3 для пар регистров ВС, DE;
D3 = 0, 2 для пар регистров ВС, DE;
D4 = 1, 3, 5, 7 для пар регистров ВС, DE, HL, SP;
D5 = 0, 2, 4, 6 для регистров В, D, Н, HL;
D6 = 0, 2, 4 для пар регистров ВС, DE, HL;
n – номер команды повторного старта, n равно от 0 до 7;
р – (port) - 8-битный адрес ПУ;
С – (condition) - условие;
ССС – трехбитный код признака, используемого в командах передачи (табл.8). Цифры в графе 3, записанные в восьмеричном коде, в программе должны представляться в двоичном коде, т.е. 1=001, 2=010, З=011,…,7=111. Символы V, ^, О, Å - логические операции И, ИЛИ, НЕ, исключающее ИЛИ, AC - перенос 1 из младшей тетрады при сложении, «+» - формируется по результату операции, «-» - не изменяется, «О» -очищается, «1» - устанавливается.
Таблица 8
| Код | Признак С | Значение признаков |
| ССС | ||
| NZ | Z=0, результат не равен 0 | |
| Z | Z=1, результат равен 0 | |
| NC | С=0, нет переноса | |
| Oil | С | С=1, есть перенос |
| РО | Р=0, результат четный | |
| РЕ | Р=1, результат нечетный | |
| Р | S=0, результат положительный | |
| М | S=1, результат отрицательный |
Команды пересылки обеспечивают пересылку данных между регистрами или памятью и регистрами, признаков результата не формируют.
Пример 1.
MOV D,S - команда пересылает данные из регистра S - источника в регистр D - приемника.
В качестве S могут выступать следующие РОН: В, С, D, Н, L или аккумулятор А. Формат команды приведен на рисунке 12.
| <B1> | D | D | D | S | S | S | MOV D,S |
а)
| <B1> | S | S | S | MOV M,S |
KO (M) (S)
в)
Рисунок 14 – Форматы команд MOV D,S, и MOV M,S
Если D и S поставить коды РОН из таблицы 6, получится, например, команда 01 010 001, где 01 – код команды из таблицы 7. (IDS) – 1 в двоичном коде соответствует 01, 010 – код регистра-приемника D, соответствующий РОН D (см. табл. 6), 001 – код регистра источника S, соответствующий РОН С, т.е. восьмеричный код команды 121. Таким образом, по данной команде произойдет пересылка данных из регистра С в регистр D, при этом содержимое С сохраняется.
Пример 2.
MOV MS – команда пересылает данные из регистра S (которым могут быть А, В, С, D, H, L) в ячейку памяти М (код в таблице 6), указанной в регистровой паре HL (рис. 14).
Пример 3.
MOV D,M – команда пересылает данные из ячейки памяти М адрес которой указан в HL, в регистр D, т.е. А и РОН В, С, D, H, L (рисунок 15).
| <B1> | D | D | D | MOV D,M |
KO (D) (M)
Рисунок 15 – Формат команды MOV D,M
Арифметические команды служат для выполнения арифметических операций над данными, хранящимися в РОН и ячейках памяти М, при этом она оказывает влияние на состояние признаков ССС (таблица 8), появляющихся в регистрах специального флагового регистра ФР – регистра состояний. Признаки ССС формируются АЛУ.
Пример 1.
ADD S – команда выполняет сложение содержимого регистра S с содержимым регистра-аккумулятора А, результат помещается в А.
В кодах команда записывается как, например, 10 000 001, где 10 000 – код ADD из таблицы 7 (20S) – 2 в двоичной системе соответствует 10, 0 соответствует 000, вместо S стоит 001, т.е. регистр С (рис. 16). Следовательно, при выполнении команды ADD С содержимое С прибавляется к содержимому А. Восьмеричный код команды – 201.
| <B1> | S | S | S | ADD S |
KO (S)
(A)+(S)®(A)
Рисунок 16 – Формат команды ADD S
Пример. 2.
SUB S – вычитание (S) из (А) с записью результата в А (рисунок 17).
Команда 10 010 01l в соответствии с кодом из табл. 7 (22S) содержит 10 0102 = 22 – код вычитания, 011г = 3 (РОН Е), т.е. по команде SUB Е из (А) вычитается (Е). Восьмеричный код 223.
| <B1> | S | S | S | SUB S |

KO (S)
(A)-(S)®(A)
Рисунок 17 – Формат команды SUB S Пример 3.
SUI2 – вычитание содержимого второго байта В2 из А и помещение результата в А (рис. 18). Команда двухбайтовая.
| <B1> | SUI a |

KO
(A)-(<B2>)®(A)
| <B2> | Данные S |
Рисунок 18 – Формат команды SUI а
Логические команды реализуют операции И, ИЛИ, НЕ, исключающее ИЛИ, сдвиги влево и вправо и другие команды с формированием признаков ССС.
Операнды хранятся в РОН или ячейках ОЗУ, результат помещается в аккумулятор.
Пример 1.
ANA S – команда выполняет операцию поразрядного логического И над (S) и (А). Например, команда 10 100 100 поразрядно логически умножает (А) и (H), восьмеричный код для команды ANA H -244(рис. 19).
| <B1> | S | S | S | ANA S |

KO (S)
(A) & (S)®(A)
Рисунок 19 – Формат команды ANA S
Пример 2.
ANI2 выполняет поразрядно операцию И над содержимым второго байта В2 и (А). Команда двухбайтовая, ее код 346, т.е. в двоичной форме 11 100 110(см. рис. 20)
| <B1> | ANI a |

KO
(A) & (<B2>)®(A)
| <B2> | Данные S |
Рисунок 20 – Формат команды ANI а
Пример 3.
ORA S аналогична команде ANA S, но выполняет операцию поразрядного логического ИЛИ, т.е. (A)V(S)® (A), код 26S.
Команды переходов служат для организации правильной последовательности выполнения программы, включают команды условного и безусловного переходов, вызова подпрограммы, возвращения в основную программу и др. Все команды на признаки ССС не влияют. Команды безусловного перехода выполняют специальные операции над содержимым СК. Команды условного перехода обеспечивают ветвления по анализу признаков ССС (табл. 8).
Пример 1.
JMP 2 3 – трехбайтовая команда передачи управления по адресу, содержащемуся в В2 и ВЗ путем записи содержимого В2 и ВЗ в PC (PC - шестнадцатиразрядный регистр). Код команды 303 (рис. 21).
| <B1> | КО |
| <B2> | Младшие разряды адреса S | JMP a |
| <B3> | Старшие разряды адреса S |
(ВЗ) (В2) -> (PC), где PC - счетчик команд
Рисунок 21 – Формат команды JMP a
Пример 2.
CALL a – команда безусловного перехода к подпрограмме, трехбайтовая (рис. 22). Восемь старших разрядов адреса следующей команды пересылаются в ячейку памяти, адрес которой на один меньше содержимого указателя стека SP. Восемь младших разрядов адреса следующей команды пересылаются в ячейку памяти, адрес которой на два меньше (SP). Содержимое SP уменьшается на два. Управление передается команде, адрес которой расположен в В2 и ВЗ команды CALL:
((SP) - 1) (РСН);
((SP) - 2) (PCL);
(SP) ((SP) - 2);
(PC) (ВЗ) (В2).
Код команды – 315.
| <B1> |
| <B2> | Младшие разряды адреса S |
| <B3> | Старшие разряды адреса S |
Рисунок 22 – Формат команды CALL a
Пример 3.
RET – однобайтовая команда с кодом 311, по ней содержимое указателя стека увеличивается на два, содержимое ячейки памяти по адресу, хранящемуся в SP, пересылается в СК на место младших восьми разрядов, содержимое ячейки памяти, по адресу на один большему, чем содержимое SP, пересылается в СК на место старших восьми разрядов.
(PCL) (SP);
(РСН) ((SP) + 1);
(SP) ((SP) + 2).
Таким образом, возврат в основную программу происходит при обращении к байту команды, следующему за байтом, используемым командой CALL.
Команды управления, ввода-вывода и работы со стеком служат для управления работой МП, портами ввода-вывода и стеком; на флаги ССС влияния не оказывают.
Пример 1.
XTHL меняет содержимое регистра L на содержимое ячейки памяти по адресу, содержащемуся в указателе стека SP, и наоборот. Содержимое РОН Н меняется на содержимое ячейки памяти по адресу, на один большему, чем (SP) и наоборот. Команда однобайтовая, код -343.
(L)® (SP);
(Н) ® ((SP) + 1).
Пример 2.
IN <B2>, OUT <B2> - двухбайтовые команды, служат для ввода данных от входного порта в А и вывода данных из А в выходной порт, соответственно, имеют коды 333 и 323. Второй байт обеих команд отведен под адрес соответствующего входного и выходного портов (рисунок 23).
| <B1> |
IN p
| <B2> | Адреса порта S |
(А) (Данные)
Рисунок 23 – Формат команд IN и OUT
Дата добавления: 2019-02-07; просмотров: 1204;

ОЗУ
Данные
Данные
Адрес
Данные