![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Команды сложения - ADD, ADC
Команды ADD (add - сложить) и ADC (add with carry- сложить с переносом) могут складывать как 8, так и 16-битовые операнды. Команда ADD складывает содержимое операнда-источника и операнда-приемника и помещает результат в операнд-приемник. Формат команды: ADD приемник, источник В символической нотации ее действия можно описать следующим образом: приемник: = приемник + источник. Команда ADC делает то же, что и команда ADD, но складывает не два, а три слагаемых. Приемник, источник и флаг переноса. Формат команды: ADC приемник, источник + CF В символической нотации ее действия можно описать как: приемник: = приемник + источник + перенос. Перенос при сложении двоичных чисел аналогичен переносу при сложении десятичных чисел в столбик. Когда ЭВМ складывает двоичные числа и сумма не помещается в операнде-приемнике, то генерируется перенос. Как известно, 8-битовый регистр может содержать значения без знака в диапазоне от 0 до 255. Если мы, например, выполним двоичное сложение чисел 250 и 10, то получим следущее: 1111 1010; двоичное представление числа 250. + 0000 1010; двоичное представление числа 10. 1 0000 0100; ответ: десятичное значение 260. Результат верен, но занимает 9 двоичных битов. Если при выполнении этой операции мы использовали 8-битовые регистры, то младшие 8 битов будут занесены в регистр-приемник, а девятый бит- во флаг переноса CF. Теперь нетрудно понять, почему микропроцессор 8086 имеет две разные команды сложения. Одна из них (ADD) может складывать значения, представляемые байтами или словами, а также младшие части значений повышенной точности. Другая команда (ADC) используется для сложения старших частей значений повышенной точности. Например, команда ADD AX, CX; складывает 16-битовые значения регистров АХ и СХ и возвращает результат в регистр АХ. Если операнды имеют длину более 16 битов, то можно воспользоваться командами которые складывают 32-битовое число, находящееся в регистрах СХ и DX, с 32-битовым числом, находящимся в регистрах АХ и ВХ в два приема. Например: ADD АХ, СХ; Сначала сложить младшие 16 бит, а затем ADC BX, DX; старшие 16 бит. Складываемые операнды могут находиться в памяти, регистре или иметь непосредственное значение. Например: ADD АХ, MEM_WORD; Добавить содержимое ячейки памяти к регистру ADD MEM_WORD, AX; или наоборот. ADD AL, 10; Добавить константу к регистру ADD MEM_BYTE, OFH; или к ячейке памяти. Допускается большинство возможных комбинаций, но нельзя добавить значение одной ячейки памяти к другой или использовать в качестве приемника непосредственное значение. Команды ADD и ADC могут воздействовать на следующие шесть флагов: флаг переноса CF равен 1, если результат сложения не помещается в операнде-приемнике, в противном случае он равен 0; флаг четности PF равен 1, если результат имеет четное число битов со значением 1, в противном случае он равен 0; вспомогательный флаг переноса AF равен 1, если результат сложения десятичных чисел требует коррекции, в противном случае он равен 0; флаг нуля ZF равен 1, если результат равен 0, в противном случае он равен 0; флаг знака SF равен 1, если результат отрицателен (старший бит равен 1), в противном случае он равен 0 флаг переполнения OF равен 1, если слагаемое двух чисел одного знака превышает диапазон допустимых значений приемника в обратном коде, а сам приемник при этом меняет знак. Иначе флаг OF равен 0. Флаги SF и OF имеют смысл только при сложении чисел со знаком, а флаг AF только при сложении десятичных чисел. 3.1.2 Команды безусловной передачи управления –
|