Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Лекция 2. Выполнение арифметических операций в МП




 

Цель лекции: освоить выполнение арифметических операций в двоичной системе с применением двоичного кода.

2.1 Системы счислений

Микропроцессор, работает с числами в двоичной системе счисления. Для удобства восприятия чисел человеком применяется также шестнадцатеричная система и двоично-десятичная. Двоично-десятичный код (Binary-Coded Decimal — BCD) является гибридом двоичного и десятичного представлений. Он широко используемым при работе с портами ввода/вывода цифровых устройств, например с семи сегментным символьным индикатором. При таком представлении каждый десятичный разряд заменяется своим двоичным эквивалентом. Выполнение арифметических операций с числами, записанными в 2-10 коде, представляет собой не простую задачу. Поэтому, как правило, BCD-числа сначала преобразовываются в обыкновенные двоичные числа и после выполнения операций вновь преобразовываются в код BCD.

Таблица 1.3 – Системы счислений Различные формы записи чисел от 0 до 20
Десятичная система Двоичная система Шестнадцатеричная система Двоично-десятичный код
       
       
       
       
       
       
       
       
       
       
    А 0001 0000
    В 0001 0001
    С 0001 0010
    D 0001 0011
    Е 0001 0100
    F 0001 0101
      0001 0110
      0001 0111
      0001 1000
      0001 1001
      0010 0000

 

2.2 Двоичная арифметика

Двоичная арифметика подчиняется тем же правилам, что привычная нам арифметика по основанию 10. Простейшей арифметической операцией является операция сложения, представляющая сокращенную форму записи операции нахождения общего количества чего-либо по сравнению с более примитивным про­цессом счета или прибавления единицы. Так, запись 2 + 4 = 6 гораздо удобнее, чем 2+1=3, 3+1=4, 4+1=5, 5+1=6. Хотя отметим, что именно так выполняются операции в МП. Двоичное сложение подчиняется всего 4-м правилам:

0+0=0 0+1=1 1+0=1 1+1=10 (1 в переносе)

Сначала эти правила применяются к самым младшим значащим битам (Least Significant Bit — LSB); при возникновении переноса он передается в бит, располо­женный левее. Процесс вычисления заканчивается старшими значащими битами (Most Significant Bit — MSB). Если из этой позиции происходит перенос, то имен­но он становится самым старшим битом суммы.

Пример а) Десятичные числа 96 1-е слагаемое + 37 2-е слагаемое ^^ Переносы 133 Сумма Пример б) Двоичные числа 1100100 1-е слагаемое +0100101 2-е слагаемое ^^ ^ Переносы 10001001 Сумма

Подобно тому, как при сложении осуществляется прямой счет, операция вычи­тания соответствует обратному счету, при котором от исходного значения отни­маются единицы. Так, операция 8-5=3 эквивалентна последовательности операций 8-1=7, 7-1=6, 6-1=5, 5-1=4, 4-1=3.

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

0-0=0 0-1=1 из старшего бита занимается 1 1-0=1 1-1=0
а) Десятичные числа 96 Уменьшаемое - 37 Вычитаемое ^ Заем 59 Разность б) Двоичные числа 1100000 Уменьшаемое -0100101 Вычитаемое ^^ ^ Заем 0111011 Разность

Несмотря на то, что эти знакомые методы прекрасно работают, при реализа­ции их в цифровых схемах возникает ряд проблем:

- Что делать, если вычитаемое меньше уменьшаемого?

- Как нам различать положительные и отрицательные числа?

- Можно ли выполнить вычитание с помощью блока суммирования?

Чтобы понять суть проблем, рассмотрим следующий пример:

 

 

а) Десятичные числа 37 Уменьшаемое - 96 Вычитаемое ^ Заем 41 Разность (-59) б) Двоичные числа 0100101 Уменьшаемое —1100000 Вычитаемое ^ Заем 1000101 Разность (-0111011)

Чтобы понять, что получилось рассмотрим дополнительный код.

2.3 Дополнительный код

