Автор работы: Пользователь скрыл имя, 11 Января 2014 в 17:55, курс лекций
Работа содержит конспекты лекций по дисциплине "Микропроцессорные устройства".
Перевод дробной части
16*0,328125=5,25 5(СЗР)
16*0,25=4,0 4(МЗР)
0,32812510=0,5416
Общий результат: 634,32812510=27А,5416
Сложение и вычитание двоичных чисел без знака.
Сложение двоичных чисел подобно сложению десятичных. При сложении двоичных чисел (как и десятичных) операции начинаются с обработки наименьших значащих цифр, расположенных в крайних справа позициях. Если результат сложения значащих цифр двух слагаемых не помещается в соответствующем разряде результата, то происходит перенос . Цифра, переносимая в соседний слева разряд, добавляется к содержимому последнего. Сложение цифр любых одноименных разрядов может повлечь за собой перенос в более старший разряд. Перенос возникает, если результат сложения больше 1 в случае двоичной системы.
Рассмотрим пример:
Слагаемое 99…………………01100011
+
Слагаемое 95…………………01011111
Сумма 194………………..11000010
Рассмотренный пример свидетельствует о простоте процедуры двоичного сложения. Единственное неудобство, присущее двоичным операциям - громоздкость записи больших чисел в двоичной форме, что вызывает множество переносов из одного разряда в другой. Рассмотрим таблицу 1. Результат сложения двоичных цифр одноименных разрядов находится на пересечении соответствующих строки и столбца. Если пересечение происходит на тёмном фоне, то имеет место перенос единицы в ближайший старший разряд.
В ближайший старший разряд.
+ |
Слагаемое | ||
0 |
1 | ||
Слагаемое |
0 |
0 |
1 |
1 |
1 |
0 |
Двоичное вычитание подобно десятичному. Таблица 2 иллюстрирует правило двоичного вычитания. Из таблицы 2 следует, что, если уменьшаемое меньше вычитаемого, то имеет место заём. Это происходит в том случае, когда из нуля, содержащегося в двоичном разряде, вычитается единица. Благодаря заёму единицы из ближайшего старшего разряда в одноимённом разряде результата получается единица.
- |
Вычитаемое | ||
0 |
1 | ||
Уменьшаемое |
0 |
0 |
1 |
1 |
1 |
0 |
Пример:
Уменьшаемое 109………………..01101101
Вычитаемое 49………………...00110001
Разность 60………………..00111100
2.4 Двоичные числа в дополнительном коде
До сих пор предполагалось, что числа положительные. Выясним, как представляются в ЭВМ числа со знаком. Если нужно использовать числа со знаком, то применяется специальный дополнительный код, что упрощает аппаратные средства ЭВМ (а именно АЛУ). Формирование дополнительного кода, или сокращённого дополнения, состоит из двух операций: получения обратного кода и добавления единицы. Рассмотрим следующую таблицу.
8-разрядное двоичное число |
Десятичный эквивалент | |
Двоичного числа со знаком (отрицательное число в дополнительном коде) |
Двоичного числа без знака | |
00000000 |
+0 |
0 |
00000001 |
+1 |
1 |
00000002 |
+2 |
2 |
…………. |
………….. |
……….. |
01111101 |
+125 |
125 |
01111110 |
+126 |
126 |
01111111 |
+127 |
127 |
10000000 |
-128 |
128 |
10000001 |
-127 |
129 |
10000010 |
-126 |
130 |
10000011 |
-125 |
131 |
………… |
……………. |
…………… |
11111101 |
-3 |
253 |
11111110 |
-2 |
254 |
11111111 |
-1 |
255 |
Как видно из таблицы, посредством
8 бит можно представить в
Отличительным признаком числа со знаком является особая трактовка старшего бита поля, представляющего число. В качестве поля могут выступать байт, слово, двойное слово. Понятно, что физически этот бит ничем не отличается от других. Всё зависит от команды, работающей с данным полем. Если в её алгоритме заложена работа с целыми числами со знаком, то она будет по-особому трактовать старший бит поля. Если старший бит равен 0 – число положительное. Если старший бит равен 1 – число считается отрицательным и записанным в дополнительном коде.
В среднем столбце таблицы
Получение дополнительного кода числа продемонстрируем на следующем примере:
Число 410 в двоичной форме 00000100
Обратный код числа 410 11111011
+
Добавляем к обратному коду 12 00000001
Число 410 в дополнительном коде 11111100
Для представления двоичного числа в дополнительном коде можно пользоваться другим способом, отличным от описанного выше и более коротким по числу операций. В поисках первого бита, равного единицы, просматривают справа налево разряды числа, начиная с наименьшего по значимости. До тех пор пока встречаются нули, их копируют в одноимённые разряды результата. Первая встретившаяся единица также копируется в соответствующий разряд результата; но каждый последующий бит исходного числа заменяется на обратный.
Ещё пример: число 910 представим в дополнительном коде.
00001001
11110110
+
00000001
11110111
2.5 Арифметика в дополнительном коде
МП использует числа в форме дополнительного кода потому, что он в состоянии выполнять операции сложения, инверсии и иккрементирование. МП не приспособлен для прямого вычитания. Он использует сумматоры и для выполнения вычитания оперирует над дополнительным кодом. В общем случае при сложении или вычитании чисел со знаком результат есть также число со знаком. Если при этом бит старшего разряда равен единице, то результат – отрицательное число в дополнительном коде.
Если требуется определить абсолютное значение результата, то его необходимо представить в обратном коде, а затем прибавить единицу.
Используя дополнительный код и сумматор МП выполняет вычитание, которое происходит следующим образом. Определяется дополнительный код вычитаемого и производится сложение этого кода с уменьшаемым. Если разность – число положительное (бит старшего разряда равен 0), то бит переноса необходимо отбросить; полученная последовательность битов и есть двоичный код результата. Если разность – число отрицательное (бит старшего разряда равен 1), то она представлена в дополнительном коде.
Рассмотрим примеры.
а) Определение дополнительного кода числа 23
число 2310 00010111
обратный код 11101000
+
прибавляем единицу 0000000
дополнительный код числа 2310 11101001
б) Вычисление разности.
число 5810 00111010 58
+ -
11101001 23
Разность 3510 100100011 35
Получили положительный
а) Определение дополнительного кода числа 34
число 3410 00100010
обратный код числа
+
прибавляем единицу 000000
дополнительный код числа 3410 11011110
б) Вычисление разности:
26 00011010
- +
34 11011110
-08 11111000
Видно, что разность получилась в форме дополнительного кода, поскольку в старшем разряде 1.
в) Определение абсолютного
дополнительный код разности 11111000
обратный код 00000111
+
прибавляем единицу 0000000
абсолютное значение разности 810 00001000
210 00000010
обратный код 11111101
+
00000001
дополнительный код -210 11111110
510 00000101
11111010
+
00000001
дополнительный код 510 11111011
Числа в дополнительном коде складываются
-2 11111110
+ +
-5 11111011
-7 1 11111001
Старший бит
Старший бит результата является переполнением 8-разрядного регистра и им пренебрегаем. В 8-ом разряде стоит 1. Значит, получено отрицательное число в дополнительном коде.
Найдём абсолютное значение разности.
11111001
00000110
+
00000001
абсолютное значение разности 710 00000111
Двоичные умножение и деление
При умножении одного числа на другое одно из чисел называется множимым, другое – множителем. Ниже изображена таблица двоичного умножения. Аналогичную таблицу десятичного умножения, состоящую из 10 строк и 10 столбцов, мы знаем наизусть. По сравнению с ней таблица двоичного умножения чрезвычайно проста: в умножении участвуют цифры, принимающие только два значения – 0 или 1, в результате умножения перенос не возникает никогда.
* |
Множимое | ||
0 |
1 | ||
Множитель |
0 |
0 |
0 |
1 |
0 |
1 |
Воспользуемся таблицей для вычисления произведения двоичных эквивалентов десятичных чисел 17 и 12.
Множимое 1710 10001
*
Множитель 1210 01100
00000
00000
10001
10001
00000
Результат 20410 11001100
Первые два частных произведения включают только нули, так как множители – значения первого и второго разрядов – равны нулю. Третье частное произведение – копия множимого. Разница между ними заключается лишь в том, что копия сдвинута относительно множимого на два двоичных разряда влево, поскольку для получения этого частного произведения в качестве множителя используется значение третьего разряда. Четвёртое частное произведение также является копией множимого смещённой относительно последнего на три двоичных разряда влево. Все остальные произведения – нули. Сложение всех частных произведений в данном примере не сопровождается переносом, однако возникновение последнего не исключено.
Обычно умножение и деление как отдельные операции в МП не предусматриваются. Эти операции выполняются с использованием специальной подпрограммы. Программно умножение реализуется путём сдвига и сложения. Перечислим правила этого способа.