Читайте также: |
|
Наиболее просто умножение целых чисел можно выполнить по алгоритму, изображенному на рис. 3.2. После загрузки множимого А и множителя В в регистры общего назначения и обнуления регистра произведения С проводится анализ содержимого регистра множителя. Если 5 О, то к сумме частичных произведений С прибавляется множимое А.
Затем содержимое регистра множителя уменьшается на 1 и цикл умножения повторяется до тех пор, пока содержимое регистра множителя не окажется равным 0. При умножении «-разрядных сомножителей 2«-разрядное произведение размещают в двух регистрах. Данный метод умножения находит ограниченное применение в тех приложениях, где время умножения некритично (при 8-разрядных сомножителях максимальная продолжительность операции умножения может составить 255 циклов сложения).
На практике больше распространены методы умножения путем сложения ряда частичных произведений С = где 6; – значение разряда множителя (; = О, 1,…, п-\). Один из алгоритмов умножения, начиная с младших разрядов множителя, со сдвигом вправо суммы частичных произведений приведен на рис. 3.3.
Этот алгоритм может быть использован для получения произведения двух двоичных чисел без знака. Количество итераций умножения п определяется числом разрядов множителя. Поскольку в процессе умножения на каждой итерации выполняется сдвиг множителя В на один разряд вправо, на место освобождаемого разряда можно записать выталкиваемый при сдвиге вправо разряд произведения С. Таким образом, 2«-разрядное произведение можно получить, объединив содержимое «-разрядного регистра, в котором формируется старшая часть произведения, и регистра В, в котором после выполнения умножения окажется младшая часть произведения.
при делении делимого величиной в учетверенное слово на делитель величиной в двойное слово, причем значение делимого в более чем 4 294 967 296 раз больше значения делителя.
К примеру, выполним деление значения в области del на значение в области delt (листинг 6).
Для деления чисел без знака предназначена команда
Div делитель
Делитель может находиться в памяти или в регистре и иметь размер 8, 16 или 32 бит. Местонахождение делимого фиксировано и так же, как в команде умножения, зависит от размера операндов. Результатом команды деления являются значения частного и остатка.
Варианты местоположения и размеров операндов операции деления показаны в табл. 3.
Таблица 3. Расположение операндов и результата при делении
Делимое | Делитель | Частное | Остаток |
16 бит в регистре ax | Байт регистр или ячейка памяти | Байт в регистре al | Байт в регистре ah |
32 бит dx — старшая часть ax — младшая часть | Слово 16 бит регистр или ячейка памяти | Слово 16 бит в регистре ax | Слово 16 бит в регистре dx |
64 бит edx — старшая часть eax — младшая часть | Двойное слово 32 бит регистр или ячейка памяти | Двойное слово 32 бит в регистре eax | Двойное слово 32 бит в регистре edx |
После выполнения команды деления содержимое флагов неопределенно, но возможно возникновение прерывания с номером 0, называемого “деление на ноль”. Этот вид прерывания относится к так называемым исключениям.
Умножение двоичных чисел со знаком. Деление двоичных чисел со знаком
Дата добавления: 2015-11-26; просмотров: 91 | Нарушение авторских прав