Исследование команд микроконтроллеров семейства МК51. Исследование команд сложения и вычитания. Сложение младших и старших байтов, страница 3

    4.  Исследование команды деления

Команда DIV AB производит деление содержимого аккумулятора A на содержимое регистра-расширителя B. После деления в аккумуляторе находится целая часть частного, а в расширителе – остаток. Флаги C и OV сбрасываются. При делении на нуль устанавливается флаг переполнения OV, а частное остается неопределенным.

Задание 1. Запустите отладчик AVSIM51 и занесите в память команду DIV AB. Исследуйте работу команды при различных значениях параметров. Данные занесите в табл.6.

Таблица 6

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

Получено      

Получено

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

Практически

Рег.A          Рег.B     

Рег.A    Рег.B    C   OV

Рег.A    Рег.B   C   OV

0AH            02H

05H              00H

05H             0FH

Задание 2. Исследуйте подпрограмму C2_10, которая преобразует двоичное число в десятичное двоично-кодированное (BCD-число). Исходное однобайтное двоичное число размещается в аккумуляторе. При преобразовании может получиться трехразрядное BCD-число. Старшая цифра (количество сотен) будет находиться в регистре R0, а две младшие (десятки и единицы) – в аккумуляторе. Программу запишите в файл c2_10.asm.

C2_10:   MOV B,#100 ;Загрузка 100 для вычисления количества сотен в числе

DIV AB         ;Аккумулятор содержит число сотен, т.е. старшую цифру

MOV R0,A    ;Пересылка старшей цифры в регистр R0

XCH A,B       ;Пересылка остатка исходного числа в аккумулятор

MOV B,#10   ;Загрузка 10 для вычисления количества десятков в числе

DIV AB         ;A содержит количество десятков, B – количество единиц

SWAP A        ;Размещение числа десятков в старшей тетраде аккумулятора

ADD A,B       ;Подсуммирование остатка (числа единиц), теперь аккумуля;тор содержит две младшие цифры BCD-кода

RET

END

Получите файлы c2_10.obj и c2_10.hex. Занесите в табл.7 результаты исследования подпрограммы при различных исходных данных.

Таблица 7

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

Получено          

Получено

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

Практически

0AH                         

10

FFH                         

255

                         5.  Исследование логических команд        

Выполнение логических команд рассмотрим на следующих примерах. 

5.1. Выбрать 3-й банк регистров и записать в R1 число 11H:

ORL  PSW,#00011000B

MOV  R1,#11H

5.2. Выбрать 0-й банк регистров и записать в R7 число 77H:

ANL  PSW,#11100111B

MOV  R7,#77H

5.3. Сбросить биты 0 – 3 порта 1:

ANL  P1,#11110000B

5.4. Установить биты 0 и 2 порта 1:

ORL  P1,#00000101B

5.5. Проинвертировать биты 0 – 3 аккумулятора:

XRL  A,#0FH

5.6. Проинвертировать биты 7,3,0  порта 1:

XRL  P1,#10001001B

Задание. Запустите отладчик AVSIM51, отключите отображение меток и занесите в память программ команды по пунктам 5.1 – 5.6. Исследуйте работу команд в пошаговом режиме. Наблюдайте за изменением содержимого регистров по соответствующим ячейкам памяти данных и порта P1. Выбранный банк регистров отображается в отладчике значением в RB.

                  6.  Исследование команд операций с битами

6.1. Необходимо выдать содержимое аккумулятора в последовательном коде через нулевую линию порта 1, оставляя без изменения остальные биты порта. Передачу вести, начиная с младшего бита. Подпрограмма имеет вид:

TR:                 MOV  R7,#8    ;Инициализация счетчика циклов

LOOP:             RRC   A          ; Присвоение флагу переноса значение бита A.0

MOV  P1.0,C  ; Передача бита

DJNZ  R7,LOOP ; Цикл, если не все биты переданы

RET

END

Задание. Получите  файлы  tr.asm, tr.obj, tr.hex. Проверьте работу подпрограммы TR сначала в пошаговом, а затем в автоматическом режиме, задавая значения в аккумуляторе (A) = AAH = 10101010B. Определите скорость передачи бита и байта (в значениях кбит/с и кбайт/с) при тактовой частоте микроконтроллера 12 МГц.

6.2. Вычислить логическую (булеву) функцию трех переменных

Y = X  Ù  `Z  Ú   W  Ù  ( X  Ú  Z ).

Переменные X,V,W поступают на линии 2,1,0 порта 1 соответственно. Результат Y необходимо вывести на линию 3 порта 1. Программа вычисления имеет вид:

Y:               REG      P1.3      ; Спецификация бит порта  1

X:               REG      P1.2