October 18 2017 02:44:43
Навигация
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации .

Забыли пароль?
Запросите новый здесь.
Команды CBW
ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ

Команды CBW/CWDE и CWD/CDQ осуществляют преобразование хранящегося в аккумуляторе байта (AL), слова (АХ) или двойного слова (ЕАХ) соответственно в одинарное, двойное или четверное слово (16,32 или 64 разряда) путем расширения знакового разряда. При выполнении команд CBW, CWDE расширенный операнд остается в аккумуляторе: AL в АХ или АХ в ЕАХ. При выполнении команд CWD, CDQ расширение АХ, ЕАХ производится в регистры DX или EDX, куда заносится старшая половина (расширенный знак) результата. Команды CBW, CWD реализуются, когда процессор работает в режимах реальных адресов или виртуального 8086 (обработка 16-разрядных слов). Команды CWDE, CDQ выполняются в защищенном режиме (обработка 32-разрядных слов). Эти операции обычно производятся перед выполнением команды IDIV для образования из 8-, 16- или 32-разрядных операндов делимого удвоенной разрядности.

Команды ААА, AAS, AAM, AAD обеспечивают получение правильного результата арифметических операций над неупакованными двоично-десятичными числами (от 0 до 9), значение которых представляется одним байтом. Такое представление чисел используется в коде ASCII (КОИ-7), который в младшей тетраде содержит двоичный код соответствующего десятичного числа (0 - 9), а в старшей тетраде - код 0011. Для получения правильного результата перед обработкой таких чисел в старшей тетраде устанавливается код 0000. Результат арифметических операций над двоично-десятичными числами размещается в ре- гистре АХ. После сложения, вычитания, умножения выполняются команды коррекции ААА, AAS, ААМ, после чего в младшей тетраде регистра AL образуется двоичный код младшего десятичного разряда результата, а в младшей тетраде регистра АН - двоичный код старшего разряда результата. Например, после умножения чисел 9 и 7, которые в неупакованной двоично-десятичной форме задаются кодами 0000 1001 и 0000 0111, в регистре AL будет содержаться произведение 001111111 = 63, которое после коррекции с помощью команды ААМ будет представлено в регистре АХ в следующем виде: (АН) = 00000110, (AL) = 00000111 (соответственно 6 и 3 в двоично-десятичном коде). Команда AAD, в отличие от ААА, AAS, ААМ, выполняется перед командой DIV. При этом двоично-десятичное число, старший десятичный разряд которого расположен в регистре АН, а младший - в регистре AL, преобразуется таким образом, чтобы после команды DIV содержимое AL, АН представляло младший и старший десятичные разряды частного в неупакованной двоично-десятичной форме.

Команды DAA и DAS осуществляют коррекцию результата сложения и вычитания чисел в упакованной двоично-десятичной форме. При этом старшая и младшая тетрады байта содержат двоичные коды старшего и младшего разряда двухразрядного десятичного числа. Например, число 63 в данной форме будет представлено в регистре AL кодом 01100011. После сложения упакованных двоично-десятичных чисел 63=0110 0011 и 18 = 00011000 в регистре AL будет получен код 01111011, который после выполнения команды DAA преобразуется в двоично-десятичную форму 10000001 = 81. При выполнении команд DAA и DAS учитывается значение признака переноса между тетрадами AF. После их выполнения устанавливается AF = 0. Следует отметить, что при использовании двоично-десятичного представления чисел соответствующие команды коррекции должны выполняться и после команд INC, DEC.

Команда NEG изменяет знак операнда, преобразуя его в дополнительный код. Комплексная команда XADD осуществляет обмен содержимым между регистром и регистром или ячейкой памяти, после чего выполняет их сложение, результат которого размещается в регистре или ячейке памяти.

Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, авторизуйтесьили зарегистрируйтесь для голосования.

Нет данных для оценки.

Время загрузки: 0.02 секунд 2,254,920 уникальных посетителей