|
|||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Команды двоичного умножения и деленияКоманды, выполняющие двоичное умножение и деление для рассматриваемого микропроцессора, приведены в табл. 6. Таблица 6
Продолжение таблицы 6
Команды умножения осуществляют умножение байт с получением результата-слова и умножения слов, давая в результате двойное слово. При этом, умножая байты необходимо использовать указатель типа byte ptr после команды mul (imul), а при умножении слов – word ptr. Команды imul и mul устанавливают флаги OF и CF в состояние ”1”, если для результата требуется два байта или два слова одновременно. Проверяя состояние этих флажков, можно определить, размещается произведение в одном байте или слове. Остальные Флажки могут модифицироваться, но их состояния не определены, т. е. не предсказуемы. В качестве src может быть общий регистр или ячейка памяти с любым режимом адресации, но не может быть непосредственный операнд. Отметим, что в обоих командах imul и mul переполнение невозможно, так как для произведения отводится достаточное место. Например: пусть в al находится чело 0В4h, которое можно интерпретировать как знаковое -76 или беззнаковое 180 . В регистре BL поместим число 11h, которое соответствует 17 Тогда, применив команду imul bl, получим (ax)= 0FAF4h= –1292 и (CF)=(OF)= 1, так как результат велик для 8 бит. Если применить команду mul bl, то получим (ax)=0BF4h =3060 и (CF)=(OF)= 1. Команды деления idiv и div дают неопределенное состояние флагов и, как команды умножения, не допускают непосредственных операндов, т.е. делитель должен находиться в одном из РОН или ячейки памяти. В команде idiv знакового деления знак частного, определяется по алгебраическому правилу, а остатку присваивается знак делимого. Отметим, что для получения правильного результата, операция деления накладывает определенные ограничения на размерность, делимого и делителя, а именно: если делитель слово, то делимое должно иметь формат двойного слова; если делитель байт, то делимое слово. В некоторых случаях длина частного может превысить длину аккумулятора (ax или al). В этом случае МП генерирует внутреннее прерывание типа 0 и переходит к соответствующей процедуре обработки этого прерывания. Аналогичная ситуация возникает если делитель равен нулю. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |