Читайте также:
|
|
Пример 2.7. Сложить два двоичных многобайтных числа. Оба слагаемых располагаются в РПД, начиная с младшего байта. Начальные адреса слагаемых заданы в R0 и R1. Формат слагаемых в байтах задан в R2:
CLR C; сброс переноса
LOOP: MOV A, @R0; загрузка в аккумулятор
; текущего байта первого
; слагаемого
ADDC A, @R1; сложение байт с учетом
; переноса
MOV @R0, A; размещение байта результата
INC R0; увеличение указателей
INC R!;
DJNZ R2, LOOP; цикл, если не все байты
; просуммированы
При сложении чисел без знака на переполнение укажет флаг C, а в случае сложения чисел со знаком – флаг OV.
Пример 2.8. Умножить целое двоичное число произвольного формата на константу 173. Исходное число размещается в РПД, адрес младшего байта находится в регистре R0. Формат числа в байтах хранится в регистре R1:
MOV A, #0; сброс аккумулятора
LOOP: ADD A, @R0; загрузка множимого
MOV B, #173; загрузка множителя
MUL AB; умножение
MOV @R0, A; запись младшего байта
; частичного произведения
INC R0; увеличение адреса
MOV A, B; пересылка старшего байта
; частичного произведения в
; аккумулятор
XCH A, @R0; предварительное
; формирование очередного
; байта произведения
DJNZ R2, LOOP; цикл, если не все биты
; исходного числа умножены
; на константу
Полученное произведение размещается на месте исходного числа и занимает на один байт больше.
Пример 2.9. Перевести двоичное число, содержащееся в аккумуляторе в двоично-десятичную систему. При таком преобразовании может получиться трехразрядное двоично-десятичное число. Старшая цифра будет размещена в регистре R0, а две младшие в аккумуляторе.
MOV B, #100; загрузка B для вычисления
; количества сотен в числе
DIV AB; определение старшей цифры
MOV R0, A; пересылка в R0 старшей
; цифры
XCH A, B; пересылка остатка исходного
; числа в аккумулятор
MOV B, #10; загрузка B для вычисления
; количества десятков в числе
DIV AB; определение числа десятков
SWAP A; размещение числа десятков
; в старшей тетраде A
ADD A, B; подсуммирование остатка в
; A обе младшие цифры числа
Примеры использования команд логических операций
Пример 2.10. Установить биты 0 – 3 порта 1:
ORL P1, #00001111B; установка P1.0 – P1.3 в 1
Пример 2.11. Сбросить биты 0, 2, 6 порта P2:
ANL P2, #10111010B; сброс битов 0, 2, 6 порта P2
Пример 2.12. Выбрать нулевой регистровый банк:
ANL PSW, #11100111B; сброс битов RS1 и RS0
Пример 2.13. Проинвертировать биты порта 1, соответствующие единичным битам аккумулятора:
XRL P2, A; исключающее ИЛИ порта P2
; и аккумулятора
Пример 2.14. Проинвертировать биты 7, 6, 5 порта 0:
XRL P0, #11100000B; исключающее ИЛИ порта P0
; и константы
Пример 2.15. Проинвертировать биты 0 – 3 аккумулятора:
XRL A, #0FH; исключающее ИЛИ
; аккумулятора и константы
Применение микропроцессорных информационно-управляющих систем на железнодорожном транспорте
Дата добавления: 2015-10-24; просмотров: 224 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Приемы программирования | | | Автоматизированные системы управления и контроля движения поездов |