Однокристальные микроконтроллеры семейства MCS-51. Арифметические команды. Операции сложения и вычитания с 8-разрядными операндами

Страницы работы

Содержание работы

                         Однокристальные микроконтроллеры семейства MCS-51

                                                    Лабораторная  работа  № 4

                                                  Арифметические  команды

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

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

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

В микроконтроллерах семейства МК51 имеются следующие команды двоичной арифметики с 8-разрядными числами:

1)  сложение;

2)  вычитание;

3)  инкремент;

4)  декремент;

5)  умножение;

6)  деление.

Операции сложения и вычитания с 8-разрядными операндами предполагают, что один из операндов размещается в регистре A (аккумуляторе), а другой – либо в регистре, либо в оперативной памяти, либо является непосредственным числом, заданным в самой команде. Вычитание производится всегда из аккумулятора. Результат операции сложения и вычитания всегда записывается в аккумулятор. Кроме того, по результату операций сложения и вычитания  устанавливаются биты признаков (флаги): C – переноса, AC – дополнительного переноса, P – паритета, OV – переполнения.

Команды инкремента увеличивают содержимое регистров, ячеек памяти на 1. Команды декремента, наоборот, уменьшают содержимое регистров и ячеек памяти на 1. Эти команды не влияют на флаги МК.

Команды умножения и деления выполняют соответствующие операции над однобайтными целыми числами.

К группе арифметических команд МК51 относится также команда десятичной коррекции аккумулятора, которая служит для коррекции результата при сложении десятичных двоично-кодированных чисел.

При рассмотрении арифметических команд будем предполагать, что операнды – двоичные целые числа без знака. Выполнение арифметических операций с дробными числами, а также числами со знаком будет рассмотрено в дальнейших лабораторных работах.

3. Порядок выполнения работы

3.1. Исследование команд сложения

В микроконтроллерах семейства МК51 имеются следующие команды сложения:

ADD   A, Rn  ; (A) ß (A) + (Rn)       – Сложение аккумулятора с регистром (n = 0,…,7)

ADD  A, ad    ; (A) ß (A) + (ad)        – Сложение аккумулятора с прямоадресуемым байтом

ADD  A, @Ri ; (A) ß (A) + ((Ri))     – Сложение аккумулятора с байтом из ПД  (i = 0,1)

ADD  A, #d    ; (A) ß (A) + #d           - Сложение аккумулятора с константой

ADDC  A, Rn ; (A) ß (A) + (Rn) + (C)  – Сложение аккумулятора с регистром и переносом

ADDC  A, ad  ; (A) ß (A) + (ad) + (C)   – Сложение аккумулятора с прямоадресуемым

; байтом и переносом

ADDC  A, @Ri ; (A) ß (A) + ((Ri)) + (C)      – Сложение аккумулятора с байтом из ПД и

; переносом

ADDC  A, #d    ; (A) ß (A) + #d          - Сложение аккумулятора с константой и переносом

3.1.1. Рассмотрим команды сложения ADD. При их выполнении предполагается, что 1-е слагаемое находится в аккумуляторе, местонахождение 2-го слагаемого указывается в команде. Результат операции помещается в аккумулятор.

Пример. Допустим, что аккумулятор содержит число ECH, а регистр R2 – число 6EH. Тогда команда ADD A, R2 выполнит сложение следующим образом:

Переносы             1        1                1                   1           1                                             

ß       ß            ß                     ß         ß                                        

Аккумулятор                 1       1      1         0          1          1          0          0 = ECH

+

Регистр R2                     0       1      1         0          1          1          1          0 = 6EH

-------------------------------------------------------------------------------------------------Результат                       0       1      0         1          1          0          1          0 = 5AH

Установка признаков (флагов) производится микроконтроллером следующим образом. Так как при сложении был перенос из 3-го разряда аккумулятора в 4-й, то устанавливается бит (флаг) дополнительного переноса AC = 1. Так как в полученном результате количество единиц – число четное (4), то флаг паритета сбрасывается P = 0. И, наконец, так  как при сложении возник перенос из старшего (7-го) разряда аккумулятора, то устанавливается флаг переноса C = 1. Флаг OV мы рассматривать не будем, так как он используется для операций с числами со знаком.

Рассмотрим примеры сложения однобайтных чисел.

3.1.2. Допустим, необходимо сложить содержимое регистра R7 и ячейки ПД с адресом 30H.

При использовании прямой адресации программа будет иметь вид:

MOV  A, R7       ; Переслать содержимое R7 в аккумулятор

ADD  A, 30H     ; Сложение аккумулятора с содержимым ячейки памяти по адресу 30H

NOP

Запишите программу в память симулятора и исследуйте ее работу в пошаговом режиме при различных исходных данных. Результаты занесите в табл. 4.1.

Таблица 4.1

Исходные данные

Получено

Практически

Теоретически

Регистр  R7

Ячейка  30H

Регистр  A      

Флаг  C

Регистр  A

Флаг  C

11H

55H

CCH

55H

Похожие материалы

Информация о работе