Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций-5_2.doc
Скачиваний:
44
Добавлен:
27.04.2019
Размер:
4 Мб
Скачать
☆

7.8. Система команд мп 580

Для программирования микроЭВМ на базе МП комплекта КР580 используется 244 команды. Ниже очень коротко будет рассмотрена только часть команд, необходимая для программирования простых задач. Таблицы команд и краткие пояснения к ним можно найти во многих источниках. Наиболее подробные комментарии представлены в журналах "Радио" за 1982 год.

Следует помнить, что любая машинная команда – это двоичное кодовое слово определенной длины. Однако пользоваться двоичными кодами при программировании человеку крайне трудно, поэтому для программирования используют язык ассемблера или просто ассемблер (см. п. 1.4). В этом языке вместо кодовых комбинаций используется мнемоническая форма записи операций, выполняемых в БИС. Каждой команде на языке ассемблера соответствует одна команда на языке кодовых комбинаций. Ниже будут рассмотрены команды именно на языке ассемблера.

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

Все команды МП КР580 целесообразно разделить на группы, например, следующим образом:

  • Пересылки однобайтовые для обмена операндами и результатами между аккумулятором, РОН, памятью, регистрами ППУ.

  • Пересылки двухбайтовые для обмена адресами, операндами, результатами между SP, регистровыми парами, парами ячеек памяти, стеком.

  • Операции в аккумуляторе, которые делятся на арифметические, логические (в аккумуляторе и регистре флагов), сдвиги.

  • Арифметические операции в РОН и памяти.

  • Команды управления.

7.8.1. Пересылки однобайтовые

Команды этой группы не изменяют содержимого регистра признаков РгП (F). Принципы их выполнения иллюстрирует рис. 7.13.

Ниже рассмотрим в качестве примера последовательность из нескольких команд однобайтовых пересылок. Операнды и адреса записаны в шестнадцатеричной системе счисления. Кроме того, здесь и далее предполагается, что аккумулятор, ячейки памяти и регистры первоначально (до записи) содержат 00:

7.8.2. Пересылки двухбайтовые

Команды этой группы не изменяют содержимого РгП (F). Принципы их выполнения иллюстрирует рис. 7.14. Предполагается, что PSW≡(A)(F).

Поясним две команды:

XCHG – это обмен содержимым пар HL и DE, причем (H)  (D), (L)  (E);

XTHL – это обмен содержимым пары HL и верхушки стека. Значение SP не изменяется, при этом (L)  ((SP)) и (H)  ((SP)+1).

Рассмотрим в качестве примера несколько команд двухбайтовых пересылок.

7.8.3. Операции в аккумуляторе

Команды этой группы изменяют содержимое РгП (F) в соответствии с содержимым аккумулятора (рис. 7.15).

Выполняемые операции подразделяются на двуместные и одноместные.

Операции двуместные

В общем случае РОН = ABCDEHL; СКО – символьный код операции. Остальные обозначения аналогичны приведённым на рис. 7.13.

В свою очередь, двуместные операции в аккумуляторе делятся на арифметические и логические.

  • Арифметические операции:

  • сложение содержимого аккумулятора с содержимым РОН, ячеек памяти (косвенная адресация по HL), непосредственным операндом;

  • сложение содержимого аккумулятора и тех же операндов и бита переноса C (часто обозначают CY);

  • вычитание из содержимого аккумулятора содержимого РОН, ячеек памяти (косвенно адресуемых по HL) или непосредственного операнда;

  • вычитание из содержимого аккумулятора тех же операндов и бита переноса;

  • сравнение содержимого аккумулятора с содержимым РОН, ячейками памяти (косвенно адресуемых по HL), непосредственным операндом.

В последнем случае вычисляется разность (A) – (операнд), которая никуда не записывается (т.е. A не изменится), а используется для установки флагов в регистре признаков F.

Рассмотрим несколько примеров:

ADD B A  (A) + (B);

SUB M A  (A) - (ячейка (M));

ACI 07 A  (A) + 07 + C;

CMP D (A) - (D)  установка F, (A) – не изменилось.

  • Логические (побитовые) операции:

  • конъюнкция содержимого аккумулятора с содержимым РОН, ячейки памяти (косвенно адресуемой по HL), непосредственным операндом.

  • дизъюнкция содержимого аккумулятора с содержимым РОН, ячейки памяти (косвенно адресуемой по HL), непосредственным операндом.

  • сложение по модулю 2 с содержимым РОН, ячейки памяти (косвенно адресуемой по HL), с непосредственным операндом.

Рассмотрим несколько примеров:

ANA D A  (A) & (D);

ANI A4 A  (A) & A4;

ORA M A  (A)  (ячейка (M));

XRA E A  (A)  (E);

XRI F4 A  (A)  F4.

Операции одноместные

  • Арифметическая операция:

DAA – десятичная коррекция аккумулятора при работе с двоично-десятичными числами.

  • Логические операции:

CMA – инверсия аккумулятора;

STC – установка бита C (т.е. C  1);

CMC – инверсия бита C (т.е. C C).

Две последние команды выполняются в РгП (F).

  • Сдвиги на 1 разряд:

Примеры реализации сдвиговых команд приведены на рис. 7.16.