Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СППО_все_шпоры_разом.docx
Скачиваний:
7
Добавлен:
18.04.2019
Размер:
96.32 Кб
Скачать

10.Математические операции.

I. Сложение и вычитание.

Сложение и вычитание N целых чисел осуществляется следующими командами:

ADD опер1, опер2 ADD приёмник, источник

Опер1=опер1+опер2 приёмник = приёмник + источник.

ADC опер1, опер2

Опер1 = опер1 + опер2 + CF

Опернады могут быть 8миричными, 16, 32 битовыми переменными. Если результат операции не помещается в приёмник, то микропроцессор фиксирует данную ситуацию и устанавливает в единицу флаг переноса, при этом действие программы может быть следующее:

1) прекратить выполнение программы по переполнению разрядной сетки.

2) увеличить разрядность операндов.

Рассмотрим процесс увеличения разрядности.

ADD AL, BL

JNC @ m1

m1: ADC AH, 0

В итоге результат перейдет в AX.

Команды ADD и ADC могут воздействовать на 6 флагов:

CF – флаг переноса. (равен 1, если сложение не помещается в приемнике, иначе = 0)

PF – флаг четности. (равен 1, если результат сложения имеет четное число битов со значениями 1, в противном случае =0)

AF – флаг вспомогательного переноса. (равен 1, если результат сложения десятичных чисел требует корректировки.)

ZF – флаг нуля. (если результат сложения = 0, то флаг = 1)

SF – знак флага. (равен 1, если результат суммы отрицательный)

OF – знак переполнения. (если сложение чисел одного знака приводит к результату, который превышает диапазон допустимых значений приёмника в дополнительном коде, а сам приёмник при этом меняет знак.

II. Команды корректировки представления чисел в двоичном / десятичном коде.

1) AAA – преобразует содержимое регистра AL в правильную неупакованную десятичную цифру в младший (4 бита) регистр, а старший (4бита) – нули.

ADD AL, BL

AAA

Если результат операции превышает «9», то команда добавляет единицу в содержимое регистра AH и устанавливает флаг CF в единицу, в противном случае флаг CF=0.

2) DAA – преобразует содержимое регистра AL в 2 десятичные цифры.

4 младш. разряда – 1 число.

4 старш разряда – 2 число.

Если результат превышает предельное значение, то команда добавляет единицу к регистру AH и флаг CF устанавливается в единицу.

III. Команды вычитания.

SUB опер1, опер2

опер1 = опер1 – опер2

SBB опер1, опер2

опер1 = опер1 – опер2 – перенос заёма.

Операция вычитания заменяется операцией сложения, поэтому осуществляется в 2 этапа:

1) меняется знак у вычитаемого.

2)складываются 1 и 2 операнд.

Для обращения операнда к системе команд используется команда:

NEG опер1

Эта команда вычитает значения операнда из нуля, тем самым формирует дополнительный код.

Команды вычитания взаимодействуют с флагами точно так же, как и команды сложения, только при вычитании флаг CF понимается как признак заёма. При вычитании существуют ограничения: нельзя вычесть значения регистра или ячейки памяти из const, т.е. команда SUB 100,AL – недопустима.

NEG AL

ADD AL, 100

Для работы с десятичными числами используется следующая команда:

AAS – корректирует результат вычитания в десятичный код цифры. Команда не имеет опреандов и работает с регистром AL по следующему алгоритму:

1)если значения в регистре < или = 9, то флаг CF устанавливается в «0», и управление передаёт к следующей команде.

2) если значения в регистре >9, то из содержимого регистра вычитается 6 ( т.к. разница 15 – 9 = 6). Старшая часть регистра обнуляется, флаг CF устанавливается в 1, фиксируя наличие заёма из предыдущего воображаемого заёма.

DAS – корректирует младшую и старшую части регистра AL в десятичный код.