русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Команды умножения.


Дата добавления: 2015-06-12; просмотров: 683; Нарушение авторских прав


Процессор i486 разделяет умножение операндов со знаком и операндов без знака. Команда MUL работает с целыми без знака, в то время как команда IMUL работает как с целыми со знаком, так и с целыми без знака.

MUL (Умножение целых без знака) выполняет умножение без знака операнда-источника и регистра AL, AX или EAX. Если источником является байт, процессор умножает его на значение, хранящееся в регистре AL и возвращает результат удвоенной длины в регистры AH и AL. Если исходный операнд является словом, процессор умножает его на значение, хранящееся в регистре AX и возвращает результат удвоенной длины в регистры DX и AX. Если операнд-источник является двойным словом, процессор умножает его на значение, хранящееся в регистре EAX и возвращает результат в виде учетверенного слова в регистры EDX и EAX. Команда MUL устанавливает флаги CF и OF, если старшая половина результата отлична от нуля; в противном случае флаги очищаются. Состояние флагов SF, ZF, AF и PF не определено.

IMUL (Умножение целых со знаком) выполняет операцию умножения со знаком. Команда IMUL имеет три формы :

  1. Форма с одним операндом. Операнд может быть словом, байтом или двойным словом, расположенным в памяти или в регистре общего назначения. Эта команда использует регистры EAX и EDX как операнды по умолчанию тем же образом, что и команда MUL.
  2. Форма с двумя операндами. Одним из исходных операндов должен быть регистр общего назначения, другим операндом может быть как регистр общего назначения, так и ячейка памяти. Результат заменяет содержимое регистра общего назначения.
  3. Форма с тремя операндами : два операнда являются источниками, третий операнд является приемником. Одним из операндов-источников является непосредственное значение, указанное в команде; вторым может быть регистр общего назначения или ячейка памяти. Результат сохраняется в регистре общего назначения. Непосредственный операнд является целым со знаком в двоично-дополнительном коде. Если непосредственный операнд является байтом, процессор автоматически расширяет его со знаком до размера второго операнда, прежде чем выполнить умножение.

Во многих отношениях вышеприведенные три формы похожи :



  • Длина результата равняется удвоенной длине операндов.
  • Флаги CF и OF устанавливаются, когда значащие биты переносятся в старшую половину результата. Флаги CF и OF очищаются, когда старшая часть результата является продолжением знака младшей части результата. Состояние флагов SF, ZF, AF и PF не определено.

Тем не менее, форматы 2 и 3 отличаются, так как разультат усекается до длины операндов, прежде чем он он будет сохранен в регистре назначения. По причине такого усечения необходимо проверить флаг OF, чтобы быть уверенным, что ни один из значащих битов не потерян. (Чтобы ознакомиться со способами проверки флага OF, смотри команды JO, INTO и PUSHF). Форматы 2 и 3 команды IMUL также могут быть использованы с операндами без знака, так как вне зависимости от того, являются ли операнды целыми со знаком или без знака, младшая половина результата остается одной и той же. Однако флаги CF и OF не могут быть использованы, для того чтобы определить, отличается ли правая часть результата от 0.



<== предыдущая лекция | следующая лекция ==>
Команды сложения и вычитания. | Команды деления


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.142 сек.