Файл: Дроздов Е.А. Многопрограммные цифровые вычислительные машины.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.04.2024

Просмотров: 286

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

четаний цифр 01 при сложении полбжйтельных чисел ( п о л о ж и ­

т е л ь н о е п е р е п о л н е н и е ) ,

либо 10 при сложении отрица­

тельных чисел ( о т р и ц а т е л ь н о е

п е р е п о л н е н и е ) . Посколь­

ку старший знаковый разряд при переполнении соответствует дей­ ствительному знаку числа, его часто называют просто знаковым. Младший знаковый разряд, который при переполнении принимает значение, противоположное знаку числа, тем самым указывая на наличие переполнения, часто называют разрядом переполнения.

Переполнение можно фиксировать и не вводя специального разряда переполнения. Для этого необходимо регистрировать пере­ носы из знакового разряда и из старшего значащего (цифрового, расположенного правее знакового). Если при сложении кодов эти

Тетрады

—г-

^

1

к

1

-1-----

 

 

 

<\_

 

л

3н

1

 

2

3

 

 

 

1 1 1 1

 

..1 1 1 1 1 1 1 - 1_

__ i4 i 1

0 1 2 3 4 5 6 7 8 9

1213

 

Л

 

 

 

 

а

 

 

 

 

 

Тетрады

 

 

 

 

О 1 2 3 4

 

 

 

 

 

 

Рис.

2.3.

Примеры

размещения

в

разрядной

сетке двоично-десятичных чисел со знаками:

о — с

одноразрядным

кодом

знака; б — с

четырехраз­

 

 

 

рядным кодом знака

 

 

переносы отсутствуют или возникают оба вместе, то переполнения нет. В противном случае, если возникает перенос только из стар­ шего значащего разряда или только из знакового (переносы не согласуются), тб имеет место переполнение.

Десятичные числа. Для кода знака десятичного числа может отводиться один или несколько разрядов. В первом случае это мо­ жет быть крайняя левая позиция (нулевая) в разрядной сетке, как показано на рис. 2.3, а. В остальных позициях правее располага­ ются двоично-десятичные тетрады, самая правая из которых соот­ ветствует младшему разряду целого десятичного числа.

■В многопрограммных ЦВМ с десятичной арифметикой находит применение кодирование знаков 4-разрядньтми двоичными кодами. В этом случае код знака десятичного числа в двоично-десятичном изображении обычно размещается справа, как показано на

рис. 2.3,6. Знаки «+ » и «—», например,

кодируются следующим

образом:

 

 

 

1010 ------------1101h ----- ;

1011

-

1110 —

h;

1100-----h

1111 — +.

47


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

 

 

 

Т а б л и ц а 2.5

 

Естественный

Код с избытком

Код с избытком

Десятичная цифра

двоично-десятичный

3

6

 

код

 

 

 

0

0 0 0 0

ООН

ОНО

1

0 0 0 1

0 1 0 0

0 1 1 1

2

0 0 1 0

0 1 0 1

1 0 0 0

3

ООП

ОНО

100 1

4

0 1 0 0

0 1 1 1

1 0 1 0

5

0 1 0 1

1 0 0 0

1 0 1 1

6

ОНО

1001

1 1 0 0

7

0 1 1 1

1 0 1 0

1 1 0 1

8

1 0 0 0

101 1

1 1 1 0

9

1001

1 1 0 0

1 1 1 1

Если при сложении десятичных цифр получается результат, больший десяти, то необходимо единицу переноса передать в сле­ дующий десятичный разряд. Наиболее просто это можно сделать, представив либо цифры обоих слагаемых в коде с избытком три, либо цифры одного из слагаемых в коде с избытком шесть (см. табл. 2.5). Если при выполнении сложения с применением таких кодов возникает перенос в следующую тетраду, то результат в дан­ ном разряде получается в естественном двоично-десятичном коде. Если в каких-либо тетрадах переносы не возникли, то для получе­ ния истинного результата из кодов этих тетрад необходимо вы­ честь избытки 6. Вычитание числа 6 (ОНО) можно заменить при­ бавлением его дополнения до 24, т. е. 1010.

Пример 2.7. Сложить числа 7 и 18.

Двоично-десятичные коды этих чисел, представленные одинаковым количе­ ством двоичных разрядов, будут иметь вид 0000 0111 и 0001 1000, Представим первое число в коде с избытком 6 :

0000 0111

ОНО оно ОНО 1101

48


В результате сложения этого кода со вторым числом получим

ОНО

1101

+ 0001

1000

1000 0101

1J

Так как возник перенос п только из первой тетрады, то необходимо скорректи* ровать вторую тетраду, вычтя из нее 6 (прибавив по mod 16 дополнение 1 0 1 0 ). Таким образом, истинный результат

1000 0101

+1010 0000

Ж0010 0101,

т. е. равен десятичному числу 25.

При выполнении операции вычитания вычитаемое представляет­ ся в дополнительном коде. В целом действия над кодами и их коррекция при выполнении вычитания не сложнее, чем при сло­ жении. Из-за особенностей кодирования знаков знак результата приходится формировать по специальным правилам.

§2.4. Арифметические операции над двоичными числами

сфиксированной запятой

Чи с л а , у ч а с т в у ю щ и е в о п е р а ц и я х , — п р а в и л ь н ы е д р о б и

При такой форме представления независимо от величин чисел их машинные коды (операнды), над которыми производятся ариф­ метические действия, обычно имеют одинаковое количество разря­ дов (длину). Для увеличения точности вычислений в машинах мо­ жет предусматриваться возможность вычислений, например, с двойной разрядностью. В этих случаях либо арифметические устройства рассчитываются на непосредственное оперирование с операндами двойной длины, либо вычисления с повышенной точностью организуются программно. Сначала складываются младшие разряды чисел удвоенной разрядности, а затем старшие.

Сложение и вычитание. При выполнении этих операций по командам СЛОЖИТЬ и ВЫЧЕСТЬ операнды из запоминающего устройства посылаются в арифметическое устройство. Чтобы све­ сти процесс выполнения команды ВЫЧЕСТЬ к алгебраическому сложению, знак кода вычитаемого, поступающего в арифметиче-

3-821

49


ское устройство, искусственно меняется на обратный. Это измене­ ние может выполняться путем суммирования по mod 2 кода знака

с единицей, специально

вырабатываемой схемой

управления

по

команде ВЫЧЕСТЬ.

В результате получается

0® 1 = 1

или

1 0 1 = 0 *.

 

 

 

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

1. Если в запоминающем устройстве числа хранятся в прямом коде, то, применяя первый способ, приходится коды отрицательных чисел, поступающие в арифметическое устройство, преобразовы­ вать в дополнительный или обратный код в зависимости от того, какой из них принят в машине. Необходимость такого преобразова­ ния определяется по значению знакового разряда операнда. Если в этом разряде нуль (положительное число), то преобра­ зования не требуется, и число передается в сумматор в прямом коде.

При таком способе выполнения сложений и вычитаний для об­ наружения случаев переполнения разрядной сетки используют мо­ дифицированные коды. Модифицированный код образуется при

передаче операнда в сумматор

путем искусственного добавле­

ния второго знакового разряда.

При положительном

числе в оба

знаковых разряда сумматора поступает код 0, при

отрицатель­

ном — код 1.

 

 

По окончании выполнения каждой операции сложения и вычи­ тания чисел, представленных в модифицированных кодах, произво­ дится анализ результата и вырабатывается его признак ПР. В этот анализ может входить определение равен, меньше или боль­ ше нуля результат и не возникло ли переполнение. Если признак ПР представляется двумя двоичными разрядами, то равенству ре­ зультата нулю может соответствовать, например, ПР = 00, резуль­ тату, меньшему нуля, ПР = 01, большему нуля ПР = 10 и перепол­ нению ПР =11.

При возникновении переполнения разрядной сетки (ПР = 11) происходит прерывание исполняемой программы. Остальные при­ знаки служат цели обеспечения возможности построения развет­ вляющихся вычислительных процессов.

Пример 2.8. 1. Выполнить операцию алгебраического сложения над числами, хранящимися в запоминающем устройстве в прямом коде.

* Символ ф означает сложение по модулю два, при котором единица пе­ реноса теряется.

50


Исходные операнды

 

Сложение в сумматоре

а) [Л1]пр = 0 ’.1 0 Ю

И.]"р =

ОО’.ЮЮ

+

+ .

[Л2]пр = 0’.0111

[Л2]“р =

00-.0111

[Л,]Цр + [Л2]”в =

01’.0001 = [Л, + Л2]”в; ПР = 11 (Переполнение!):

 

ЗПр

пр-

б)

[Л^пр =

0’ЛОЮ

+

Hilnp =

00’.1010

 

[Л2]пр =

1’.0111

=

+

1 l’.iooi

 

 

[Л,]»р + [Л2]»оп = ж

 

оо’.оон = [л^л^пр:

 

Единица переноса из

>

t

 

 

 

старшего знакового раз­

 

---------

 

 

 

ряда не учитывается

 

 

 

2.

Выполнить операцию алгебраического вычитания над числами,

в)[Л 1]пр=

Г.1010

+

[Л ,];п =

11-.0110

 

[Л2]пр=1-.0111

,доп

 

+

 

 

' -Л.1ЙР =

оо-.ош

HiJnp =

оомою

+ № р = + пмооо

пр=ю

__ОО’.ООЮ

 

I-- v + 1

Hilnp + [^=1обр =

00’-0°l 1 = И . + -42]”p: ПР = 10.

хранящимися в запоминающем устройстве в прямом коде.

[Л,]

обр

11-.0101

+

 

н

+

-> [-л 2]“

=

0 0-.0111

 

^101=0 [л,]^ + |-л,1“р = 1 1-.1101 = [Л!—л2]“оп; ПР = 01 [Л,]“обрв„ + [-л 2]«0 = п-.поо = [л ,-л

обр»

 

 

 

 

Jnp

ПР =01

Искусственное изменение знака вы­

 

 

 

 

Результат в прямом коде

 

читаемого в специальном сумматоре

 

 

по модулю два перед посылкой Л2

 

И ,—Л2]пр =

Г.0011:

 

в сумматор арифметического

 

 

 

 

устройства

 

 

 

 

 

г) [Л1]пр =

1’.10Ю

•1ДОП. .

11-.0110

№ Р=

11’.0101

 

[Л2]пр =

0’.0111

- + \ - А*]доп=

+

- * [ - Л 2]”бр =

+ 11’.Ю00

 

‘ HMOOl

 

 

 

 

м .

 

- 10-.1101

 

 

U *)®1 = 1 И С п + I ~А2]доп = ЖЮМ111 = [А ,-42]Д0П>

 

 

 

 

ПР = 11 (Переполнение!)

 

— ->+1

 

сл

 

 

 

[^а1обр + [—^=]обр =

ЮМ по = [Л,- Л 2]“6р;

 

 

 

 

ПР = 11 (Переполнение!)