2 Арифметические операции в MCS-51

 

Пример 11. Сложить десятичные двоично-кодированные числа, размещенные в А и R5:

ADD A, R5 ; двоичное сложение

DA A ; десятичная коррекция результата

Пример 12. Вычитание байтов. Данная операция может выполняться двумя способами: 1) перевести уменьшаемое как отрицательное в дополнительный код и выполнить операцию добавления; 2) перевести уменьшаемое в обратный код и произвести инверсию суммы.

Например, из данных в А необходимо отнять данные регистра R3. Вычитание выполняем по алгоритму:

А ¬

CPL A ; инверсия аккумулятора

ADD A, R3 ; добавление байтов

CPL A ; получение разности

Пример 13. Сложить два двоичных многобайтных числа. Оба слагаемых находятся в РПД, начиная из младшего байта. Начальный адрес слагаемых находится в R0 и R1, формат в R2. Результат размещают на месте первого слагаемого.

CLR С ; сбрасывание переноса

LOOP: MOV A,@R0 ; загрузка в аккумулятор; бегущего байта первого слагаемого

ADDC A,@R1 ; добавление байтов с учетом переноса

MOV @R0, A ; размещение байта результата

INC R0 ; смещение указателя

INC Rl ; смещение указателя

DJNZ R2, LOOP ; цикл, если не все байты просуммированы

Время суммирования составляет (1+7N) мкс, где N – длина в байтах.

Пример 14. Перемножить число в аккумуляторе на число 2х, где х ≤ 8 – значение в R6. Умножение на 2 заменяется арифметическим сдвигом аккумулятора и R0:

MOV R0,#0 ; сброс R0

CLR С ; сброс переноса

LI: RLC А ; сдвиг влево 16-разрядного данного в А и R0

ХСН А, R0

RLC A

ХСН А, R0

DJNZ R6, L1 ; цикл

Пример 15. Умножение (MUL). Выполняется для двух беззнаковых чисел, которые находятся в регистрах А и В. После выполнения операции младший байт произведения размещается в А, а старший – в В.

Умножение числа любого формата на константу 168. Число размещено в РПД, адрес младшего байта находится в R0. Формат числа в байтах задан в R2.

MOV А,#00Н ; сброс аккумулятора А

LOOP: ADD A,@R0 ; загрузка множимого

MOV B,#168D ; загрузка множителя

MUL AB ; перемножение

MOV @R0, A ; запись младшего байта частичного произведения

INC R0 ; прирост адреса

MOV А, В ; пересылка старшего байта частичного произведения в аккумулятор А

ХСН A,@R0 ; предшествующее формирование очередного байта произведения

JNZ R2, LOOP ; цикл, если не все байты начального числа перемноженные на константу.

Полученный результат находится на месте начального числа и занимает в РПД на 1 байт больше. Время вычисления произведения составляет (1+13N) мкс, где N – длина числа в байтах.

Пример 16. Деление (DIV) – делится содержимое аккумулятора на значение в В. После деления в А находится целая часть, в В-остаток. Команда может быть использована для быстрого преобразования двоичного числа в двоично-десятичный формат.

Программа переводит двоичное число, находящееся в аккумуляторе, в двоично-десятичный код, который может быть трехразрядным (в десятичной системе счисления). В этом случае число сотен будет размещено в R0, десятки и единицы – соответственно в А и В.

MOV B,#100D ; (B) ¬ 100 для вычисления числа сотен в числе

DIV AB ; в А є число сотен (то есть старшая цифра)

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

ХСН А, В ; пересылка остатка от деления входного числа в А

MOV B,#10D ; (В)¬10 (определяется число десятков в числе)

DIV AB ; в А – число десятков, В-число единиц

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

ADD А, В ; суммирование остатка (числа единиц) аккумулятор сохраняет две младших цифры.

Время преобразования – 16 мкс.

Пример 1 Сравнение двух четырехразрядных чисел, которые подаются на входы порта Р2.

Сигнал равенства выводится на Р1.1, большее – Р1.2, меньшее – Р1.3, разрешение сравнения подается на Р1.0.

ANL P1,#11110001В ; сброс всех сравнений

L0: JNB Р1.0, L0 ; ожидание разрешения

MOV A, P2

ANL A,#F0H ; выделение первого числа

SWAP A

MOV В, A ; запоминание первого числа

CLR C ; сброс переноса

MOV А, P2

ANL A,#0FH ; выделение второго числа

SUBB А, В ; вычисление В

JZ LR ; переход, если А=В

JC LL ; переход, если А<В

SETB P1.2 ; результат А>В

JMP EXIT

LR: SETB P1.1 ; результат А=В

JMP EXIT

LL: SETB P1.3 ; результат А<В

EXIT: ; продолжение выполнения программы

Аналогично выполняется сравнение чисел большей разрядности. Если необходимо сравнивать многобайтные числа, то сравнение следует начинать со старших байтов.

 


Информация о работе «Обработка сигналов на основе MCS-51»
Раздел: Коммуникации и связь
Количество знаков с пробелами: 35873
Количество таблиц: 2
Количество изображений: 3

Похожие работы

Скачать
46876
3
11

... информации из ПК в программно-доступные узлы МК; чтение содержимого программно-доступных узлов и индикация их на мониторе ПК. 1.2 Анализ предыдущей работыВопрос об организации обмена информацией между персональным компьютером и микроконтроллером семейства Intel MCS-51 был уже рассмотрен в бакалаврской работе [3]. В этой работе были рассмотрены проблемы аппаратного и программного сопряжения МК с ...

Скачать
23140
0
2

... объёмом до 16 Мбайт Встроенный интерфейс I2C (не во всех моделях) 2. МИКРОКОНТРОЛЛЕРЫ INTEL 296   2.1 Общая характеристика и применение   В семейство MCS-196 фирмы Intel (иногда используется и название 80C196) входит более 30 разновидностей микроконтроллеров. Это 16-разрядные, быстродействующие ИС высокой степени интеграции, ориентированные на решение задач управления процессами в реальном ...

Скачать
37477
8
8

... байт в регистре A, старший – в регистре B. В случае выполнения операции деления целое от деления помещается в аккумулятор А, остаток от деления – в регистр В. Логические команды с байтовыми переменными. Система команд ОМЭВМ позволяет реализовать логические операции: "И", "ИЛИ", "ИСКЛЮЧАЮЩЕЕ ИЛИ" на регистре-аккумуляторе (А) и байте-источнике. Вторым операндом (байтом-источником) при этом может ...

Скачать
85017
10
29

... Подробные сравнительные характеристики датчиков приведены в [7] и [8]/ В отличии от остальных комплектующих прибора, при выборе газового датчика следует принимать во внимание соображения доступности тех или иных приборов( цена, возможность приобретения в России ). При выборе сенсора RS 286-620 во внимание принимались и эти соображения. Как показали эксперименты, данный тип сенсора не обладает ...

0 комментариев


Наверх