В HTML      В PDF
микроэлектроника, микросхема, транзистор, диод, микроконтроллер, память, msp430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, avr, mega128
Предприятия Компоненты Документация Применения Статьи Новости

 
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации





Главная страница > Обзоры по типам > Микроконтроллеры > MCS-51 > Команды
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации


Команда DA A

Команда десятичная коррекция аккумулятора для сложения" упорядочивает 8-битовую величину в аккумуляторе после выполненной ранее команды сложения двух переменных (каждая в упакованном двоично-десятичном формате). Для выполнения сложения может использоватться любая из типов команд ADD или ADDC. Если значение битов 3-0 аккумулятора (А) превышает 9 (ХХХХ 1010-ХХХХ 1111) или, если флаг АС равен "1", то к содержимому (А) прибавляется 06, получая соответствующую двоично-десятичную цифру в младшем полубайте. Это внутреннее побитовое сложение устанавливает флаг переноса, если перенос из поля младших четырех бит распространяется через все старшие биты, а в противном случае - не изменяет флага переноса. Если после этого флаг переноса равен "1", или значение четырех старших бит (7-4) превышает 9 (1010 ХХХХ - 1111 ХХХХ), значения этих старших бит увеличивается на 6, создавая соответствующую двоично-десятичную цифру в старшем полубайте. И снова при этом флаг переноса устанавливается, если перенос получается из старших битов, но не изменяется в противном случае. Таким образом, флаг переноса указывает на то, что сумма двух исходных двоично-десятичных переменных больше чем 100. Эта команда выполняет десятичное преобразование с помощью сложения 06, 60, 66 с содержимым аккумулятора в зависимости от начального состояния аккумулятора и слова состояния программы (PSW).


  1. Ассемблер: DA A
    Код:
    1 1 0 1 0 1 0 0
    Время: 1 цикл
    Алгоритм: если ((A[3-0])>9 или (AC)=1), то A[3-0]:=A[3-0]+6
    если ((A[7-4])>9 или (С)=1), то А[7-4]:=A[7-4]+6
    Пример:
    a)         ;(A)=56H, (R3)=67H, (C)=1
    ADDC A,R3
    DA   A     ;(A)=24H, (R3)=67H, (C)=1
    
    b)         ;(A)=30H, (C)=0
    ADD A, #99H
    DA   A     ;(A)=29, (C)=1
               

Примечание. Команда DA A не может просто преобразовать шестнадцатеричное значение в аккумуляторе в двоично-десятичное представление и не применяется, например, для десятичного вычитания.