Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Eom_part1.doc
Скачиваний:
0
Добавлен:
28.08.2019
Размер:
411.65 Кб
Скачать

3.2.Група команд арифметичних та логічних операцій

Команди групи арифметичних операцій змінюють стан регістра признаків. Для користувача програмно-доступними являються тільки чотири признаки:-перенос, допоміжний перенос, а також признаки F0 та F1, функціональне призначення яких задається програмістом. Признак F0, крім того, доступний через слово стану пргграми.

ADD A,Rr

Прибавити вміст регiстра в аккумулятор.

Код [6Rr]

0 1 1 0 1 r r r

Алгоритм (A)(A)+(Rr); r=0-7.

ADD A,#d

Прибавити безпосередній операнд до аккумулятора.

При переносі з третього розряду АЛП триггер признаку допоміжного переносу АС встановлюється в стан “1”, при відсутності- в стан “0”.

При переносі з 7-го розряду АЛП триггер признаку переносу С встановлюється в стан “1”, при відсутності переносу- в стан “0”

Код [03]

0 0 0 0 0 0 1 1

d0 –d7

Алгоритм (A)(A)+d

ADD A,@Rr

Прибавити вміст елемента памэяті до аккумулятора.

Вміст елемента внутрішньої памэяті данних, що адресується робочим регістром Rr складається з вмістом аккумулятора. Результат заноситься в аккумулятор. При переносі з третього розряду АЛП триггер признаку допоміжного переносу АС встановлюється встан “1”, при відсутності- в стан “0”.

При переносі з 7-го розряду АЛП тригер признаку переносу С встановлюється в стан “1”, при відсутності переносу- в стан “0”

ADDC A,Rr

Прибавити признак переносу та вміст регістра до аккумулятора.

Код[7Rr]

0 1 1 1 1 r r r

Алгоритм: (A)(A)+(Rr)+(C); r=0-7.

ADDC A,#d

Прибавити признак переносу та безпосередній операнд до аккумулятора.

Код: [13]

0 0 0 1 0 0 1 1

d0 – d7

Алгоритм (A)(A)+(d)+(C).

ADDC A,@Rr

Прибавити признак переносу та вміст пам’яті до аккумулятора.

Код [70] для R0 та [71] для R1.

0 1 1 1 0 0 0 r

Алгоритм (A)(A)+((Rr))+(C).

DA A

Команда десятичної корекції аккумулятора. По цій команді результат двійко-вого складання двійково-десятичних чисел в аккумуляторі перетворюється в двійково-десятичне число слідуючим шляхом. Якщо число в молодших чоти-рьох розрядах аккумулятора більше девяти, або триггер признаку допоміжного переносу АС встановлюється в стан “1”, то до вмісту аккумулятора прибавля-ється число 6. Якщо після цього число в старших чотирьох розрядах аккуму-лятора більше дев’яти або триггер признаку переносу встановлюється в стан “1”, то до вмісту аккумулятора прибавляється число 6 Н. При переносі з 7-го розряду АЛП триггер признаку переносу С встановлюєтьсяв стан “1”, в против-ному випадку-в “0”.

Код: [57]

0 1 0 1 0 1 1 1

INC A

Інкремент вмісту аккумулятора.

Код [17].

0 0 0 1 0 1 1 1

Алгоритм (A)(A)+1.

INC Rr

Інкремент вмісту регістра.

Код [1Rr].

0 0 0 1 1 r r r

Алгоритм (Rr)(Rr)+1; r=0-1.

INC @Rr

Інкремент вмісту елемента пам’яті.

Код:[10] для R0 i [11] для R1.

0 0 0 1 0 0 0 r

