Главная страница Случайная лекция Мы поможем в написании ваших работ! Порталы: БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика Мы поможем в написании ваших работ! |
Слово на словоБайт на байт Умножение Беззнаковые и знаковые данные Многие числовые поля не имеют знака, например, номер абонента, адрес памяти. Некоторые числовые поля предлагаются всегда положительные, например, норма выплаты, день недели, значение числа промежуточного итога. Другие числовые поля являются знаковые, так как их содержимое может быть положительным или отрицательным. Например, долговой баланс покупателя, который может быть отрицательным при переплатах, или алгебраическое число.
Для беззнаковых величин все биты являются битами данных и име< н> ограничения +32767 регистр может содержать числа до +65535. I 'in таковых величин левый байт является знаковым битом. Команды ADD и SUB не делают разницы между знаковыми и без-iпиковыми величинами, они просто складывают и вычитают биты. В следующем примере сложения двух двоичных чисел, первое •ми- мо содержит единичный левый бит. Для беззнакового числа биты представляют положительное число .'•!'>. идя знакового — отрицательное число -7: Беззнаковое Знаковое 1111 1001 249 -7 + + + + 0000 0010 2 +2 1111 1011 251 -5 Двоичное представление результата сложения одинаково для без-шлкового и знакового числа. Однако, биты представляют +251 для беззнакового числа и -5 для такового. Таким образом, числовое содержимое поля может интерпре-i пронаться по разному. Состояние «перенос» возникает в том случае, когда имеется т-ренос в знаковый разряд. Состояние «переполнение» возникает в том случае, когда перенос и шаковый разряд не создает переноса из разрядной сетки или перенос и I разрядной сетки происходит без переноса в знаковый разряд. При возникновении переноса при сложении беззнаковых чисел, |н- (ультат получается неправильный. При возникновении переполнения при сложении знаковых чи->ел, результат получается неправильный. При операциях сложения и вычитания может одновременно возникнуть и переполнение, и перенос.
Операция умножения для беззнаковых данных выполняется командой MUL, а для знаковых — IMUL (Integer Multiplication — умножение целых чисел). Ответственность за контроль над форматом обрабатываемых чисел и за выбор подходящей команды умножения лежит на самом программисте. Существуют две основные операции умножения: Множимое находится в регистре AL, а множитель в байте памяти или в однобайтовом регистре. После умножения произведение находится в регистре АХ. Операция игнорирует и стирает любые данные, которые находились в регистре АН. Множимое находится в регистре АХ, а множитель — в слове памяти или в регистре. После умножения произведение находится и двойном слове, для которого требуется два регистра: старшая (левая) часть произведения находится в регистре DX, а младшая (правая) часть в регистре АХ. Операция игнорирует и стирает любые данные, которые находились в регистре DX. В единственном операнде команд MUL и IMUL указывается множитель. Рассмотрим следующую команду: MUL MULTR В случае, если поле MULTR определено как байт (DB), то операция предполагает умножение содержимого AL на значение байта из поля MULTR. В случае, если поле MULTR определено как слово (DW), то операция предполагает умножение содержимого АХ на значение слова из поля MULTR. В случае, если множитель находится в регистре, то длина регистра определяет тип операции, как это показано ниже: MUL CL ;Байт-множитель: множимое в AL. произвед. в АХ MUL ВХ ;Слово-множитель:множимое в АХ, произвед. в DX:AX Беззнаковое умножение: Команда MUL Команда MUL (MULtiplication — умножение) умножает беззнаковые числа.
Знаковое умножение: Команда IMUL Команда IMUL (Integer MULtiplication — умножение целых чисел) умножает знаковые числа. Команда MUL рассматривает шест.80 как +128, а команда IMUL — как -128. В результате умножения -128 на +64 получается -8192 или шест.ЕООО. Если множимое и множитель имеет одинаковый знаковый бит, то команды MUL и IMUL генерируют одинаковый результат. Но, если сомножители имеют разные знаковые биты, то команда MUL вырабатывает положительный результат умножения, а команда IMUL — отрицательный.
Дата добавления: 2014-03-11; просмотров: 472; Нарушение авторских прав Мы поможем в написании ваших работ! |