рефераты рефераты
Главная страница > Учебное пособие: Цифровые вычислительные устройства и микропроцессоры приборных комплексов  
Учебное пособие: Цифровые вычислительные устройства и микропроцессоры приборных комплексов
Главная страница
Банковское дело
Безопасность жизнедеятельности
Биология
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
География экономическая география
Геодезия
Геология
Госслужба
Гражданский процесс
Гражданское право
Иностранные языки лингвистика
Искусство
Историческая личность
История
История государства и права
История отечественного государства и права
История политичиских учений
История техники
История экономических учений
Биографии
Биология и химия
Издательское дело и полиграфия
Исторические личности
Краткое содержание произведений
Новейшая история политология
Остальные рефераты
Промышленность производство
психология педагогика
Коммуникации связь цифровые приборы и радиоэлектроника
Краеведение и этнография
Кулинария и продукты питания
Культура и искусство
Литература
Маркетинг реклама и торговля
Математика
Медицина
Реклама
Физика
Финансы
Химия
Экономическая теория
Юриспруденция
Юридическая наука
Компьютерные науки
Финансовые науки
Управленческие науки
Информатика программирование
Экономика
Архитектура
Банковское дело
Биржевое дело
Бухгалтерский учет и аудит
Валютные отношения
География
Кредитование
Инвестиции
Информатика
Кибернетика
Косметология
Наука и техника
Маркетинг
Культура и искусство
Менеджмент
Металлургия
Налогообложение
Предпринимательство
Радиоэлектроника
Страхование
Строительство
Схемотехника
Таможенная система
Сочинения по литературе и русскому языку
Теория организация
Теплотехника
Туризм
Управление
Форма поиска
Авторизация




 
Статистика
рефераты
Последние новости

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

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 (число бит множителя). Умножение выполняется младшими битами вперед со сдвигом вправо частичного произведения. Последовательность действий при этом методе умножения следующая:

– Содержимое аккумулятора и регистра-расширителя R1 сдвигается вправо на один бит так, что младший бит множителя, выдвигаемый из регистра R1, помещается в триггер флага C.

– Если C = 1, то множимое добавляется к содержимому аккумулятора, в противном случае никаких операций не производится.

– Декрементируется счетчик циклов R3, и если его содержимое не равно нулю, то все действия повторяются.

– Перед выходом из подпрограммы формируется окончательный результат сдвигом частичного результата на один бит вправо:

MPL:    MOV    R3,#8           ; загрузка счетчика циклов

CLR      A                               ; очистка аккумулятора

CLR      C                                ; очистка признака переноса

SHIFT: RRC      A                  ; сдвиг аккумулятора вправо

XCH     A,R1                          ; обмен аккумулятора и R1

RRC     A                                ; сдвиг множителя с занесением

                                                ; выдвигаемого бита в C

XCH     A,R1                          ; обмен аккумулятора и R1

JNC      RESULT                    ; если C = 1, то суммирование

ADD     A,R2                          ; прибавление множимого

RESULT: DJNZ R3,SHIFT     ; декремент счетчика и проверка

                                               ; окончания операции (R3 = 0)

RRC     A                                ; сдвиг аккумулятора

XCH     A,R1                          ; обмен

RRC     A                                ; сдвиг содержимого R1

XCH     A,R1                          ; обмен

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

рефераты
Новости