logo
Лекции по теории автоматов

Модифицированный код.

При суммировании чисел с одним знаком возможна ситуация, когда результат не вмещается в разрядность модуля (предыдущий пример).

Получают число с обратным знаком. Чтобы легко выявить такие ситуации используют модифицированный знаковый разряд, когда под знаковый разряд отводят два разряда 00 – положительное число, 11 – отрицательное число.

В случае переполнения, получается 01, 10, причем старший бит соответствует правильному значению знака, а младший показывает о наличии переполнения, 10 – отрицательное переполнение.

+23 0010111

+18 0010010

0101001 положительное переполнение.

-23 1101000

1100101

1 1010101

1010110 переполнение

Операционный автомат (неоптимальный), сумматор накапливающий.

X1

Y1

X1

Y8

Y9

X2

X3

X4

Предполагаем, что А, В, С представлены в прямом коде, суммировать будем представленные в обратном коде.

А, В, С представлены в модифицированном коде.

У0– на входе регистра – сигнал записи (микрооперация записи).

У0 - У2– на входах сумматора – микрооперация сброса и суммирования накапливающего сумматора.

У8, У9– положительное и отрицательное переполнение.

Остальные микрооперации управляются шиной.

Х1, Х2– логические условия, показывающие значения операндов А, В соответственно.

По начальной микрооперации У0осуществляется прием А, В – обновление сумматора.

У0: RGA : = A

RGB : = B

SM : = 0

Y1, Y2: SM : = RGA

Y3, Y2: SM [0,1] : = RGA [0,1]

SM [2:k] : = ¬ RGA [2:k]

Y4, Y2: SM : = SM + RGB

Y5, Y2: SM : = SM + RGB [0,1], ¬ RGB [2:k]

Y6: C : = SM

Y7: C : = SM [0,1], ¬ SM [2:k]

Y8:Y8 : = 1 (положительное переполнение)

Y9:Y9 : = 1 (отрицательное переполнение)

Положительные и отрицательные переполнения по У0 сбрасываются. Уnможно записать новое значение в регистре А, В вместо У0.