Цифровые вычислительные устройства и микропроцессоры приборных комплексов

Коррекция 0 1 1 0

Результат 0 0 1 1

Пример 1.5. Сложить десятичные двоично-кодированные числа (BCD-числа), расположенные в A и R7:

ADD A,R7 ; двоичное сложение

DA A ; коррекция результата

Алгебраическое сложение с использованием дополнительного кода. Для сложения чисел со знаком необходимо отрицательное число перевести в дополнительный код. В двоичной системе счислени

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

Рассмотрим примеры выполнения операции сложения.

Пусть =0 10110, =1 01101.

Переносы 1 1 1 1

Первое слагаемое 0 1 0 1 1 0

Второе слагаемое 1 1 0 0 1 1

Сумма 0 0 1 0 0 1

Как указывалось выше, перенос, возникающий из знакового разряда, отбрасывается.

Изменим на обратный знаки слагаемых (по отношению к предыдущему примеру): =1 10110, =0 01101. Очевидно, ожидаемый ответ = 1 01001.

Переносы 1

Первое слагаемое 1 0 1 0 1 0

Второе слагаемое 0 0 1 1 0 1

Сумма 1 1 0 1 1 1

Сумма 1 0 1 0 0 1

Таким образом, если результат сложения есть отрицательное число, то оно оказывается представленным в дополнительном коде.

Для вычитания 8-разрядных чисел без знака может быть использовано выражение , где – поразрядная инверсия . Другой способ вычитания может быть основан на следующем выражении: .

Пример 1.6. Вычитание байтов. Операция вычитания может быть выполнена двумя способами: переводом вычитаемого как отрицательного числа в дополнительный код с последующим сложением; переводом уменьшаемого в обратный код с последующей инверсией суммы.

Пусть требуется вычесть из A содержимое регистра R6. Вычитание выполнить в соответствии с выражением . Установка флага C после выполнения сложения будет свидетельствовать об отрицательном переполнении.

CPL A ; инверсия аккумулятора

ADD A,R6 ; сложение

CPL A ; инверсия суммы (получение разности)

Пример 1.7. Получить разность 2-байтных чисел без знака. Операнды располагаются в РПД. Адрес уменьшаемого хранится в R1, а вычитаемого – в R0. Результат поместить на место уменьшаемого:

; вычисление Z = X–Y

; X, Y – РПД

; R0 – адрес Y

; R1 – адрес X

; результат на место X

SUBSTR: MOV A,@R0 ; загрузка младшего байта Y

CPL A ; получение дополнительного кода Y

INC A ;

ADD A,@R1 ; вычитание младших байт

MOV @R0,A ; запоминание младшего байта разности

INC R0 ; переход к старшим байтам X и Y

INC R1 ;

MOV A,@R0 ; загрузка старшего байта Y

CPL A ; обратный код Y

ADDC A,@R1 ; вычитание старших байт

MOV @R0,A ; запоминание результата

Умножение двоичных чисел. Пусть производится умножение чисел 11012 и 10112.

1 1 0 1 множимое

1 0 1 1 множитель

1 1 0 1 1-е частичное произведение

1 1 0 1 2-е частичное произведение

0 0 0 0 3-е частичное произведение

1 1 0 1 4-е частичное произведение

1 0 0 0 1 1 1 1 произведение

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

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

1 1 0 1 4-е частичное произведение

1 1 0 1 0 сдвиг на один разряд влево

0 0 0 0 3-е частичное произведение

1 1 0 1 0 сумма 4- и 3-го частичных произведений

1 1 0 1 0 0 сдвиг на один разряд влево

1 1 0 1 2-е частичное произведение

1 0 0 0 0 0 1 сумма 4-, 3- и 2-го частичных произведений

1 0 0 0 0 0 1 0 сдвиг на один разряд влево

1 1 0 1 1-е частичное произведение

1 0 0 0 1 1 1 1 произведение

Рассмотрим выполнение операции умножения с суммированием частичных произведений, начиная с младшего частичного произведения на примере умножения чисел 11012 и 10112.

1 1 0 1 1-е частичное произведение

0 1 1 0 1 сдвиг на один разряд вправо

1 1 0 1 2-е частичное произведение

1 0 0 1 1 1 сумма 1- и 2-го частичных произведений

1 0 0 1 1 1 сдвиг на один разряд вправо

0 0 0 0 3-е частичное произведение

1 0 0 1 1 1 сумма 1-, 2- и 3-го частичных произведений

1 0 0 1 1 1 сдвиг на один разряд вправо

1 1 0 1 4-е частичное произведение

1 0 0 0 1 1 1 1 сумма частичных произведений

1 0 0 0 1 1 1 1 сдвиг вправо, произведение

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

Пример 1.8. Умножить однобайтные целые числа без знака. В регистре R1 размещен множитель, в регистре R2 – множимое. Двухбайтный результат умножения будет размещен в аккумуляторе (старший байт) и в R1 (младший байт) вместо множителя. В регистр R3, выполняющий функции счетчика программных циклов, загружается число 8 (число бит множителя). Умножение выполняется младшими битами вперед со сдвигом вправо частичного произведения. Последовательность действий при этом методе умножения следующая:

Страница:  1  2  3  4  5 


Другие рефераты на тему «Коммуникации, связь и радиоэлектроника»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы