АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Команды сложения и вычитания

Читайте также:
  1. В командном спарринге могут принимать участие только команды, участвовавшие в командных туль.
  2. Великолепная целостность после сложения всех частей
  3. Виды дисперсий, правило сложения дисперсий
  4. Внутренние команды MS-DOS размещены в файле
  5. Вывод сооб-я команды в конец файла с сохр-ем ранее записан инф-и (дозапись) или созд-ем нов файла осущ-ся
  6. Грудная клетка в целом. Формы грудной клетки, типы телосложения.
  7. Д). Команды удаления каталога RD и DELTREE
  8. Даче команды для выемок.
  9. Действия над событиями. Теоремы сложения и умножения вероятностей.
  10. Значение, особенности и виды групповой работы. Особенности работы с местными сообществами. Основные проблемы создания команды при работе с местными сообществами.
  11. игроков баскетбольной команды
  12. Команда проекта. Основные задачи команды проекта. Формирование и развитие команды проекта.

Команды сложения и вычитания, используемые микропроцессором Intel 80×86 приведены в табл. 3.

Таблица 3

Название Мнемоника и формат Описание
Сложение Сложение с переносом Вычитание Вычитание с заёмом add dst,src adc dst,src sub dst,src sbb dst,src (dst)←(src)+(dst) (dst)←(src)+(dst)+(CF) (dst)←(src) – (dst) dst)←(src)–(dst) – (CF)

 

В качестве операндов dst и src в этихкомандах могут быть указаны общие регистры и ячейки памяти с любым режимом адресации. Кроме того, в качестве src может быть указани непосредственный операнд. Результат выполнения этих команд изменяет состояние следующих флагов: OF, SF, AF, PF, CF.

Отметим, что бит CF устанавливается в “1”, когда возникает перенос из 16-ого разряда при сложении и заём в 16-й разряд при вычитании. Состояние этого флага можно использовать для анализа переполнения при работе с беззнаковыми операндами. В арифметике двойной и т.д. точности этот флаг используется в командах adc и sbb. Признаком переполнении при работе со знаковыми числами служит состояние флага OF.

Приведём пример сложения с двойной точностью:

Перенос

А0

+ 0021 В79Е

D3E

Фрагмент программы, реализующий данную операцию:

.

.

.

mov ax,x1; сложить младшие слова из x1 и y1

add ax,y1; и поместить сумму в sum

Mov sum,ax

mov ax,x1+2; сложить старшие слова из x1 и y1

adc ax,y1+2; и поместить сумму в sum+2

mov sum+2,ax

.

.

.

В нём предполагается, что младшие слова операндов и суммы находятся соответственно в x1, y1 и sum, а старшие слова в x1, y1 и sum+2. Младшие словаскладываются командой add (поскольку нет необходимости учитывать значение флага CF от предыдущей операции), а старшие слова – adc. Аналогичным образом при операции с большей точностью операнды следует хранить в последовательно расположенных ячейках памяти, причём младшее слово имеет наименьший адрес, следующее слово – адрес больший на 2 и т.д.

Рассмотрим вычитание с двойной точностью.

 

Заем 1

– 0006→A92F

В837

F0F8

По прежнему правильные результаты получаются при обработке операндов по 16 бит. Прив е дем пример программы вычисляющей выражение U=X+Y+24–Z с двойной точностью:

.

.

.

mov ax,x; сложить числа с двойной

mov dx,x+2; точностью x, x+2 и y,y+2

Add ax,y

adc dx,y+2

add ax,24; прибавить к результату число 24

adc dx,0; с двойной точностью

sub ax,z; вычесть из суммы число z, z+2

sbb dx,z+2; с двойной точностью

mov w,ax; запомнить весь результат в w, w+2

mov w+2,dx

.

.

.

 

Команды расширения знака.

Команда cbw расширяет знак байта из регистра al, образуя в регистре ax эквивалентное слово в дополнительном коде. Если например, (al) = 11001000, то после выполнения команды cbw в регистре ax получится код 1111111111001000. Аналогично команда cwd расширяет знак слова из ax в регистр dx, формирую двойное слово dx:ax. В обеих командах операнд неявно указывается кодом операции и должен находиться в al или ax, Флажки не модифицируются. Рассмотренные команды используются для выравнивания длины операндов, участвующих в операциях сложения и вычитания.


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |

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



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.007 сек.)