Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические указания к учебной практике.docx
Скачиваний:
13
Добавлен:
28.09.2019
Размер:
2.44 Mб
Скачать

3.1. Обозначения в описаниях команд

Для описания операндов или их адресов в поле операнда команды записываются ниже приведенные обозначения в зависимости от способа адресации:

Rn (n = 0, 1,..., 7) – регистр общего назначения;

@Ri (i= 0, 1) – регистр общего назначения, используемый в качестве

регистра косвенного адреса;

ad – адрес прямоадресуемого байта;

ads – адрес прямоадресуемого байта-источника;

add – адрес прямоадресуемого байта-получателя; 

ad11 – 11-разрядный абсолютный адрес перехода; 

ad16 – 16-разрядный абсолютный адрес перехода;

rel – относительный адрес перехода;

#d – непосредственный операнд;

#d16 – непосредственный операнд (2 байта);

bit – адрес прямо адресуемого бита; 

/bit – инверсия прямоадресуемого бита;

А - аккумулятор;

РС – счетчик команд;

DPTR – регистр - указатель данных;

( ) – содержимое ячейки памяти или регистра.

3.2. Команды перемещения данных

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

Основная команда группы MOV (Move – перемещение) осуществляет пересылку данных в пределах адресного пространства РПД и РСФ, с различными способами адресации, и команды MOVX (чтение/запись байта из внешней памяти данных) и MOVC (чтение байт из памяти программ). На рис.5 показаны варианты пересылки данных между различными сегментами адресного пространства МК51 с учетом всех способов адресации, которые отражены в табл. 4.

Рис. 5. Граф перемещения данных в пределах адресного пространства МК51

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

Таблица 4

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

Мнемокод

КОП

Т

Б

Ц

Операция

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

регистра (n=0÷7)

MOV A, Rn

E8 - EF

1

1

1

(A)  (Rn)

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

MOV A, ad

E5

3

2

1

(A)  (ad)

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

MOV A, @Ri

E6 - E7

1

1

1

(A)  ((Ri))

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

MOV A, #d

74

2

2

1

(A)  #d

Пересылка в регистр из

аккумулятора

MOV Rn, A

F8 – FF

1

1

1

(Rn)  (A)

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

MOV Rn, ad

A8 – AF

3

2

2

(Rn)  (ad)

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

MOV Rn, #d

78 – 7F

2

2

1

(Rn)  #d

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

аккумулятора

MOV ad, A

F5

3

2

1

(ad)  (A)

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

регистра

MOV ad, Rn

88 – 8F

3

2

2

(ad)  (Rn)

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

байта по прямому адресу

MOV add, ads

85

9

3

2

(add)  (ads)

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

прямому адресу

MOV ad, @Ri

86 – 87

3

2

2

(ad)  ((Ri))

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

константы

MOV ad, #d

75

7

3

2

(ad)  #d

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

MOV @Ri, A

F6 – F7

1

1

1

((Ri))  (A)

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

MOV @Ri, ad

66 – 67

3

2

2

((Ri))  (ad)

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

MOV @Ri, #d

76 – 77

2

2

1

((Ri))  #d

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

MOV DPTR, #d16

90

13

3

2

(DPTR)  #d16

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

из ПП

MOVC A, @A+DPTR

93

1

1

2

 ((A) +(DPTR))

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

из ПП

MOVC A, @A+PC

83

1

1

2

(PC)  (PC)+1,

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

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

из ВПД

MOVX A, @Ri

E2 – E3

1

1

2

(A)  ((Ri))

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

MOVX A,@DPTR

E0

1

1

2

(A)  ((DPTR))

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

MOVX @Ri, A

F2 – F3

1

1

2

((Ri))  (A)

Пересылка в расширенную ВПД

из аккумулятора

MOVX @DPTR,A

F0

1

1

2

((DPTR))  (A)

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

PUSH ad

C0

3

2

2

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

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

POP ad

D0

3

2

2

(ad)  (SP),

(SP)  (SP) - 1

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

XCH A, Rn

C8 – CF

1

1

1

(A) ↔ (Rn)

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

XCH A, ad

C5

3

2

1

(A) ↔ (ad)

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

XCH A, @Ri

C6 –C7

1

1

1

(A) ↔ ((Ri))

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

XCHD A, @Ri

D6 – D7

1

1

1

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

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

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

MOV A, PSW, которая преобразуется ассемблером к виду

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

Кроме того, следует отметить, что в микроЭВМ аккумулятор имеет два различных имени в зависимости от способа адресации:

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