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

Oбозначения, используемые при описании команд.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Название команды Мнемокод КОП Т Б Ц Операция
Пересылка в аккумулятор из регистра (n=0÷7) MOV A, Rn 11101rrr       (A) ¬ (Rn)
Пересылка в аккумулятор прямоадресуемого байта MOV A, ad         (A) ¬ (ad)
Пересылка в аккумулятор байта из РПД (i=0,1) MOV A, @Ri 1110011i       (A) ¬ ((Ri))
Загрузка в аккумулятор константы MOV A, #d         (A) ¬ #d
Пересылка в регистр из аккумулятора MOV Rn, A 11111rrr       (Rn) ¬ (A)
Пересылка в регистр прямоадресуемого байта MOV Rn, ad 10101rrr       (Rn) ¬ (ad)
Загрузка в регистр константы MOV Rn, #d 01111rrr       (Rn) ¬ #d
Пересылка по прямому адресу аккумулятора MOV ad, A         (ad) ¬ (A)
Пересылка по прямому адресу регистра MOV ad, Rn 10001rrr       (ad) ¬ (Rn)
Пересылка прямоадресуемого байта по прямому адресу MOV add, ads         (add) ¬ (ads)
Пересылка байта из РПД по прямому адресу MOV ad, @Ri 1000011i       (ad) ¬ ((Ri))
Пересылка по прямому адресу константы MOV ad, #d         (ad) ¬ #d
Пересылка в РПД из аккумулятора MOV @Ri, A 1111011i       ((Ri)) ¬ (A)
Пересылка в РПД прямоадресуемого байта MOV @Ri, ad 0110011i       ((Ri)) ¬ (ad)
Пересылка в РПД константы MOV @Ri, #d 0111011i       ((Ri)) ¬ #d
Загрузка указателя данных MOV DPTR, #d16         (DPTR) ¬ #d16
Пересылка в аккумулятор байта из ПП MOVC A, @A+DPTR         ¬ ((A) +(DPTR))
Пересылка в аккумулятор байта из ПП MOVC A, @A+PC         (PC) ¬ (PC)+1, (A) ¬ ((A)+(PC))
Пересылка в аккумулятор байта из ВПД MOVX A, @Ri 1110001i       (A) ¬ ((Ri))
Пересылка в аккумулятор байта из расширенной ВПД MOVX A,@DPTR         (A) ¬ ((DPTR))
Пересылка в ВПД из аккумулятора MOVX @Ri, A 1111001i       ((Ri)) ¬ (A)
Пересылка в расширенную ВПД из аккумулятора MOVX @DPTR,A         ((DPTR)) ¬ (A)
Загрузка в стек PUSH ad         (SP) ¬ (SP) + 1, ((SP)) ¬ (ad)
Извлечение из стека POP ad         (ad) ¬ (SP), (SP) ¬ (SP) - 1
Обмен аккумулятора с регистром XCH A, Rn 11001rrr       (A) ↔ (Rn)
Обмен аккумулятора с прямоадресуемым байтом XCH A, ad         (A) ↔ (ad)
Обмен аккумулятора с байтом из РПД XCH A, @Ri 1100011i       (A) ↔ ((Ri))
Обмен младших тетрад аккумулятора и байта РПД XCHD A, @Ri 1101011i       (A0…3) ↔((Ri)0…3)

Таблица 2.2 Команды передачи данных

По команде 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) и АСС – при использовании прямого адреса. Первый способ предпочтительнее, однако, не всегда применим.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: