Арифметические операции над (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

 

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

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

 

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

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

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

 


Примеры:

 

015B) ADD M

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

1A20) ADC E

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

 

00B3) ADC C

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

 

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

 


1A30) SUB D

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

1A40) SBB B

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

 

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

 

082А) 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.


 

0903) АDD L

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

0A09) SUB D

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

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

 








Дата добавления: 2016-03-10; просмотров: 1266;


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

При помощи поиска вы сможете найти нужную вам информацию.

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

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.