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

В микроконтроллере используются следующие способы адресации данных:

• неявный;

• регистровый;

• непосредственный;

• прямой;

• косвенный.

Неявный способ получил такое название из-за того, что адрес операнда в команде явно не указывается, а подразумевается самим кодом операции (КОП). Например, однобайтная команда

CLR C (сброс флага переноса) представляет собой только КОП. Этот способ адресации позволяет получать команды минимального формата.

Регистровый способ адресации используется для операндов, хранящихся в одном из регистровых банков: регистры общего назначения R0 – R7. Например, команда

DEC R0 (декремент содержимого регистра R0). Этот способ адресации также позволяет получать команды минимального формата.

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

MOV A, #d (загрузить байт в аккумулятор) имеет двухбайтный формат: первый байт КОП и байт данных #d. Например, команда

MOV DPTR, #d16 (загрузить два байта в регистр указатель DPTR) имеет трехбайтный формат: первый байт КОП и два байта данных #d16.

Прямой способ адресации предполагает указание операндов посредством адреса, содержащегося в команде. Адрес может быть одно- или двухбайтовым. Например, команда

ADD A, ad (сложение аккумулятора с содержимым памяти по адресу ad) имеет двухбайтный формат: первый байт КОП и байт адреса ad. Например, команда LJMP ad16 (длинный переход по адресу ad16) имеет трехбайтный формат: первый байт КОП и два байта адреса ad16.

Косвенный способ адресации предполагает указание операндов посредством адреса, содержащегося в регистре либо в регистровой паре. В команде указывается регистр, который в свою очередь указывает адрес операнда. Например, команда

MOV A, @R0 (загрузить в аккумулятор содержимое ячейки внутренней памяти, восьмиразрядный адрес которой содержится в регистре R0). Например, команда

MOV A, @DPTR (загрузить в аккумулятор u1089 содержимое ячейки внешней памяти, адрес которой содержится в двухбайтном регистре-указателе DPTR). Этот способ адресации позволяет уменьшить формат команд и повысить гибкость программирования. Многие команды для указания операндов комбинируют различные способы адресации. Например, команда

MOV @R0, #d (загрузить байт данных #d в ячейку внутренней памяти, восьмиразрядный адрес которой содержится в регистре R0). Здесь используются непосредственный (источник операнда) и косвенный (приемник операнда) способы адресации.

  1. Система команд мк-51. Команды передачи данных.

Эта группа представлена 28 командами, их краткое описание приведено в таблице.

Название команды

Мнемокод

Операция

Пересылка в аккумулятор из регистра (n=0÷7)

MOV A, Rn

(A)  (Rn)

Пересылка в аккумулятор прямоадресуемого байта

MOV A, ad

(A)  (ad)

Пересылка в аккумулятор байта из РПД (i=0,1)

MOV A, @Ri

(A)  ((Ri))

Загрузка в аккумулятор константы

MOV A, #d

(A)  #d

Пересылка в регистр из аккумулятора

MOV Rn, A

(Rn)  (A)

Пересылка в регистр прямоадресуемого байта

MOV Rn, ad

(Rn)  (ad)

Загрузка в регистр константы

MOV Rn, #d

(Rn)  #d

Пересылка по прямому адресу аккумулятора

MOV ad, A

(ad)  (A)

Пересылка по прямому адресу регистра

MOV ad, Rn

(ad)  (Rn)

Пересылка прямоадресуемого байта по прямому адресу

MOV add, ads

(add)  (ads)

Пересылка байта из РПД по прямому адресу

MOV ad, @Ri

(ad)  ((Ri))

Пересылка по прямому адресу константы

MOV ad, #d

(ad)  #d

Пересылка в РПД из аккумулятора

MOV @Ri, A

((Ri))  (A)

Пересылка в РПД прямоадресуемого байта

MOV @Ri, ad

((Ri))  (ad)

Пересылка в РПД константы

MOV @Ri, #d

((Ri))  #d

Загрузка указателя данных

MOV DPTR, #d16

(DPTR)  #d16

Пересылка в аккумулятор байта из ПП

MOVC A, @A+DPTR

A  ((A) +(DPTR))

Пересылка в аккумулятор байта из ПП

MOVC A, @A+PC

(PC)  (PC)+1,

(A)  ((A)+(PC))

Пересылка в аккумулятор байта из ВПД

MOVX A, @Ri

(A)  ((Ri))

Пересылка в аккумулятор байта из расширенной ВПД

MOVX A,@DPTR

(A)  ((DPTR))

Пересылка в ВПД из аккумулятора

MOVX @Ri, A

((Ri))  (A)

Пересылка в расширенную ВПД из аккумулятора

MOVX @DPTR,A

((DPTR))  (A)

Загрузка в стек

PUSH ad

(SP)  (SP) + 1,

((SP))  (ad)

Извлечение из стека

POP ad

(ad)  (SP),

(SP)  (SP) - 1

Обмен аккумулятора с регистром

XCH A, Rn

(A) ↔ (Rn)

Обмен аккумулятора с прямоадресуемым байтом

XCH A, ad

(A) ↔ (ad)

Обмен аккумулятора с байтом из РПД

XCH A, @Ri

(A) ↔ ((Ri))

Обмен младших тетрад аккумулятора и байта РПД

XCHD A, @Ri

(A0…3) ↔((Ri)0…3)

Кратко все способы передачи данных можно представить на графе:

По команде MOV выполняется пересылка данных из второго операнда в первый. Эта команда не имеет доступа ни к внешней памяти данных, ни к памяти программ. Для этих целей предназначены команды M0VX и MOVC соответственно. Первая из них обеспечивает чтение/запись байт из внешней памяти данных, вторая – чтение байт из памяти программ.

По команде XCH выполняется обмен байтами между аккумулятором и ячейкой РПД, а по команде XCHD – обмен младшими тетрадами (битами 0 – 3).

Команды PUSH и РОР предназначены соответственно для записи данных в стек и их чтения из стека. Размер стека ограничен лишь размером резидентной памяти данных. В процессе инициализации микро-ЭВМ после сигнала сброса или при включении питающего напряжения в SP заносится код 07Н. Это означает, что первый элемент стека будет располагаться в ячейке памяти с адресом 08Н.

Группа команд пересылок микроконтроллера имеет следующую особенность - в ней нет специальных команд для работы со специальными регистрами: PSW, таймером, портами ввода-вывода. Доступ к ним, как и к другим регистрам специальных функций, осуществляется заданием соответствующего прямого адреса, т.е. это команды обычных пересылок, в которых вместо адреса можно ставить название соответствующего регистра. Например, чтение PSW в аккумулятор может быть выполнено командой

MOV A, PSW

которая преобразуется Ассемблером к виду

MOV А, 0D0h (E5 D0),

где Е5 – код операции, а D0 – операнд (адрес PSW).

Кроме того, следует отметить, что в микро-ЭВМ аккумулятор имеет два различных имени в зависимости от способа адресации: А – при неявной адресации (например, MOV A, R0) и АСС – при использовании прямого адреса. Первый способ предпочтительнее, однако, не всегда применим.