Головна

команди множення

  1. А. Теореми додавання і множення ймовірностей.
  2. Алгоритми множення № 1
  3. Алгоритми множення № 2
  4. Алгоритми множення № 3
  5. Алгоритми множення № 4
  6. Виполняеніе команди
  7. Дії над випадковими подіями. Теореми додавання і множення.

Якщо додавання і віднімання беззнакових і знакових чисел виробляються по одним і тим же алгоритмам, то множення чисел цих двох класів виконується за різними алгоритмами, в зв'язку з чим в ПК є дві команди множення:

Множення цілих без знака (multiply): MUL ор

Множення цілих зі знаком (integer multiply): IMUL ор

В іншому ці команди діють однаково:

Множення байтів: АХ: = АL * ор (ор: r8, m8)

Множення слів: (DX, AX): = АХ * ор (ор: rl6, ml6)

Операнд ор, що вказується в команді, - це лише один із співмножників; він може перебувати в регістрі або в пам'яті, але не може бути безпосереднім операндом. Місцезнаходження іншого сомножителя фіксоване і тому в команді не вказується явно: при множенні байтів він береться з регістра AL, а при множенні слів - з регістра АХ.

Місцезнаходження результату множення також заздалегідь відомо і тому в команді явно не вказується. При цьому під результат відводиться в два рази більше місця, ніж під співмножники. Це пов'язано з тим, що множення n-значних чисел в загальному випадку дає твір з 2n чисел, і з бажанням зберегти всі цифри твори. При множенні байтів результат має розмір слова і записується на повний регістр АХ (в АН - старші цифри твори, в AL - молодші), а при множенні слів результат має розмір подвійного слова і записується в два регістра - в регістр DX заносяться старші цифри твори, а в регістр АХ - молодші цифри.

приклади:

N DB 10

...

MOV AL, 2

MUL N; AX = 2 * 10 = 20 = 0014h: AH = 00h, AL = 14h

MOV AL, 26

MUL N; AX = 26 * 10 = 260 = 0104h: AH = 01h, AL = 04h

MOV AX, 8

MOV ВХ, -1

IMUL ВХ; (DX, AX) = -8 = 0FFFFFFF8h: DX-0FFFFh, AX = 0FFF8h

Отже, команди множення видають результат у подвоєному форматі. Це не завжди зручно: то ми працювали з числами-байтами, а тут доводиться переходити на обробку чисел-слів. У той же час далеко не завжди величина твори настільки велика, що йому потрібен подвоєний формат; наприклад, в першій і третій з наших команд множення для результату цілком достатньо було б звичайного формату. Тому важливо знати, чи дійсно твору потрібен подвійний формат або йому досить і одинарного формату. Іноді про це відомо заздалегідь (ми заздалегідь знаємо, що перемножуються невеликі числа), але іноді це можна встановити тільки після множення. В останньому випадку питання про те, уміщається чи результат множення в формат сомножителей чи ні, вирішується за допомогою аналізу прапорів переносу CF і переповнення OF, які в обох командах множення змінюються синхронно і за таким правилом:

CF = OF = 1 - якщо твір займає подвійний формат

CF = OF = 0 - якщо твору достатній формат сомножителей

При CF = 0 (одночасно і OF = 0) можна вважати, що твір байтів займає лише регістр AL, а твір слів - тільки регістр АХ, і далі можна працювати тільки з цими регістрами. Але якщо CF = 1, то далі доводиться працювати з твором як з числом подвоєного формату.



Команди додавання і віднімання | команди ділення

Особливості складання чисел в зворотному і додатковому кодах. | Числа з фіксованою точкою. | Числа з плаваючою точкою. | Арифметичні операції над числами з фіксованою точкою | Арифметичні операції над двійковими числами з плаваючою точкою | Множення двійкових чисел | Склад обладнання | Визначення обсягу оперативної пам'яті | Зміна розміру числа | Розширення байта до слова (convert byte to word): CBW |

© um.co.ua - учбові матеріали та реферати