Глава 4. Арифметические и логические операции


При выполнении арифметических и логических операций, когда операнды однобайтовые, один из операндов всегда находится в акку­муляторе, а второй находится в одном из регистров A, B, C, D ,E, H, L или M, то есть в памяти. При непосредственной адресации второй операнд приводится во втором байте команды. Результат выполнения операции записывается в аккумулятор. При этом прежнее содержимое аккумулятора теряется.

Микропроцессор содержит ограниченное число арифметических и логических команд: сложение, вычитание, логическое сложение и логи­ческое умножение, исключающее ИЛИ сравнение и дополнение. Более сложные операции над числовыми данными, также, как умножение, деление и другие, реализуются програм­мно.

 

Арифметические операции над (A) и (r)

а) Сложение

ADD ri A(A) +(ri) <B1> ri

б) Сложение с переносом

ADC ri A(A) +(ri) + (Tc) <B1> ri

в) Вычитание

SUB ri A(A) -(ri) <B1> ri

г) Вычитание с переносом

SBB ri A(A) -(ri) - (Tc) <B1> ri

7 0

 

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

При выполнении команд сложения все триггеры признаков устанавливаются всегда в соответствии с результатом.

При выполнении команд вычитания 3 флага из 5 устанавливаются всегда одинаковым образом, независимо от того сводится вычитание к сложению или нет. Это TS, TZ ,TP; флаги TC и Th ведут себя иначе. Изменение Th определяется при преобразовании вычитания в сложение (путем смены знака вычитаемого и преобразования значения в дополнительный код). Флаг TC=1 если код уменьшаемого меньше кода вычитаемого, т.е. имеет место заем.

Применение операций с переносом позволяет обрабатывать не только байтовые числа, но и многобайтовые.

Примеры:

B) ADD M

Адрес/регистр Код до выполнения операции Код после выполнения операции
015B
H 3E 3E
L
3E23 6C 6C
A A4
FL
PC 015B 015C

A20) ADC E

Адрес/регистр Код до выполнения операции Код после выполнения операции
1A20 8B 8B
A 6A=16+54+0
E
FL 02; (Tc)=0
PC 1A20 1A21

 

B3) ADC C

Адрес/регистр Код до выполнения операции Код после выполнения операции
00B3
C DB DB
A AF 8B=DB+AF+1
FL 13; Tc=1
PC 00B3 00B4

 

Рассмотренные команды являются однобайтовыми, выполняются за один цикл (4 такта); если операнд хранится в памяти (М), то операция выполняется за два цикла (7 тактов). При выполнении команд меняется содержимое всех триггеров регистра признаков.

 

A30) SUB D

Адрес/регистр Код до выполнения операции Код после выполнения операции
1A30
D
A FC B7
FL
PC 1A30 1A31

A40) SBB B

Адрес/регистр Код до выполнения операции Код после выполнения операции
1A40
B 6A 6A
A 5B F0 = 5B-6A-1
FL 03; Tc=1
PC 1A40 1A41

 

Рассмотрим несколько особенных примеров.

 

А) SBB H

Адрес/регистр Код до выполнения операции Код после выполнения операции
082A 9C 9C
A
H FF FF
FL 83, TC=1
PC 082A 082B

Особенностью данной команды является то, что триггеры признаков TC и TH устанавливаются так, как это происходит при выполнении этой команды в два этапа:

1) (A) - TC = 60 – 1= 5F

2) ((A) - TC ) – H = 5F – FF = 60;

и признаки переноса и полупереноса (TC и TH) устанавливаются в соответствии со вторым этапом, т.е. TC = 1, TH = 1.

 

АDD L

Адрес/регистр Код до выполнения операции Код после выполнения операции
A 7F
L
FL
PC

A09) SUB D

Адрес/регистр Код до выполнения операции Код после выполнения операции
0A09
A
D 0A 0A
FL
PC 0A09 0A0A

Особенностью двух последних команд является то, что их результаты имеют смысл только в тех случаях, когда обрабатываемые коды являются кодами чисел без знака.

 



Дата добавления: 2021-02-19; просмотров: 372;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

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

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.009 сек.