Умножение двоичных чисел

Применительно к двоичной ПСС наиболее известны следующие основные способы выполнения операций умножения:

умножение начиная с младших разрядов множителя:

умножение начиная со старших разрядов множителя:

При «ручном» методе в обоих случаях умножение сводится к последовательному поразрядному умножению множимого на цифры множителя и накоплению (суммированию) получаемых частичных произведений. При этом операциями сложения могут управлять разряды множителя: если в i-м разряде множителя находится единица, то к сумме частичных произведений добавляется множимое с соответствующим сдвигом на i — 1 разряд (вправо или влево в зависимости от принятого способа выполнения операции умножения); если в i-м разряде множителя нуль, то множимое не прибавляется.

При «машинном» методе произведение формируется в виде возрастающего (по модулю) значения частичной суммы, равной после умножения на i-й разряд множителя сумме первых i частичных произведений.

Рассмотренные примеры показывают, что для получения произведения, помимо сложения, необходимо выполнять операции сдвига чисел (множимого либо частичной суммы). Очевидно, что произведение двух n - разрядных чисел есть число 2n - разрядное. Поэтому в случае ограничения поля цифр произведения n разрядами при умножении целых чисел в качестве результата берутся младшие n разрядов (и старших n разрядах должны быть нули, так как в противном случае вырабатывается признак переполнения), а мри умножении правильных дробей в качестве результата берутся старшие n разрядов (младшие n разрядов отбрасываются — происходит усечение числа — либо используются для округления кода старших n разрядов).

Знак произведения формируется по известному правилу: (+)•(+) = (+); (+)•(-) = (-); (-)•(+) = (-);( — )•( — ) = (+). В ЭВМ, как было указано в § 2.3, знак « —» числа кодируется единицей, а «+» — нулем, но правило формирования знака сохраняется. Операция, которую реализует ЭВМ для определения знака произведения, называется суммой по модулю два и обозначается : ;; ;.

 

Существует четыре метода умножения. Рассмотрим наиболее распространенный метод умножения целых чи­сел, начиная с младшего разряда со сдвигом суммы частичных про­изведений вправо при неподвижном множимом (рис. 7.4).

Операция умножения состоит из п или п—1 циклов (п—1 —чис­ло цифровых разрядов множителя). В каждом цикле анализиру­ется очередная цифра множителя, и если это 1, то к сумме частич­ных произведений прибавляется множимое; если 0 — прибавления множимого не происходит. Цикл завершается сдвигом суммы час­тичных произведений относитель­но неподвижного множителя (если не выполняется умножение на знаковый разряд).

Регистр множителя и сумма­тор частичных произведений при этом должны иметь цепи сдвига вправо. Регистр множимого мо­жет не иметь цепей сдвига. По­следовательность действий в каждом цикле выполнения опера­ции умножения определяется младшим разрядом регистра мно­жителя, куда последовательно одна за другой поступают цифры множителя. Так как по мере сдви­га множителя вправо старшие разряды регистра множителя освобождаются, он может быть использован для хранения младших разрядов произведения, поступающих из младшего разряда сумма­тора частичных произведений. Для этого младший разряд регист­ра сумматора соединяется со старшим разрядом регистра множи­теля. После выполнения операции умножения старшие разряды произведения будут находиться в регистре сумматора, младшие — в регистре множителя. Здесь все три регистра имеют одинаковую длину, равную количеству разрядов сомножителей.

Схема АЛУ для умножения n-разрядных положительных двоич­ных чисел приведена на рис. 7.5. В состав АЛУ входят входной ре­гистр множимого Рг1, регистры множителя Рг2 и Рг2’ на которых с помощью специально организованной передачи цепи сдвига впра­во Рг2/ = П(1)Рг2 и передачи Рг2=Рг2' выполняется сдвиг мно­жителя вправо, сумматор СМ для образования суммы частичных произведений, входной РгВ и выходной РгСМ регистры сумматора, на которых соответственно хранится текущее значение и образует­ся новое значение суммы частичных произведений и окончательное произведение.

Первоначаль­но в Pг1 поступает множимое. Регистр РгВ, хранящий сумму час­тичных произведений, устанавливается в нулевое состояние, а в счетчик циклов СчЦ за­носится число обрабаты­ваемых цифровых разря­дов. Затем в Рг2 поступает множитель. На этом завершается процедура началь­ных установок и начина­ется процесс вычисления сумм частичных произве­дений.

В зависимости от зна­чений (0 или 1) младшего разряда множителя к час­тичному произведению прибавляется либо 0, либо х, для чего регистру РгА сумматора присваивается соответствующее значе­ние. Полученная сумма умножается на 2-1 путем передачи кода с выхода сумматора на РгСМ со сдвигом на один разряд вправо. Одновременно множитель подготавлива­ется к перемещению в Рг2 так, чтобы на месте анализируемого младше­го разряда в Рг2 оказался следующий разряд множителя. Для этого содержимое регистра Рг2 передается в регистр Рг2' со сдвигом вправо на один раз­ряд.