Обычно, если уменьшаемое меньше вычитаемого, мы меняем операнды местами и добавляем знак минуса к результату, т.е. вычисляем выраже­ние разность = вычитаемое - уменьшаемое. Если мы не выполним такой перестановки, как показано в примере, приведенном выше, то результат покажется неверным. На самом деле число 41 является правильным в том смысле, что представляет со­бой разность между числом 59 (правильный результат) и 100. То есть число 41 представляет собой дополнительный код числа 59 в десятичной системе. Более того, сам факт заема из старшего разряда числа указывает на то, что результат операции отрицателен и представлен в дополнительном коде. Для преобразования числа, представленного в дополнительном ко­де, в «нормальный» вид достаточно просто инвертировать каждый десятич­ный разряд и к полученному значению прибавить единицу. Инвертирование де­сятичного разряда заключается в вычитании его значения из 9.

Далее дополнительный код будем обозначать курсивом.

Таким образом, дополнительный код числа -59 в десятичной системе равен 41: 59 -> 40+1= 41.

Причиной, по которой мы не оставляем отрицательные числа в дополнительном коде, является необычность для нас такого представления. Разумеется, использование дополнительного кода для представления отрицательных значений применимо и к двоичным числам. Причем, простота инвертирования (0—>1, 1—>0) делает этот метод очень привлекательным. Обратимся к приведенному выше примеру:

1000101 -> 0111010 + 1 = -0111011, т.е. -59 в десятичной системе.

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

2.4 Знаковый разряд

При работе с десятичными числами для обозначения положительных и отрицательных чисел используются знаки «+» и «-» соответственно. В системе с двумя состояниями мы можем оперировать только единицами и нулями. Тем не менее, взглянув на последний пример, можно получить ключ к решению этой проблемы. Как уже было сказано, отрицательное значение получается в результате заема в старший разряд числа. Так что мы можем использовать этот разряд в качестве знакового бита (sign bit), причем 0 будет эквивалентен знаку «+», и I -- знаку «-». Таким образом, число b’ 1 1000101’ будет соответствовать значе­нию —59, а b' 0 0111011 — значению +59 (в примерах знаковый бит выделен полу­жирным шрифтом). Преимущество такого представления заключается в том, что при любых арифметических операциях с ним можно обращаться так же, как и с обычным битом.

При этом результат операции будет иметь верный знак:

Пример а). Уменьшаемое больше вычитаемого Пример б) Уменьшаемое меньше вычитаемого
01100000 (+96) + 11011011 (-37 дополнительный код) 00111011 (+59) 00100101 (+37) + 10100000 (-96 дополнительный код) 11000101 (-59 дополнительный код)

 

Из примеров видно, что если отрицательное число представлено в дополни­тельном коде, то нам не нужно изобретать аппаратный вычитатель, поскольку прибавление отрицательного числа эквивалентно вычитанию положительного. Другими словами, А - В = А + (-В). Более того, если числа будут записаны в до­полнительном коде, результаты всех последующих арифметических операций будут автоматически в правильном коде.

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

Первая из этих проблем — переполнение (overflow). Она заключается в том, что при сложении двух положи­тельных или двух отрицательных чисел может возникнуть переполнение в знако­вом бите. В приведенных ниже примерах старший бит знаковый.

Пример а) Сумма положительных чисел получается отрицательной Пример б) Сумма отрицательных чисел получается положительной
01000 (+8 обычный код) + 01011 (+11 обычный код) 10011 (-13!!! дополнительный код) 11000 (-8 дополнительный код) + 10101 (-11 дополнительный код) 01101 (+13!!! обычный код)

Смена значения знакового бита означает переполнение знакового бита. За этой ситуацией надо следить. Об этом в некоторых микропроцессорах выводится сигнализация.

Вторая проблема связана с выполнением арифметических операций над знаковыми операндами с числами разной разрядности. В этом случае необходимо выполнить расширение числа с помощью знаковых разрядов.

При расширении данных дополнительные разряды слева следует заполнять знаковым битом. Этот метод называется расширением знака (sign extension).

С учетом сказанного выполним расширение знаковым разрядом до 8 бит, тогда приведенные выше примеры будут выглядеть так.

Пример а) Сумма положительных чисел Пример б) Сумма отрицательных чисел
00001000 (+8 обычный код) + 00001011 (+11 обычный код) 00010011 (+19 обычный код) 11111000 (-8 дополнительный код) + 11110101 (-11 дополнительный код) 11101101 (-19 дополнительный код)

Результат получился правильный в обоих случаях.

 




Поделиться с друзьями:


Дата добавления: 2014-12-07; Просмотров: 1164; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.019 сек.