Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МП устройства СУ / Конспект лекций (дополнительный, обновленный).doc
Скачиваний:
127
Добавлен:
19.03.2015
Размер:
552.45 Кб
Скачать

13.9. Типовая система команд микропроцессора.

Поскольку микропроцессор воспринимает только двоичную форму информации, то команды должны быть представлены в виде двоичных кодов. Такая форма представления команд называется машинным языком или машинным кодом. Для человека машинные коды из нулей и единиц неудобны, поскольку их трудно запомнить и отождествить с фактическим назначением команды, а в самих машинных кодах легко перепутать 0 и 1. Для более краткой записи двоичных чисел используются также восьмеричная и шестнадцатеричная формы представления информации. Однако и в этом случае остается нерешенной основная проблема - что означает каждая команда, выраженная в подобной форме. По этой причине при описании команд используются условные обозначения в виде мнемонических названий. Мнемоническое название (мнемоника) команды представляет собой сокращение от английских слов, описывающих операцию, выполняемую командой. Мнемонический код команды позволяет легче запомнить ее функцию и значительно упрощает написание программ. Например, команда возврата из подпрограммы по которой хранящийся в стеке адрес возврата пересылается обратно в счетчик команд, имеет обозначение RET (от return – вернуться).

Каждый микропроцессор характеризуется своей системой команд. Система команд - это полный перечень тех операций, которые способен производить микропроцессор. Управляемый этими командами микропроцессор выполняет очень простые действия, такие, как элементарные арифметические и логические операции, операции пересылки данных, сравнения двух величин и другие. Однако, составив программу из последовательности таких команд, можно запрограммировать выполнение алгоритма любой сложности. Обычно все команды в системе команд объединяются в группы по функциональному назначению. Например, выделяют команды пересылки кодов, команды логических и арифметических действий, команды передачи управления и ряд команд других групп.

Условное обозначение команды помимо мнемоники может также включать названия регистров r или регистровых пар rp, если их наличие предусмотрено типом микропроцессора. При описании системы команд будем придерживаться принципа обобщенности изложения материала и автономности мнемоник и условных обозначений. Это значит, что представленные в данном разделе команды и их мнемоники абстрагированы от какого-либо конкретного микропроцессора, а отражают общие принципы построения систем команд большинства микропроцессоров и микроконтроллеров. Отметим лишь то, что приведенные в качестве примера команды в большей степени характерны для восьмиразрядных микропроцессоров и микроконтроллеров с аккумуляторной архитектурой. Это значит, что в большинстве команд для сохранения результата используется аккумулятор. Также он используется и в качестве источника одного из операндов арифметических или логических команд.

Воспользуемся для примера гипотетическими, не привязанными к конкретному типу микропроцессора, обозначениями регистров - аккумулятором А и регистрами общего назначения В и С. Безусловно, в реальных микропроцессорах количество регистров общего назначения может быть значительно больше и они могут иметь иные обозначения. Будем считать, что восьмиразрядные регистры B и C могут объединяться в шестнадцатиразрядную регистровую пару BC. Эта же регистровая пара будет выполнять функцию указателя адреса данных при косвенной адресации. При описании системы команд восьмиразрядный операнд будем условно обозначать data, а шестнадцатиразрядный операнд – data16. Номер (адрес) порта обозначим как port, а адрес ячейки памяти – как addr. При использовании команд в программе вместо обозначений data, data16, port и addr должны быть подставлены конкретные числовые значения операндов и адресов.

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

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

Наряду с описанными выше условными обозначений приведем прочие обозначения, используемые при описании нашей системы команд:

  • SP - указатель стека;

  • PC - счетчик команд;

  • ЯП – ячейка памяти;

  • ( ) - содержимое регистра (регистровой пары), указанного внутри скобок;

  • [ ] - содержимое ячейки памяти (порта), адрес которой указан внутри скобок;

  •  - направление передачи;

  • , ,  - логическии операции “ИЛИ”, “И”, “ИСКЛЮЧАЮЩЕЕ ИЛИ” соответственно;

  • -CON - обобщенное обозначение, заменяемое на мнемонику условия перехода. Договоримся использовать следующие мнемонические обозначения этих условий: NZ (no zero) - ненулевой результат (флаг ZF=0); Z (zero) - нулевой результат (флаг ZF=1); NC (no carry) - отсутствие переноса (флаг CF=0); C (carry) - наличие переноса (флаг СF=1); PO (parity odd) - нечетное число единиц в коде результата (флаг PF=0); PE (parity even) - четное число единиц в коде результата (флаг PF=1); P (plus) - неотрицательный результат (флаг SF=0); M (minus) - отрицательный результат (флаг SF=1).

