Арифметические операции над двоичными числами с плавающей точкой
В современных ЭВМ числа с плавающей точкой хранятся в памяти машин, имея мантиссу и порядок (характеристику) в прямом коде и нормализованном виде. Все арифметические действия над этими числами выполняются так же, как это делается с ними, если они представлены в полулогарифмической форме (мантисса и десятичный порядок) в десятичной системе счисления. Порядки и мантиссы обрабатываются раздельно.
Сложение (вычитание). Операция сложения (вычитания) производится в следующей последовательности.
1. Сравниваются порядки (характеристики) исходных чисел путем их вычитания р=р1-р2. При выполнении этой операции определяется, одинаковый ли порядок имеют исходные слагаемые.
2. Если разность порядков равна нулю, то это значит, что одноименные разряды мантисс имеют одинаковые веса (двоичный порядок). В противном случае должно проводиться выравнивание порядков.
3. Для выравнивания порядков число с меньшим порядком сдвигается вправо на разницу порядков Ар. Младшие выталкиваемые разряды при этом теряются.
4. После выравнивания порядков мантиссы чисел можно складывать (вычитать) в зависимости от требуемой операции. Операция вычитания заменяется операцией сложения в соответствии с данными табл. 2.3. Действия над слагаемыми производятся в ОК или ДК по общим правилам.
5. Порядок результата берется равным большему порядку.
6. Если мантисса результата не нормализована, то осуществляются нормализация и коррекция значений порядка.
|
|
Пример 5. Сложить два числа А10=+1.375; B10=-0.625.
А2=+1.011=0: 1011*101; B2=-0.101=-0:101*100.
В нормализованном виде эти числа будут иметь вид:
1. Вычитаем порядки Δp=p1-p2=1-0=1. В машине эта операция требует операции сложения с преобразованием порядка чисел в дополнительный код:
Определяем, что Δр≠ 0.
2. Порядок первого числа больше порядка второго числа на единицу. Требуется выравнивание порядков.
3. Для выравнивания порядков необходимо второе число сдвинуть вправо на один разряд.
[B2]исх=0: 0 1: 101
после сдвига
[B2]п=0: 11:0101
[mB]дк= 1: 1011
4. Складываем мантиссы.
Мантисса числа С - положительная.
5. Порядок числа С равен порядку числа с большим порядком, т.е. р = +1.
[С2]п=0: 1 0: 0110.
Видно, что мантисса результата не нормализована, так как старшая цифра мантиссы равна нулю.
6. Нормализуем результат путем сдвига мантиссы на один разряд влево и соответственно вычитаем из значения порядка единицу:
Умножение (деление). Операция умножения (деления) чисел с плавающей точкой также требует разных действий над порядками и мантиссами. Алгоритмы этих операций выполняются в следующей последовательности.
1. При умножении (делении) порядки складываются (вычитаются) так, как это делается над числами с фиксированной точкой.
|
|
2. При умножении (делении) мантиссы перемножаются (делятся).
3. Знаки произведения (частного) формируются путем сложения знаковых разрядов сомножителей (делимого и делителя). Возможные переносы из знакового разряда игнорируются.
Задание:
I | II | III | IV | V | VI | |
1 | 149,37510 | 711,2510 | 360,2510 | 741,12510 | 597,2510 | 237,7310 |
65,216 | -3BF,A16 | -2FE,616 | 24A,416 | 24D,516 | BB,416 | |
2 | 101010000,10111 | 1100110110,0011 | 11001010,01 | 1111100100,11011 | 1101111111,1 | 1000101001,1 |
11001100,01 | 11111110,01 | 1110001,001 | 101110111,011 | 1100111110,1011 | 1111101,1 | |
3 | X=69,416 Y=A,D16 | X=2B,A16; Y=36,616 | X=7,416; Y=1D,416 | X=36,416; Y=A,A16 | X=4B,216; Y=3C,316 | X=4A,316 Y=F,616; |
4 | X=326,810; Y=-15,210 | X=-220,1510; Y=6,2910 | X=150,4610; Y=-7,52310 | X=365,0210; Y=-18,25110 | X=-128,310; Y=6,41510 | X=421,210; Y=-11,710 |
Порядок выполнения работы:
Выполните арифметические операции в естественной и нормальной форме:
1. сложение
2. вычитание
3. умножение
4. деление
Контрольные вопросы:
1. Сформулируйте правила сложения чисел в форме с плавающей точкой
2. Чем отличается числа в форме с фиксированной точкой от чисел с плавающей точкой.
Практическая работа №3
Тема: Умножение в АЛУ двоичных чисел с фиксированной точкой
Цель работы:
Средства:
Литература:
|
|
1. Калабеков Б.А. Цифровые устройства и микропроцессорные системы. – М.: Горячая линия, 2005г
2. Калиш Г.Г. Основы вычислительной техники. – М. Высш. шк., 2000 г.
Краткие теоретические сведения:
Умножение двоичных чисел
Применительно к двоичной ПСС наиболее известны следующие основные способы выполнения операций умножения:
умножение начиная с младших разрядов множителя:
умножение начиная со старших разрядов множителя:
При «ручном» методе в обоих случаях умножение сводится к последовательному поразрядному умножению множимого на цифры множителя и накоплению (суммированию) получаемых частичных произведений. При этом операциями сложения могут управлять разряды множителя: если в 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
Контрольные вопросы:
- Какие виды АЛУ вы знаете?
- Перечислите основные методы ускорения умножения
- Как реализуется операция умножения в АЛУ?
Практическая работа №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. 1991\n\n");
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.2x\n",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
Краткие теоретические сведения:
Дата добавления: 2019-09-13; просмотров: 665; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!