Простейшая микро-ЭВМ

         

ОПЕРАЦИИ


Рассмотренные в предыдущем параграфе логические операции и описываемые ниже арифмети­ческие операции реализуются в арифметическо-логическом устройстве (АЛУ) микропроцессора, на котором построена ПМ-ЭВМ. Операции выполняются над 8-разрядными двоичными числами, причем старший (левый) разряд может использовать­ся для представления знака числа (значение 0 указывает на положительное число, а 1 — на отрицательное).

Сложение двоичных чисел производится по тем же прави­лам, что и сложение десятичных чисел, за исключением того, что перенос в следующий разряд осуществляется при сумме в данном разряде, равной 2, а не 10. Пусть, например, требуется сложить два числа:

00011 010B = 26D

+     00001 100 В = 12D

00 100 110B=38D.

При сложении крайних правых четырех разрядов имели место все четыре возможные комбинации сложения одноразрядных чисел: 0+0=0, 1 + 0 = 1, 0+1 = 1, 1+1=0. В четвертом разряде сумма равна 2D, или 10 В. Следовательно, необходим перенос единицы из четвертого разряда в пятый. Тогда в пятом разряде опять же 1 + 1 = 0 и после переноса единицы в шестой разряд сумма в шестом разряде будет 1 + 0+0=1.

Нетрудно заметить, что реализация этих операций может быть выполнена с помощью всего двух логических элементов: суммы по модулю 2, или ИСКЛЮЧАЮЩЕГО ИЛИ, реализую­щего функцию f9, соответствующую выходу суммы S, и эле­мента И, реализующего функцию f5, соответствующую выходу переноса в следующий разряд С (рис. 3.3,с). Эта схема сложения одноразрядных чисел без учета входного переноса из предыду­щего разряда называется полусумматором.

Рис. 3.3. Одноразрядные суммирующие схемы: а - полусумматор; б - полный сумматор

Чтобы реализовать сложение с учетом переноса из предыду­щего разряда, необходимо использовать два полусумматора, соединив их так, как показано на рис. 3.3,6. Эта схема носит название полного сумматора, или одноразрядного сумматора. Для сложения двух 8-разрядных двоичных чисел потребуется 8 одноразрядных сумматоров, соединенных таким образом, чтобы сигнал переноса передавался в каждый следующий раз­ряд на вход Св соответствующего полного сумматора.
Сигнал переноса из самого старшего разряда запоминается в специаль­ном триггере, называемом триггером флага переноса, для ука­зания переполнения, имевшего место при сложении.

Поскольку, как указывалось выше, старший разряд может отводиться под знак числа, с помощью 8-разрядной суммирую­щей схемы можно оперировать как с любыми целыми положи­тельными числами в диапазоне от 00 000 000 В = OD до 11 111 111 В = 25 5 D, так и с целыми положительными и отрица­тельными числами в диапазоне от 01 111 111 В = 127D до 10 000 000 В = -128D (в этом случае единица в старшем разряде указывает на отрицательное число, а нуль - на положитель­ное).

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

воспользоваться все той же схемой 8-разрядного сумматора. Пусть, например, требуется выполнить вычитание: 38 D — 26 D. Перейдем к дополнительному коду для числа — 26. Инвертируя код числа 26D и прибавляя единицу в младшем разряде, полу­чаем:

00 011 010 — прямой код 11 100 101 — обратный код

+

1

11 100 110 — дополнительный код. Теперь выполним сложение:

00100 110В + 11 100 110В

100001 100 В =12D.



В результате получили двоичный код десятичного числа 12 D и перенос из старшего разряда. Этот сигнал может быть исполь­зован при выполнении арифметических операций с 16-разряд­ными числами по частям в одном 8-разрядном сумматоре. При этом сначала производится сложение в дополнительном коде младших разрядов суммируемых чисел и запоминание сигнала (единицы) переноса, а затем сложение старших разрядов с уче­том этого сигнала переноса.



Для выполнения операций умножения и деления специальных команд в микропроцессоре КР580ИК80А не предусмотрено. Поэтому эти операции в ПМ-ЭВМ выполняются программным путем с использованием операций сложения, сложения с допол­нительным кодом числа (вычитания) и сдвига (см. § 9.1).

Арифметические операции можно производить также над десятичными числами, закодированными так называемыми двоично-десятичными кодами (двоично-кодированное представ­ление десятичного числа). При таком представлении чисел каж­дая десятичная цифра кодируется четырехразрядным двоичным кодом (кодом прямого замещения, или кодом 8421). После сложения двух двоично-кодированных чисел для получения правильного результата необходимо выполнить коррекцию ре­зультата этой операции. Для этого используется блок десятич­ной коррекции. Он осуществляет требуемую коррекцию ре­зультата путем исполнения специальной команды "десятичной коррекции" DAA (см. список команд в приложении 1), кото­рую необходимо выполнить после команды сложения.



Содержание раздела