Таблица 13.1. Типовая система команд.

Группа команд

Условное бозначение

Описание команды

Команды пересылки

Данных

1. MOV r1,r2

(r1)  (r2)

2. MOV r,M

(r)  [BC]

3. MOV M,r

[BC]  (r)

4. LDI r,data

(r)  КОНСТАНТА

5. LDI M,data

[BC]  КОНСТАНТА

6. LDRP rp,data16

(rp)  КОНСТАНТА

7. LDS A,addr

(A)  [АДРЕС ЯП]

8. LDX A,rp

(A)  [РЕГ.ПАРА]

9. STS addr,A

[АДРЕС ЯП]  (A)

10. STX rp,A

[РЕГ.ПАРА]  (A)

11. PUSH r

[SP]  (r)

12. POP r

(r)  [SP]

13. IN A,port

(A)  [АДРЕС ПОРТА]

14. OUT port,A

[АДРЕС ПОРТА]  (A)

Команды выполнения арифметических операций

1. ADD A,r

(A)  (A) + (r)

2. ADC A,r

(A)  (A) + (r) + (СF)

3. ADD A,M

(A)  (A) + [BC]

4. ADC A,M

(A)  (A) + [BC] + (СF)

5. ADDI A,data

(A)  (A) + КОНСТАНТА

6. ADCI A,data

(A)  (A) + КОНСТАНТА + (СF)

7. SUB A,r

(A)  (A) - (r)

8. SBC A,r

(A)  (A) - (r) - (СF)

9. SUB A,M

(A)  (A) – [BC]

10. SBC A,M

(A)  (A) – [BC] - (СF)

11. SUBI A,data

(A)  (A) – КОНСТАНТА

12. SBCI A,data

(A)  (A) – КОНСТАНТА - (СF)

13. MUL A,B

(B)15-8 (А)7-0  (А) х (B)

14. DIV A,B

(A)15-8 (B)7-0  (А) / (B)

15. DA A

Десятичная коррекция сложения

16. INC r

(r)  (r) + 1

17. DEC r

(r)  (r) – 1

18. INC M

[BC]  [BC] + 1

19. DEC M

[BC]  [BC] – 1

20. INRP rp

(rp)  (rp) + 1

21. DCRP rp

(rp)  (rp) – 1

Команды выполнения логических операций

1. AND A,r

(A)  (A)  (r)

2. AND A,M

(A)  (A)  [BC]

3. ANDI A,data

(A)  (A)  КОНСТАНТА

4. OR A,r

(A)  (A)  (r)

5. OR A,M

(A)  (A)  [BC]

6. ORI A,data

(A)  (A)  КОНСТАНТА

7. XOR A,r

(A)  (A)  (r)

8. XOR A,M

(A)  (A)  [BC]

9. XORI A,data

(A)  (A)  КОНСТАНТА

10. CMP A,r

(A) – (r)

11. CMP A,M

(A) – [BC]

12. CMPI A,data

(A) – КОНСТАНТА

13. CM A

(A)  ()

14. RLC A

(ai+1)  (ai)

(a0)  (CF)

(CF)  (an)

15. RRC A

(ai)  (ai+1)

(an)  (CF)

(CF)  (a0)

16. RAL A

(ai+1)  (ai)

(a0)  (an)

(CF)  (an)

17. RAR A

(ai)  (ai+1)

(an)  (a0)

(CF)  (a0)

18. SAL A

(ai+1)  (ai)

(a0)  0

(CF)  (an)

19. SAR A

(ai)  (ai+1)

(an)  (an)

(CF)  (a0)

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

1. JMP addr

(PC)  АДРЕС ПЕРЕХОДА

2. J-CON addr

(PC)  АДРЕС ПЕРЕХОДА

3. CALL addr

[SP]  (PC)

(PC)  АДРЕС ПОДПРОГРАММЫ

4. RET

(PC)  [SP]

Команды специальные

1. EI

Разрешить прерывание

2. DI

Запретить прерывание

3. NOP

(PC)  (PC) + 1

4. HLT

Останов