Разряд 0 регистра Рг2’ при этом остается свободным и в него заносится младший разряд суммы, выходящий при сдвиге за пре­делы регистра РгСМ (Рг2'[0]: = СМ[п—1]. В следующем такте завершается сдвиг множителя путем занесения содержи­мого регистра Рг2' в регистр Рг2 и в регистре РгВ образуется сдвинутая сумма частичных произведений.

Кроме того, в этом такте уменьшается на 1 содержимое счет­чика циклов. Когда счетчик циклов достигает нуля, в регистрах РгСМ и Рг2 будут храниться соответственно старшие и младшие разряды произведения, требующие сдвига на один разряд вправо для правильного расположения в формате двойного слова. После выполнения этих сдвигов результат операции из РгСМ и Рг2 поступает на ШИВых.

Задание:

Составить алгоритм выполнения операции умножения целых положительных чисел.

Порядок выполнения работы:

  1. Зарисовать схему АЛУ.
  2. Разработать алгоритм, опираясь на схему и описание работы.
  3. Внести изменения в алгоритм умножения для одной из трех схем умножения:

Схема 1

Схема 2

Схема 3

Контрольные вопросы:

  1. Какие виды АЛУ вы знаете?
  2. Перечислите основные методы ускорения умножения
  3. Как реализуется операция умножения в АЛУ?

 

Практическая работа №4

Архитектура ЭВМ и вычислительных систем

Тема: CMOS - память компьютера

Цель работы: Познакомится с основными принципами работы с CMOS

Средства: Турбо Си+

Литература:Айден К., Колесниченко О.Аппаратные средства PC. 2-е издание. – СПб.: BHV-Санкт-Петербург, 1998

Краткие теоретические сведения:

CMOS – память представляет собой энергонезависимую память, содержимое которой сохраняется после выключения компьютера. В CMOS - памяти хранится текущее время и дата, сведения о конфигурации системы, результат тестирования при включении питания и другая информация, приведенная в следующей таблице:

Адрес ячейки Содержимое

00h - 0Dh +

Используются часами реального времени

0Eh Байт состояния диагностики при включении питания

0Fh Байт состояния отключения

10h Тип используемого НГМД

11h Зарезервировано

12h Тип НМД (если тип меньше 15)

13h Зарезервировано

14h Конфигурация оборудования

15h - 16h Объем основной памяти

17h - 18h Объем расширенной (extended) памяти

19h Тип первого НМД (если тип > 15)

1Ah Тип второго НМД (если тип > 15)

1Bh - 20h Зарезервировано

21h - 2Dh Зарезервировано

2Eh - 2Fh Контрольная сумма ячеек 10h - 20h

30h - 31h Объем расширенной (extended) памяти

32h Текущее столетие в двоично-десятичном

коде (19h для 19-го столетия)

33h Различная информация

34h - 3Fh Зарезервировано

Программа для чтения содержимого CMOS-памяти:

#include <stdio.h>

#include <stdlib.h>

main()

{

unsigned char cmos[164];

int i;

printf("n*Чтение из CMOS* ©Фролов A. 1991nn");

for(i=0; i < 64; i++)

{

outp(0x70,i);

cmos[i]=inp(0x71);

}

printf("nЯчейки часов реального времени: ");

for(i=0; i < 0xd; i++)

{

printf("%02.2x ",(unsigned)cmos[i]);

}

printf("nБайт диагностики: %02.2x",cmos[0xe]);

printf("nБайт отключения: %02.2xn",cmos[0xf]);

printf("nPassword : ");

for(i=0x34; i < 0x40; i++)

{

printf("%02.2x ",(unsigned)cmos[i]);

}

cmos[0x40]=0;

printf(">%s<n",&cmos[0x34]);

return 0;

}

 

Задание: Написать программу чтения содержимого CMOS-памяти.

Порядок выполнения работы:

1. Ввести и откомпилировать приведенную выше программу.

2. Прокомментировать каждое предложение программы

Контрольные вопросы:

1. Назначение CMOS-памяти

2. Как осуществляется питание CMOS-памяти в современных ПК?

3. По какому адресу находится текущее столетие в двоично-десятичном коде?

 

Практическая работа №5

Архитектура ЭВМ и вычислительных систем

Тема: Базовая система ввода/вывода BIOS

Цель работы: Познакомится с основными принципами работы с BIOS

Средства: Турбо Си+

Литература: Айден К., Колесниченко О.Аппаратные средства PC. 2-е издание. – СПб.: BHV-Санкт-Петербург, 1998

Краткие теоретические сведения: