КАТЕГОРИИ: Архитектура-(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.
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). Если из этой позиции происходит перенос, то именно он становится самым старшим битом суммы.
Подобно тому, как при сложении осуществляется прямой счет, операция вычитания соответствует обратному счету, при котором от исходного значения отнимаются единицы. Так, операция 8-5=3 эквивалентна последовательности операций 8-1=7, 7-1=6, 6-1=5, 5-1=4, 4-1=3. В соответствии с методикой вычитания десятичных чисел аналогичные правила вычитания применяются и к двоичным числам, начиная с младших битов и заканчивая старшими. Для каждого бита, в котором из меньшего числа вычитается большее число, из ближайшего старшего бита занимается единица. С учетом заема правила вычитания в двоичной системе имеют вид
Несмотря на то, что эти знакомые методы прекрасно работают, при реализации их в цифровых схемах возникает ряд проблем: - Что делать, если вычитаемое меньше уменьшаемого? - Как нам различать положительные и отрицательные числа? - Можно ли выполнить вычитание с помощью блока суммирования? Чтобы понять суть проблем, рассмотрим следующий пример:
Чтобы понять, что получилось рассмотрим дополнительный код. 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 (в примерах знаковый бит выделен полужирным шрифтом). Преимущество такого представления заключается в том, что при любых арифметических операциях с ним можно обращаться так же, как и с обычным битом. При этом результат операции будет иметь верный знак:
Из примеров видно, что если отрицательное число представлено в дополнительном коде, то нам не нужно изобретать аппаратный вычитатель, поскольку прибавление отрицательного числа эквивалентно вычитанию положительного. Другими словами, А - В = А + (-В). Более того, если числа будут записаны в дополнительном коде, результаты всех последующих арифметических операций будут автоматически в правильном коде. С арифметическими операциями над отрицательными числами, представленными в дополнительном коде, связаны две проблемы. Первая из этих проблем — переполнение (overflow). Она заключается в том, что при сложении двух положительных или двух отрицательных чисел может возникнуть переполнение в знаковом бите. В приведенных ниже примерах старший бит знаковый.
Смена значения знакового бита означает переполнение знакового бита. За этой ситуацией надо следить. Об этом в некоторых микропроцессорах выводится сигнализация. Вторая проблема связана с выполнением арифметических операций над знаковыми операндами с числами разной разрядности. В этом случае необходимо выполнить расширение числа с помощью знаковых разрядов. При расширении данных дополнительные разряды слева следует заполнять знаковым битом. Этот метод называется расширением знака (sign extension). С учетом сказанного выполним расширение знаковым разрядом до 8 бит, тогда приведенные выше примеры будут выглядеть так.
Результат получился правильный в обоих случаях.
Дата добавления: 2014-12-07; Просмотров: 1218; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |