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


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

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






Команды ADD, ADC, XADD





Формат команды: ADD П,И

ADC П,И

XADD П,И

где П – приемник информации. В качестве приемника может использоваться РОН или ячейка памяти;

И – источник информации. В качестве источника информации могут использоваться РОН, ячейка памяти или константа (непосредственные данные, указанные в самой команде ассемблера).

Приемник и источник должны быть одинаковой размерности! Нельзя в одной команде в качестве и приемника и источника использовать ячейки памяти!

Команда ADD выполняет следующую операцию: П=П+И;

Команда ADC выполняет следующую операцию:

П=П+И+значение флага CF;

Команда XADD выполняет следующие операции: 1) П↔И, 2) П=П+И;

 

Все три команды влияют на флаги OF,SF,ZF,AF,PF,CF, т.е. эти флаги принимают значения по результатам выполнения команды.

 

Связка команд ADD и ADC, как правило, используются для сложения чисел повышенной точности. Для примера, сложим два 64-битных числа. Поскольку в архитектуре IA32, к которой относится большинство микропроцессоров ПК, нет 64-х разрядных РОН, то хранение и сложение чисел большей разрядности, чем 32, приходиться выполнять по частям, задействовав по два 32-х разрядных РОН для каждого числа. Пусть одно число находиться в паре регистров EDX:EAX (EAX – младшее двойное слово, EDX – старшее двойное слово), а другое - в паре регистров EBX:ECX. При разбиении числа на части необходимо максимально использовать разряды РОН для младшей части. Рассмотрим, для примера, число 10'000'000'00010. В шестнадцатеричной системе счисления это число равно 2'540B'E40016. Как видно, это число занимает больше 32-х разрядов. При разбиении на части, младшая часть будет равна 540B'E40016, а старшая 0000'000216. Программа сложения 64-битных чисел будет выглядеть так:

 

ADD EAX,ECX

ADC EDX,EBX

 

Если при сложении младших двойных слов произошел перенос из старшего (15-ого) разряда, т.е. флаг CF стал равным 1, то он будет учтен в команде ADC при сложении старших частей. Стоит отметить, что сложение обязательно начинать с младших частей.

В большинстве встраиваемых систем используются 8-ми и 16-ти разрядные микропроцессоры и микроконтроллеры с соответствующей им разрядностью РОН. Необходимость сложения чисел по частям для таких систем возникает уже для чисел больше 25510=FF16, т.е. для чисел, занимающих более 8-ми двоичных разрядов. Часто для 8-ми разрядных систем возникает ситуация, что результирующие числа могут не умещаться и в два байта. При этом сложение чисел, занимающих несколько байтов в 8-ми разрядной системе, ведется последовательно для всех частей, продвигаясь от младшей части к старшей, причем для младших частей применяется команда ADD, а для всех остальных ADC. Между командами ADC нельзя применять команды, изменяющие значение флага CF.







Date: 2015-10-19; view: 631; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию