Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Команда DA A






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

 

Ассемблер: DA A
Код:  
Время: 1 цикл
Примеры: а); (А)=56H, (R3)=67H, (C)=1 ADDC A, R3 DA A; (A)=24H, (R3)=67H, (C)=1 б); (A)=30H, (C)=0 ADD A, #99H DA A; (A)=29, (C)=1

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

Команда DEC < байт>

Команда “декремент” производит вычитание “1” из указанного операнда. Начальное значение 00H перейдет в 0FFH. Команда DEC не влияет на флаги. Этой командой допускается четыре режима адресации операнда:

1) к аккумулятору

2) регистровый

3) прямой

4) косвенно-регистровый

 

1) Ассемблер DEC А
Код 00010100
Время 1 цикл
Пример ; (А)=11H, (C)=1, (AC)=1 DEC A; (A)=10H, (C)=1, (AC)=1
2) Ассемблер DEC Rn; где n=0 — 7
Код 00011 r r r, где r r r =000 — 111
Время 1 цикл
Пример ; (R1)=7FH, ; (ОЗУ[7F])=40H, (ОЗУ[7F])=00H DEC @R1 DEC R1 DEC @R1; (R1)=7EH, ; (ОЗУ[7F])=3FH, (ОЗУ[7FH])=FFH
3) Ассемблер DEC < direct>  
Код 00010101 direct address
Время 1 цикл
Пример ; (SCON)=A0H, (C)=1, (AC)=1 DEC SCON; (SCON)=9FH, (C)=1, (AC)=1
4) Ассемблер DEC @Ri; где i=0, 1
Код 0001011i
Время 1 цикл
Пример ; (R1)=7FH, ; (ОЗУ[7F])=40H, (ОЗУ[7F])=00H DEC @R1 DEC R1 DEC @R1; (R1)=7EH, ; (ОЗУ[7F])=3FH, (ОЗУ[7F])=FFH

 

Примечание: Если эта команда используется для изменения информации на выходе порта, значение, используемое как исходные данные, считывается из “защелки” порта, а не с выводов БИС.

 


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.007 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал