Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Топ:
Устройство и оснащение процедурного кабинета: Решающая роль в обеспечении правильного лечения пациентов отводится процедурной медсестре...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Интересное:
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Распространение рака на другие отдаленные от желудка органы: Характерных симптомов рака желудка не существует. Выраженные симптомы появляются, когда опухоль...
Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей...
Дисциплины:
2024-02-15 | 21 |
5.00
из
|
Заказать работу |
|
|
Команды SUB (substract - вычесть) и SBB (substract with borrow - вычесть с заемом) аналогичны соответственно командам сложения ADD и ADC, только при вычитании флаг переноса CF действует как признак заема . Команда SUB вычитает операнд-источник из операнда-приемника и возвращает результат в операнд-приемник, т.е.
приемник = приемник — источник
Команда SBB делает то же самое, но дополнительно вычитает значение флага переноса CF:
приемник = приемник - источник - перенос
Как и в случае сложения, команды вычитания выполняют две отдельные функции. Первая команда SUB вычитает числа размером в байт или слово, а также младшие биты чисел повышенной точности. Другая команда SBB вычитает старшие биты чисел повышенной точности. Например, команда
SUB AХ,СХ
вычитает содержимое регистра СХ из содержимого регистра АХ и возвращает результат в регистр АХ.
Если размеры операндов превышают 16 битов, то пользуйтесь последовательностью команд вида
SUB AX,BX ;Вычесть младшие 16 битов,
SBB BX,DX ; а затем — старшие 16 битов
Здесь мы вычитаем 32-битовое число, помещенное в регистры СХ и DX, из 32-битового числа, помещенного в регистры АХ и ВХ. При вычитании содержимого регистра DX из содержимого регистра ВХ команда SBB учитывает возможность заема при выполнении первого вычитания.
Можно вычитать из содержимого регистра содержимое ячейки памяти (и наоборот) или вычитать из содержимого регистра либо ячейки памяти непосредственное значение. Ниже приведены примеры допустимых команд:
SUB AХ,MEM_WORD ; Вычесть из регистра содержимое ячейки памяти
SUB MEM_WORD[BX],AХ ; или наоборот
SUB AL,10 ; Вычесть константу из регистра
SUB MEM_BYTE,OFH ; или из ячейки памяти
|
Нельзя непосредственно вычесть значение одной ячейки из другой или использовать непосредственное значение как приемник.
Команды SUB и SBB могут воздействовать на шесть флагов следующим образом:
Флаг переноса 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 – только при вычитании десятичных чисел.
Коррекция результата вычитания для представления в кодах ASCII и в упакованном десятичном формате (команды AAS и DAS ).
При вычитании, как и при сложении, микропроцессор 8x86 рассматривает операнды как двоичные числа. Поэтому вычитание чисел, представленных в двоично-десятичном коде (BCD-чисел), может привести к неправильным результатам. Предположим, например, что надо вычесть BCD-число 26 из BCD-числа 55. Микропроцессор 8x86 выполнит двоичное вычитание следующим образом: дополнит до двух двоично-десятичное представление числа 26, а затем выполнит сложение:
0101 0101 (BCD-число 55)
+ 1101 1010 (дополнение до двух BCD-числа 26)
1 0010 1111 (??).
Вместо правильного значения (BCD-числа 29) мы получили результат, у которого старшая цифра 2, младшая цифра - шестнадцатеричная цифра F, и при этом бит переноса равен 1. Конечно, этот результат требует коррекции.
Коррекция результата вычитания двух десятичных чисел осуществляется командами AAS (ASCII adjust for substraction - скорректировать вычитание для представления в кодах ASCII) и DAS (Decimal adjust for substraction - скорректировать вычитание для представления в десятичной форме). При их исполнении предполагается, что корректируемое число находится в регистре AL.
|
Команда AAS преобразует содержимое регистра AL в правильную неупакованную десятичную цифру в младших четырех битах регистра AL (и обнуляет старшие четыре бита). Она используется в следующем контексте:
SUB AL,BL ; Вычесть BCD-число (содержимое BL) из AL
AAS ; и преобразовать результат в неупакованное число
Если результат превышает 9, то команда AAS вычитает 1 из содержимого регистра АН и полагает флаг CF равным 1, в противном случае она обнуляет флаг CF. Кроме того, команда AAS изменяет состояние флага AF и оставляет значения флагов PF, ZF, SF и OF неопределенными. Но так как в данном случае только флаг CF имеет смысл, то считайте значения остальных флагов уничтоженными.
Команда DAS преобразует содержимое регистра AL в две правильные упакованные десятичные цифры. Она используется в следующем контексте:
SUB AL,BL ;Вычесть упакованное BCD-число(содержимое) BL из AL
DAS ; и преобразовать результат в упакованное число
Если результат превышает предельное значение для упакованных BCD-чисел (99), то команда DAS вычитает 1 из содержимого регистра АН и полагает флаг CF равным 1; в противном случае она обнуляет флаг CF. Кроме того, команда DAS изменяет состояния флагов PF, AF, ZF и SF, а значение флага OF оставляет неопределенным. Но так как в данном случае только флаг CF имеет смысл, то считайте остальные упомянутые флаги уничтоженными.
|
|
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!