Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР_4.doc
Скачиваний:
3
Добавлен:
27.09.2019
Размер:
93.7 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ

ГОМЕЛЬСКИЙ ГОСУДАРСТВЕННЫЙ ДОРОЖНО-СТРОИТЕЛЬНЫЙ КОЛЛЕДЖ имени Ленинского комсомола

Методические указания по выполнению лабораторных работ по дисциплине «ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ»

Лабораторная работа № 4 Команды передачи данных

ГГДСК Гомель 2011г.

  1. Цель работы

Изучить и практически исследовать работу команд передачи данных однокристальных микроконтроллеров семейства MCS-51 (МК51) на персональном компьютере.

2.Основные теоретические сведения

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

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

Rn - регистр общего назначения (РОН), n = 0…7;

Ri - регистра косвенного адреса, i = 0, 1;

# - префикс непосредственных данных

@ - префикс косвенной адресации

#d - 8-битное число (непосредственные данные)

#d16 - 16-битное число (непосредственные данные)

  1. - содержимое регистра или с именем X;

((X)) - содержимое ячейки памяти, адресуемое содержимым X

  • - оператор присваивания (замещения).

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

MOV A, Rn ; (A)  (Rn) - Пересылка в аккумулятор из регистра (n = 0…7)

MOV A, ad ; (A)  (ad) - Пересылка в аккумулятор прямоадресуемого байта

MOV A, @Ri ; (A)  ((Ri)) – Пересылка в аккумулятор байта из ПД (i = 0, 1)

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 - Обмен младшей тетрады аккумулятора с младшей тетрадой

 байта из ПД

Характерным для команд передачи данных являются то, что они не влияют на флаги МК, за исключением команд пересылки в регистр состояния PSW и в аккумулятор (может измениться флаг паритета P).

Команды передачи данных могут иметь однобайтный, двухбайтный и трехбайтный форматы, т.е. занимать в памяти программ соответственно 1, 2 или 3 ячейки. В командах могут использоваться следующие способы адресации

  1. непосредственная

  2. регистровая

  3. прямая

  4. косвенная.

Рассмотрим методы адресации на примере пересылки данных в аккумулятор.

При непосредственной адресации команда имеет длину 2 байта. В 1-м байте размещается код операции. Затем следует 1 байт данных (непосредственный операнд). Эти данные не могут быть изменены в ходе выполнения программы, так как они расположены непосредственно в памяти программ, т.е. в ПЗУ. Если приемником данных является аккумулятор или какой-либо другой регистр, то часто такую операцию часто называют загрузкой регистра. Условное обозначение операнда в мнемонике команды - #d.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]