Алгоритм: ((Rr))((Rr)+1; r=0-7.

DEC A

Декркмент вмісту аккумулятора.

Код: [07].

0 0 0 0 0 1 1 1

Алгоритм (A)(A)-1.

DEC Rr

Декремент вмісту регістра.

Код [CRr].

1 1 0 0 1 r r r

Алгоритм (Rr)(Rr)-1; r= 0-7.

RL A

Циклічний здвиг вліво.

Код [E7].

1 1 1 0 0 1 1 1

Алгоритм (An+1)(An); (A0)(A7); n=0-7.

RLC A

Циклічний здвиг вліво через перенос.

Код[F7].

1 1 1 1 0 1 1 1

Алгоритм: (An+1)(An); (A0)(C); (C)(A7); n=0-7.

RR A

Циклічний здвиг вправо.

Код: [77].

0 1 1 1 0 1 1 1

Алгоритм: (An) (An+1); (A7) (A0); n=0-7.

RRC A

Циклічний здвиг вправо через перенос.

Код: [67].

0 1 1 0 0 1 1 1

Алгоритм: (An) (An+1); (A7) (C ); (C )  (A0); n=0-7.

Робота команд здвигу іллюструє схема виконання операцій здвигу, що приводиться на рис.7

A7’ ‘ ‘ ‘ ‘ ‘ ‘ A0

R

C

L

C

A7’ ‘ ‘ ‘ ‘ ‘ ‘ A0

R LC

C

A7’ ‘ ‘ ‘ ‘ ‘ ‘ A0

R R

C

A7’ ‘ ‘ ‘ ‘ ‘ ‘ A0

R RC

Рис.7

SWAP A.

Обміняти тетради в аккумуляторі.

Код: [47].

0 1 0 0 0 1 1 1

Алгоритм: (A4-7) (A0-3);

Приклад: десятичні двійково-кодовані цифри в елементах пам’яті 10 та 31 упакувати в елемент пам’яті 10.

PACK: MOV R0,#10 ; завантажити регістр R0

MOV R1,#31 ; завантажити регістр R1

XCHD A,@R0 ; обміняти біти 0-3 аккумулятора та елемента 10

пам’яті

SWAP A ; обміняти тетради в аккумуляторі

XCHD A,@R1 ; обміняти біти 0-3 аккумулятора і елемента 31 і

пам’яті

MOV @R0,A ; переслати А в елемент 10 пам’яті.

ANL A,Rr

Логічне І аккумулятора з маскою в регістрі.

Код:[5Rr].

0 1 0 1 1 r r r

Алгоритм: (A)(A)(Rr); r=0-7;

ANL A,#d

Логічне І аккумулятора з безпосереднім операндом-маскою.

Код: [53].

0 1 0 1 0 0 1 1

d0 – d7

Алгоритм: (A)(A)d.

ANL A,@Rr

Логічне І аккумулятора з маскою в елементі пам’яті

Код [50] для R0 i [51] для R1.

0 1 0 1 0 0 0 r

Алгоритм (A)(A)((Rr)); r=0-7

Приклад: маска 0816 знаходиться в елементі FF пам’яті. Необхідно виділити з вмісту аккумулятора біт 3.

ANDM: MOV R0,#FFH ; завантаження регiстра R0

ANL A,@R0 ; з елемента 63 пам’яті виймається маска

; 00001000 і виконується кон’юнкція з

; аккумулятором.

ORL A,Rr

Логічна операція АБО аккумулятора з маскою в регістрі

Код: [4Rr]

0 1 0 0 1 r r r

Алгоритм: (A)(A)(Rr).

ORL A,#d

Логічна операція АБО аккумулятора з безпосереднім операндом.

Код: [43].

0 1 0 0 0 0 1 1

d0 – d7

Алгоритм (A) (A)  d.

ORL A,@Rr

Логічна операція АБО аккумулятора з маскою в елементі пам’яті

Код: [40] для R0 i [41] для R1.

0 1 0 0 0 0 0 r

Алгоритм: (A) (A)  ((Rr)).

XRL A,Rr

Операція “Виключаюче АБО” аккумулятора з маскою в регістрі

Код: [DRr]

1 1 0 1 1 r r r

Алгоритм: (A) (A) (Rr). r=0-7.

XRL A,#d.

Виключаюче АБО аккумулятора з безпосереднім операндом.

Код:[D3].

1 1 0 1 0 0 1 1

d0 –d7

Алгоритм: (A) (A)d.

XRL A,@Rr.

Операція “Виключаюче АБО” аккумулятора з маскою в елементі пам’яті

Код:[D0] для R0 i [D1] для R1.

1 1 0 1 0 0 0 r

Алгоритм: (A) (A)  ((Rr)). r=0-7.

CLR A

Очистити аккумулятор

Код: [27].

0 0 1 0 0 1 1 1

Алгоритм: (A)  0.

CLP A

Інвертувати вміст аккумулятора.

Код: [37]

0 0 1 1 0 1 1 1

Алгоритм: (A)  (A’).

CLR C.

Очистит признак переносу.

Код: [97].

1 0 0 1 0 1 1 1

Алгоритм (C) 0.

CPL C.

Інвертувати перенос

Код: [A7].

1 0 1 0 0 1 1 1

Алгоритм: (C)  (C’).

CLR F0.

Очистити признак F0.

Код: [85].

1 0 0 0 0 1 0 1

Алгоритм: (F0)  0.

CPL F0

Інвертувати признак F0.

Код: [95].

1 0 0 1 0 1 0 1

Алгоритм: ( F0) ( F0’).

CLR F1

Очистити признак F1.

Код: [A5].

1 0 1 0 0 1 0 1

Алгоритм: (F1)  0.

CPL F1.

Інвертувати признак F1.

Код: [B5].

1 0 1 1 0 1 0 1

Алгоритм: (F1) (F1’).

Приклад: Поточне значення признаку F1 невідомо. Необхідно встановити F1=1.

SETF1: CLR F1 ; встановити F1 в нуль

CPL F1 ; встановити F1 в одиницю.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]