Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций от мешка 2.doc
Скачиваний:
69
Добавлен:
09.04.2015
Размер:
3.51 Mб
Скачать

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.

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

ADDBA(A) + (B);

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

ACI07A(A) + 07 +C;

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

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

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

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

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

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

ANADA(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.