- •Лабораторная работа № 4 Команды передачи данных
- •Цель работы
- •2.Основные теоретические сведения
- •Примеры
- •Примеры
- •Примеры
- •Пример
- •3. Порядок выполнения работы
- •3.1. Исследование команд пересылки с непосредственной и регистровой адресацией
- •3.2. Исследование команд пересылки с прямой адресацией
- •3.3. Исследование команд пересылки с косвенной адресацией
- •3.4. Команды пересылки с использованием регистра dptr
- •3.5. Задания для самостоятельной работы
- •4.Содержание отчета
- •Контрольные вопросы
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ
ГОМЕЛЬСКИЙ ГОСУДАРСТВЕННЫЙ ДОРОЖНО-СТРОИТЕЛЬНЫЙ КОЛЛЕДЖ имени Ленинского комсомола
Методические указания по выполнению лабораторных работ по дисциплине «ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ»
Лабораторная работа № 4 Команды передачи данных
ГГДСК Гомель 2011г.
Цель работы
Изучить и практически исследовать работу команд передачи данных однокристальных микроконтроллеров семейства MCS-51 (МК51) на персональном компьютере.
2.Основные теоретические сведения
Команды передачи данных можно по выполняемым функциям разделить на команды пересылки и обмена. Пересылка предполагает передачу данных в направлении от источника к приемнику, при этом источник не изменяет своего значения. Обмен предполагает одновременную передачу данных в двух направлениях. В результате операции обмена изменяются значения обоих операндов, участвующих в операции. В качестве источников и приемников данных в командах передачи используются аккумулятор, регистры общего назначения, ячейки памяти данных, регистры специальных функций.
Ниже приводится краткое описание команд передачи данных микроконтроллеров семейства МК51. Используются мнемокоды языка Ассемблера для МК51, а операции, выполняемые командами, описываются с использованием следующих символов и обозначений
Rn - регистр общего назначения (РОН), n = 0…7;
Ri - регистра косвенного адреса, i = 0, 1;
# - префикс непосредственных данных
@ - префикс косвенной адресации
#d - 8-битное число (непосредственные данные)
#d16 - 16-битное число (непосредственные данные)
- содержимое регистра или с именем 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 ячейки. В командах могут использоваться следующие способы адресации
непосредственная
регистровая
прямая
косвенная.
Рассмотрим методы адресации на примере пересылки данных в аккумулятор.
При непосредственной адресации команда имеет длину 2 байта. В 1-м байте размещается код операции. Затем следует 1 байт данных (непосредственный операнд). Эти данные не могут быть изменены в ходе выполнения программы, так как они расположены непосредственно в памяти программ, т.е. в ПЗУ. Если приемником данных является аккумулятор или какой-либо другой регистр, то часто такую операцию часто называют загрузкой регистра. Условное обозначение операнда в мнемонике команды - #d.