1. Цель работы
Изучить и исследовать команды микроконтроллеров семейства МК51: арифметические, логические, пересылки, операций с битами и перехода.
2. Исследование команд сложения и вычитания
2.1. Необходимо сложить содержимое регистра R7 и ячейки памяти данных с адресом 30H. При использовании прямой адресации программа будет иметь вид:
MOV A,R7 ; Загрузка операнда в аккумулятор
ADD A,30H ; Сложение
Результат операции сложения фиксируется в аккумуляторе, установка флага переноса C будет свидетельствовать о переполнении.
При использовании косвенной адресации программа имеет вид:
MOV A,R7
MOV R0,#30H ; Загрузка в R0 адреса ячейки ПД
ADD A,@R0 ; Сложение
Таблица 1.1
Исходные данные |
Получено |
Получено |
Теоретически |
Практически |
|
Регистр R7 Ячейка 30H |
Регистр A Флаг C |
Регистр A Флаг C |
11H 55H |
66H 0 |
66H 0 |
CCH 55H |
21H 1 |
21H 1 |
При использовании косвенной адресации программа имеет вид:
MOV A,R7
MOV R0,#30H ; Загрузка в R0 адреса ячейки ПД
ADD A,@R0 ; Сложение
Таблица 1.2
Исходные данные |
Получено |
Получено |
Теоретически |
Практически |
|
Регистр R7 Ячейка 30H |
Регистр A Флаг C |
Регистр A Флаг C |
11H 55H |
66H 0 |
66H 0 |
CCH 55H |
21H 1 |
21H 1 |
Вычесть из содержимого регистра R7 содержимое ячейки памяти данных с адресом 30H. При использовании прямой адресации программа будет иметь вид:
MOV A,R7
CLR C ;Сброс флага C
SUBB A,30H ;Вычитание
Если после операции вычитания флаг C=0, значит результат - положительное число (уменьшаемое больше вычитаемого). Если же флаг C=1, то результат – отрицательное число в дополнительном коде (уменьшаемое меньше вычитаемого).
При использовании косвенной адресации программа вычитания будет:
MOV A,R7
CLR C
MOV R0,#30H ;Загрузка адреса ячейки ПД в R0
SUBB A,@R0 ;Вычитание
Задание 3. Запустите отладчик AVSIM51 и запишите в память программу вычитания по варианту 1. Исследуйте работу программы в пошаговом режиме при различных исходных данных. Результаты занесите в табл.2.
Таблица 2
Исходные данные |
Получено |
Получено |
Теоретически |
Практически |
|
Регистр R7 Ячейка 30H |
Регистр A Флаг C |
Регистр A Флаг C |
CCH 55H |
||
11H 55H |
Задание 4. Запишите в память отладчика программу вычитания по варианту 2. Исследуйте работу программы в пошаговом режиме при различных исходных данных. Результаты занесите в таблицу по форме табл.2. Сделайте выводы по результатам вычислений.
2.3. При использовании многобайтных чисел сложение начинается с младших байтов с помощью команд ADD, затем поочередно складываются старшие байты с помощью команд ADDC. Если в результате сложения всех байтов установится флаг C, это укажет на переполнение суммы.
Например, нужно сложить два двоичных двухбайтных числа, расположенных в памяти данных. Первое число находится в ячейках 30H (младший байт – МлБ) и 31H (старший байт – СтБ). Второе число – в ячейках 38H (МлБ) и 39H (СтБ). Результат сложения (сумму) поместить в регистр DPTR. Подпрограмма сложения ADD_1 при использовании косвенной адресации ячеек памяти имеет вид:
DATA1: EQU 30H ; Символический адрес числа 1 (МлБ)
DATA2: EQU 38H ; Символический адрес числа 2 (МлБ)
ADD_1: MOV R0,#DATA1 ; Загрузка в R0 адреса 1-го числа
MOV R1,#DATA2 ; Загрузка в К1 адреса 2-го числа
MOV A,@R0
ADD A,@R1 ; Сложение младших байтов
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.