Микроалгоритм сложения чисел в прямых кодах с использованием обратных кодов для вычитания
В ЗУ ЭВМ числа хранятся в прямом или дополнительном кодах. В обратном коде числа хранить нецелесообразно, так как в случае необходимости обратный код можно легко получить из прямого порязрядным инвертированием, для чего не требуется дополнительных затрат оборудования и времени. Операнды извлекаются из ЗУ и пересылаются в регистры АЛУ в том виде, в котором они хранились в ЗУ. Поэтому в зависимости от того, в каких кодах хранятся числа в ЗУ, различают операции в прямых и дополнительных кодах.
При проектировании суммирующих блоков (СБ) для сложения и вычитания чисел в прямых кодах основные затруднения связаны с реализацией операции вычитания. Если в СБ не используется специальная операционная схема-вычитатель, то вычитание реализуется путем его замены операцией сложения прямого кода одного операнда с дополнительным или обратным кодом второго операнда. При использовании дополнительного кода результат операции также будет представлен дополнительным кодом. Прямой код положительного результата, необходимый для записи в ЗУ, совпадает с его дополнительным кодом. При отрицательном результате для образования прямого кода необходимо провести его порязрядное инвертирование и добавить 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)