Коррекция результата сложения для представления в кодах ASCII и в упакованном десятичном формате (команды AAA и DAA ). — КиберПедия 

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Коррекция результата сложения для представления в кодах ASCII и в упакованном десятичном формате (команды AAA и DAA ).

2024-02-15 20
Коррекция результата сложения для представления в кодах ASCII и в упакованном десятичном формате (команды AAA и DAA ). 0.00 из 5.00 0 оценок
Заказать работу

Как уже упоминалось, при выполнении сложения микропроцессор 8x86 рассматривает операнды как двоичные числа. Что же произойдет, если они будут двоично-десятичными кодами чисел (кратко десятичными или BCD-числа­ми)? Разберемся в этом на примере. При сложении упакованных BCD-чисел 26 и 55 микропроцессор 8x86 выполнит следующее двоичное сложение:

 

00100110 (BCD-число 26)

+01010101 (BCD-число 55)

01111011 (??)

Вместо правильного значения (BCD-число 81) мы получим результат, у которого старшая цифра 7, а младшая - шестнадцатеричная цифра В. Означает ли это, что нельзя складывать десятичные числа? Нет, это означает лишь то, что результат должен быть скорректирован для представления в десятичной форме.

Коррекция результата сложения десятичных чисел осуществляется командами ААА (ASCII adjust for addition - скорректировать результат сложения для представ­ления в кодах ASCII) и DAA (Decimal adjust for addition - скорректировать сложе­ние для представления в десятичной форме). В них не требуется наличия операн­да: предполагается, что корректируемое значение находится в регистре AL.

Команда ААА преобразует содержимое регистра AL в правильную неупакован­ную десятичную цифру в младших четырех битах регистра AL (и заполняет нуля­ми старшие четыре бита). Она используется в следующем контексте:

 

ADD AL,BL ;Сложить неупакованные числа, находящиеся в AL и BL

ААА           ; и преобразовать результат в неупакованное число

Если результат превышает 9, то команда ААА добавляет 1 к содержимому регист­ра АН (чтобы учесть избыточную цифру) и полагает флаг CF равным 1; в против­ном случае она обнуляет флаг CF. Кроме того, команда ААА изменяет состояние флага AF и оставляет значения флагов PF, ZF, SF и OF неопределенными. Но так как в данном случае только флаг CF имеет смысл, то считайте значения остальных флагов уничтоженными.

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

 

ADD AL,BL  ;Сложить упакованные BCD-числа в AL и BL

DAA               ; и преобразовать результат в упакованное число

Если результат превышает предельное значение для упакованных BCD-чисел (99), то команда DAA добавляет 1 к содержимому регистра АН и полагает флаг CF равным 1. Кроме того, команда DAA изменяет состояния флагов PF, AF, ZF и CF и оставляет значение флага OF неопределенным. Но так как в данном случае только флаг CF имеет смысл, то считайте остальные пять флагов уничтоженными.

 

Команда приращения значения приемника на единицу

Команда INC (increment - прирастить) добавляет 1 к содержимому регистра или ячейки памяти, но в отличие от команды ADD не воздействует на флаг переноса CF. Команда INC удобна для приращения значений счетчиков в циклах команд. Ее можно использовать и для приращения значения индексного регистра или указателя при доступе к последовательно расположенным ячейкам памяти.

Приведем несколько примеров:

INC CX                               ;Прирастить значение 16-битового

INC AL                                          ;или 8-битового регистра

INC MEM_ВYТЕ                ;Прирастить значение байта

INC MEM_WORD[BX]             ;или слова памяти

 

Как ни странно, приращение значения 8-битового регистра отнимает у микро­процессора 8x86 больше времени, чем приращение значения 16-битового регистра. Это вызвано тем, что разра­ботчики фирмы Intel предполагали, что программисты будут чаще пользоваться счетчиками размером в слово, а не байт, и предусмотрели специальную однобай­товую версию команды INC для 16-битовых регистров.


Поделиться с друзьями:

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.006 с.