<<
>>

Команды преобразования типов

Что делать, если размеры операндов, участвующих в арифметических операциях, разные? Например, предположим, что в операции сложения один операнд занима- ет слово, а другой — двойное слово.
Ранее было сказано, что в операции сложения должны участвовать операнды одного формата. Если числа без знака, то выход найти просто. В этом случае можно на базе исходного операнда сформировать но- вый операнд (формата двойного слова), старшие разряды которого просто запол- нить нулями. Сложнее ситуация для чисел со знаком: как динамически, в ходе вы- полнения программы, учесть знак операнда? Для решения подобных проблем в системе команд процессора есть так называемые команды преобразования типа. Эти команды расширяют байты в слова, слова — в двойные слова и двойные сло- ва — в учетверенные слова (64-разрядные значения). Команды преобразования типа особенно полезны при преобразовании целых со знаком, так как они автоматиче- ски заполняют старшие биты вновь формируемого операнда значениями знаково- го бита исходного объекта. Эта операция приводит к целым значениям того же знака и той же величины, что и исходная, но уже в более длинном формате. Подоб- ное преобразование называется операцией распространения знака. Существуют два вида команд преобразования типа. II Команды без операндов — эти команды работают с фиксированными регис- трами: П CBW (Convert Byte to Word) — команда преобразования байта (в регистре AL) в слово (в регистре АХ) путем распространения значения старшего бита АL на все биты регистра АН; П CWD (Convert Word to Double) — команда преобразования слова (в регистре АХ) в двойное слово (в регистрах DX:AX) путем распространения значения старшего бита ах на все биты регистра DX; О CWDE (Convert Word to Double) — команда преобразования слова (в регист- ре АХ) в двойное слово (в регистре ЕАХ) путем распространения значения старшего бита АХ на все биты старшей половины регистра ЕАХ; ? CDQ (Convert Double Word to Quarter Word) — команда преобразования двой- ного слова (в регистре ЕАХ) в учетверенное слово (в регистрах ЕDХ:ЕАХ) пу- тем распространения значения старшего бита ЕАХ на все биты регистра EDX; it Команды обработки строк (также глава 12). Эти команды обладают полезным свойством в контексте нашей проблемы: П movsх операнд_l,операнд_2 — команда пересылки с распространением знака расширяет 8- или 16-разрядное значение операнд_2, которое может быть ре- гистром или операндом в памяти, до 16- или 32-разрядного значения в од- ном из регистров, используя знаковый бит для заполнения старших позиций значения операнд_l (данную команду удобно использовать для подготовки операндов со знаками к выполнению арифметических операций); П mоvzх операнд_l,операнд_2 — команда пересылки с расширением нулем рас- ширяет 8- или 16-разрядное значение операнд_2 до 16- или 32-разрядного с очисткой (заполнением) нулями старших позиций значения операнд_2 (данную команду удобно использовать для подготовки операндов без знака к выполнению арифметических действий). К примеру, вычислим значение у = (а + b)/с, где а,b, с — байтовые знаковые переменные (листинг 8.7).
Арифметические операции над двоично-десятичными числами
В этой программе делимое для команды IDIV (строка 18) готовится заранее. Так как делитель имеет размер байта, то делимое должно быть словом. С учетом этого сложение осуществляется параллельно с преобразованием размера результата в слово (строки 14-17). Например, расширение операндов со знаком производит- ся двумя разными командами — СВW и MOVSX.
<< | >>
Источник: В. И. Юров. Assembler. Учебник для вузов. 2-е изд. 2003

Еще по теме Команды преобразования типов:

  1. Определение команды.
  2. § 4.5. Деятельность команд в организации
  3. Признаки команды.
  4. Пример настройки и реабилитации в футбольной команде
  5. Работа с другими командами
  6. Четыре шага по созданию эффективной команды
  7. Статья 108. Преобразование юридического лица
  8. Кто становится лидером команды
  9. 25. Преобразование хозяйственных товариществ и обществ (корпораций)
  10. Преобразование
  11. ШЕСТЬ СТУПЕНЕЙ НА ПУТИ СОЗДАНИЯ КОМАНДЫ.
  12. Создание деловой команды «Вероятно, я не лучший советчик в этом вопросе».
  13. Статья 1111. Типовой лицензионный договор
  14. Эд САЛЛИВАН. ВРЕМЯ — ДЕНЬГИ Создание команды разработчиков, программного обеспечения, 2001