Микроалгоритм сложения чисел в прямых кодах с использованием обратных кодов для вычитания

 

В ЗУ ЭВМ числа хранятся в прямом или дополнительном кодах. В обратном коде числа хранить нецелесообразно, так как в случае необходимости обратный код можно легко получить из прямого порязрядным инвертированием, для чего не требуется дополнительных затрат оборудования и времени. Операнды извлекаются из ЗУ и пересылаются в регистры АЛУ в том виде, в котором они хранились в ЗУ. Поэтому в зависимости от того, в каких кодах хранятся числа в ЗУ, различают операции в прямых и дополнительных кодах.

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

Алгоритм сложения-вычитания чисел и , где и – знаки чисел, закодированные двоичными цифрами («+» → 0, «–» → 1); ,– разряды мантисс (), в прямых кодах с использованием обратных кодов для вычитания состоит в следующем:

1. Если , то на сумматор подается прямой код мантиссы X (т.е. ). Если , то на сумматор подается инверсный код мантиссы X ().

2. Если и знак операции s совпадают, то , если , то .

3. Образуется прямой код результата Z = X s Y.

Для реализации этого алгоритма СБ должен содержать три регистра: RGX, RGY, RGZ, сумматор SM с цепью циклического переноса и обеспечивать указанные в алгоритме передачи. Выполнение алгоритма состоит в проверке условий и , в зависимости от исхода которой на сумматор передается прямое или инверсное содержимое регистров RGX и RGY. При этом в знаковые разряды SM поступают 00, если содержимое регистра передается прямым кодом, или 11, если передается инверсное содержимое регистра. После образования суммы слово с выходов SM принимается на RGZ и далее производится анализ знака . Если , то это означает, что в RGZ уже записан прямой код результата; он и передается на шину данных BD. Если же , то для образования прямого кода необходимо на BD передать инверсное значение разрядов мантиссы результата и 1 в знаковый разряд. Операторное описание микроалгоритма сложения (МАС) имеет следующий вид:

Здесь символы (BG) и (END) указывают начало и конец МАС, стрелки вида соответствуют проверяемым логическим условиям (условным переходам), стрелки вида – безусловным переходам, стрелки вида указывают места переходов, а микрооперации имеют следующий смысл:

; ; ; ;

; ; .

Выполнение некоторых микроопераций (МО) и проверку логических условий (ЛУ) можно совместить во времени. Отобразить эту особенность в операторном описании МАС можно путем записи таких МО и ЛУ в виде отдельных строк:

(BG)

(такт 1)

(такт 2)

(такт 3)

(END)