Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Выч. машины, системы и сети. Пособие. 80С51 v0.26.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
6 Мб
Скачать
☆

3.4.3 Типы операндов

Состав операндов включает в себя операнды четырёх типов: биты, 4-битные цифры, байты и 16-битные слова.

Микроконтроллер имеет 128 программно-управляемых флагов пользователя. Имеется также возможность адресации отдельных битов блока регистров специальных функций и портов. Для адресации битов используется прямой 8-битный адрес (bit). Косвенная адресация битов невозможна.

Четырёхбитные операнды используются только при операциях обмена SWAP и XCHD.

Восьмибитным операндом может быть ячейка памяти программ (ПП) или данных (резидентной (РПД) или внешней (ВПД)), константа (непосредственный операнд), регистры специальных функций, а также порты ввода/вывода. Порты и регистры специальных функций адресуются только прямым способом. Байты памяти могут адресоваться также и косвенным образом через адресные регистры R0, R1, DPTR и PC.

Двухбайтные операнды — это константы и прямые адреса, для представления которых используются второй и третий байты команды.

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

Эта группа представлена 28 командами, их краткое описание приведено в таблице. Здесь и далее в заголовках Т – тип команды (табл. 3.3 ), Б — длина команды в байтах, Ц — время выполнения в машинных циклах.

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

Таблица 3.3

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

Мнемокод

Т

Б

Ц

Операция

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

MOV A, Rn

1

1

1

A  (Rn)

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

MOV A, ad

3

2

1

A  (ad)

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

MOV A, @Ri

1

1

1

A  ((Ri))

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

MOV A, #d

2

2

1

A  #d

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

MOV Rn, A

1

1

1

Rn  (A)

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

MOV Rn, ad

3

2

2

Rn  (ad)

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

MOV Rn, #d

2

2

1

Rn  #d

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

MOV ad, A

3

2

1

ad  (A)

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

MOV ad, Rn

3

2

2

ad  (Rn)

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

MOV add, ads

9

3

2

add  (ads)

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

MOV ad, @Ri

3

2

2

ad  ((Ri))

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

MOV ad, #d

7

3

2

ad  #d

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

MOV @Ri, A

1

1

1

(Ri)  (A)

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

MOV @Ri, ad

3

2

2

(Ri)  (ad)

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

MOV @Ri, #d

2

2

1

(Ri)  #d

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

MOV DPTR, #d16

13

3

2

DPTR  #d16

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

MOVC A, @A+DPTR

1

1

2

A  ((A) +(DPTR))

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

MOVC A, @A+PC

1

1

2

PC  (PC)+1, A  ((A)+(PC))

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

MOVX A, @Ri

1

1

2

A  ((Ri))

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

MOVX A,@DPTR

1

1

2

A  ((DPTR))

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

MOVX @Ri, A

1

1

2

(Ri)  (A)

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

MOVX @DPTR,A

1

1

2

(DPTR)  (A)

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

PUSH ad

3

2

2

SP  (SP) + 1, (SP)  (ad)

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

POP ad

3

2

2

ad  (SP), SP  (SP) - 1

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

XCH A, Rn

1

1

1

(A) ↔ (Rn)

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

XCH A, ad

3

2

1

(A) ↔ (ad)

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

XCH A, @Ri

1

1

1

(A) ↔ ((Ri))

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

XCHD A, @Ri

1

1

1

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

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

Рис. 3.4. Граф команд передачи данных

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

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

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

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

MOV A, PSW

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

MOV A, 0D0h (E5 D0)

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

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