Разделы
Публикации
Популярные
Новые
Главная » Классические однокристальные микроконтроллеры

1 2 3 4 ... 20

классические однокристальные микроконтроллеры

Цифровые вычислительные машины работают с двоичными числами. Двоичная система счисления или система с основанием 2 использует только цифры О и 1. Эти двоичные числа названы битами (от binary digit). Физически в цифровых электронных системах бит О представлен напряжением Low (низким), а бит 1 - напряжением High (высоким).

Человек использует десятичную систему счисления. Десятичная система или система с основанием 10 содержит 10 цифр (от О до 9). Она также характеризуется значением позиции (или весом). В табл. 1 показано, например, что десятичное число 1327 равно одной тысяче, плюс три сотни, плюс два десятка, плюс семь единиц (1000 + 300 + + 20 + 7= 1327).

Таблица 1

Значения позиций десятичных чисел

Степень основания

Ю' 10 101 10°

Значения позиф1Й

1000 100 10 1

Десятичные

13 2 7

1000 + 300 + 20 + 7 = 132-

Двоичная система обладает свойством уравновешивания. В табл. 2 приведены десятичные значения первых четырех двоичных позиций. Двоичное число 1001 (произносится: один, нуль, нуль, один) преобразовано, таким образом, в свой десятичный эквивалент 9. Бит еди-



ницы двоичного числа в табл. 2 называется младшим битом (МБ), бит восьмерки - старшим битом (СБ).

Таблица 2

Значения позиций двоичных чисел

Степень основания

23 2 21 2°

Значения позиций

8 42 1

Двоичное Десятичное

0 0 1 8 + 0 +0 + 1 = 9

В табл. 3 приведены десятичные числа от О до 15, а также их двоичные эквиваленты. Те, кто работает с ЭВМ, должны, по меньшей мере, запомнить эти двоичные числа.

Таблица 3

Десятичные числа и их двоичные эквиваленты

Десятичные

Двоичные

Десятичные

Двоичные

10 1

8 4 2 1

10 1

8 4 2 1

10 0 0

10 0 1

1 0

10 10

1 1

10 11

1 0 0

1 2

110 0

1 0 1

1 4

110 1

1 1 0

1 4

1110

1 1 1

1 5

1111

Как преобразовать двоичное число 1011 ОНО (т. е. один, нуль, один, один, нуль, один, один, нуль) в его десятичный эквивалент? Процедура преобразования выполняется в соответствии с табл. 4. Десятичные значения каждой позиции записаны под каждым битом, затем десятичные числа суммируются (128-I-32-I-16-I-4+2), что дает 182.

Таблица 4

Двоично-десятичные преобразования

Степень основания

Значения позиций

Двоичное

Десятичное

Обычно основание системы счисления указывается индексами. Таким образом, число 1011 01102 является двоичным (или с основанием 2), ачисло182,0 - десятичным: 1011 OIIO2 = 182,д.

Как преобразовать десятичное число 155 в его двоичный эквивалент? Процедура преобразования приведена на рис. 1.

15510 : 2 = 77 остаток 1

77io : 2 = 38 остаток 1

38io:2 = 19 остаток О I

19io : 2 = 9 остаток 1 f-

9io: 2 = 4 остаток 1 f-

41о:2 = 2остаток0 I

2io: 2= 1 остаток О

1:2 = 0 остаток 1

15510= 1 О О

110 11

Рис. 1. Двоично-десятичные преобразования

Десятичное 155 сначала делится на 2, что дает нам частное 77 и остаток 1. Этот остаток становится МБ двоичного числа и помещается на свою позицию (см. рис. 1). Затем частное (77) перемещается, как показывает стрелка, и становится следующим делимым. Затем каждое частное последовательно делится на 2 до тех пор, пока не получится частное, равное О, и остаток, равный 1 (см. предпоследнюю строку на рис. 1). Последняя строка на рис. 1 дает нам результат 155,q= 100110112-

Упражнения

1. Большинство людей в своей практической деятельности используют десятичную систему, цифровая ЭВМ использует систему.

2. В двоичной системе бит означает .

3. Число 100,0 является

. числом.

4. Записать двоичное число один, один, нуль, нуль в цифровой форме.

5. Что означает сокращение МБ?

6. Преобразовать в десятичный код следующие двоичные числа: а) 0001; б)0101;в) 1000; г) 1011;д) 1111;е)0111.

7. Преобразовать в десятичный код следующие двоичные числа: а) 1000 0000; б) 0001 0000; в) ООН ООН; г) 0110 0100; д) 0001 1111; е) НИ 1111.

8. Преобразовать в двоичный код следующие десятичные числа: а) 23; б) 39; в) 55; г) 48.



9.204,0 =-2

10. 1110 11102

Решения

1. Двоичную или основания 2.

2. Двоичную цифру (binary digit).

3. Десятичным (основания 10).

4. 1100,.

5. Младший бит.

6. Обратимся к табл. 3: а) 0001, = 1 б) 0101, = 5, в) 1000, = 8, г) 1011, =11,13)11112=15, е) 0111,=7,

7. Следуем процедуре, приведенной в табл. 2: а) 1000 00002=128,д; 6)0001 00002=16,16)001} 0011,=51,г)01100100,=100,д)0001 11П, = 31, е) 1111 11112 = 255,д.

8. См. рис. 1:

а) 23,д-. 2 = 11, остаток 1 (МБ) б) 59,д-. 2 = 19, остаток 1 (МБ)

и : 2 = 5, остаток 1; 5:2 = 2, остаток 1; 2:2=1, остаток 0; 1:2 = 0, остаток 1 (СБ)

19: 2 = 9, остаток 1; 9:2 = 4, остаток 1; 4:2 = 2, остаток 0; 2:2 = 1, остаток0; 1:2 = 0, остаток 1 (СБ);

в) 55ig: 2 = 27, остаток 1 (МБ) 27:2 = 13, остаток 1; 13:2 = 6, остаток 1; 6:2 = 3, остаток 0; 3:2=1, остаток 1; 1:2 = 0, остаток 1 (СБ);

г) 48,д: 2 = 24, остаток О (МБ); 24:2 = 12, остаток 0; 12:2 = 6, остаток0; 6:2 = 3, остаток 0; 3:2 = 1, остаток 1; 1:2 = 0, остаток 1 (СБ).

9. Обратимся к рис. 1: 204,д = 1100 1100,. 10. Обратимся к табл. 2: 11101110, = 238,д.

2. ШЕСТНАДЦАТЕРИЧНЫЕ ЧИСЛА

Ячейка памяти типичной микро-ЭВМ может содержать, например, двоичное число 10011110. Такая длинная цепь нулей и единиц сложна для запоминания и неудобна для ввода с клавиатуры. Число 10011110 могло бы быть преобразовано в десятичное, что дало бы 158,0, процесс преобразований занял бы много времени. Большая часть систем микроинформатики использует шестнадцатеричную форму записи, чтобы упростить запоминание и использование таких двоичных чисел, как 10011110.

Шестнадцатеричная система счисления {hexadecimal) или система с основанием 16 использует 16 символов: от О до 9 и А, В, С, D, Е, F.

В табл. 5 приведены эквиваленты десятичных, двоичных и шестнад-цатеричных чисел.

Таблица 5

Десятичные, шестнадцатеричные и двоичные эквиваленты

Десятичные

Шестнадцатеричные

Двоичные

А

В

С

Е

Заметим, что каждый шестнадцатеричный символ может быть представлен единственным сочетанием четырех бит. Таким образом, представлением двоичного числа 10011110 в шестнадцатеричном коде является число 9Е. Это значит, что часть 1001 двоичного числа равна 9, а часть 1110 равна Е (конечно, в шестнадцатеричном коде). Следовательно, 10011110 = 9E,g. (Не следует забывать, что индексы означают основание системы счисления).

Так повелось, что в практике программирования шестнадцатеричные числа выделяются не подстрочным индексом ,g, а буквой Н в конце числа. Иными словами, программисты обычно пишут 9ЕН, а не 9E,g, хотя и то, и другое означают одно и то же. Еще одно правило - если старший разряд шестнадцатеричного числа равен А, В, С, D, Е или Н, то при записи перед ними ставят 0. Например, правильно записать не ВН, а ОВН, не C83DH, а 0C83DH и т. д. Это делается для того, чтобы программы-ассемблеры различали числа от-имен меток или констант. Имя всегда должно начинаться с буквы, а число - с цифры.

Как преобразовать двоичноечисло 11IOIO2 в шестнадцатеричное? Надо начать с МБ и разделить на двоичное число на грудпы из 4 бит. Затем надо заменить каждую группу из 4 бит эквивалентной шест-



следовательно,

надцатеричной цифрой : IOIO2 = A,g, 00112 = 3,g, 1110102 = ЗА,g.

Как преобразовать число 7F в двоичное? В этом случае каждая шестнадцатеричная цифра должна быть заменена своим двоичным эквивалентом из 4 бит. В примере двоичное число 0111 заменено шестнадцатеричной цифрой 7, а IIII2 заменяет F,g, откуда 7F,g = 1111 OIII2.

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

Таблица 6

Преобразование шестнадцатеричного числа в десятичное

Степень шестнадцати

Значение

4096

позиции

С

Е

Шестнадца-

4096

теричное

= 1137410

Десятичное

8192

3072

Преобразуем шестнадцатеричное число 2C6E,g в десятичное. Последовательность приведена в табл. 6. Значениями позиций первых четырех шестнадцатеричных цифр являются соответственно слева направо 4096, 256, 16 и 1. Десятичное число содержит 14 (E,g) единиц, 6 чисел 16, 12 (C,g) чисел 256 и 2 числа 4096. Каждая цифра умножается на соответствующий ей вес, получается сумма, которая и дает нам десятичное число 11374 (14x1 + 6x16 + 12x256 + 2x4096 = 11374).

Преобразуем десятичное число 15797 в шестнадцатеричное. На рис. 2 показана последовательность действий.

15797io: 16 = 987 остаток 5io = 5i6-f-

987io; 16 = 61 остаток 1110 = Bi6 -

6I10:16 = Зостаток 13io = D16

*- CP

З10:16 = OocTaTOK3io = 3i6 -

1579710 = 3 D В 5 Рис. 2. Десятично - шестнадцатеричное преобразование

Рис. 2. Десятично-шестнадцатеричное преобразование 12

В первой строке 15797,g разделено на 16, что дает частное 987,q и остаток 5,Q, который преобразуется затем в свой шестнадцатеричный эквивалент (5 , = 5,g) и становится цифрой младшего разряда (MP) шестнадцатеричного числа. Первое частное (987) становится делимым во второй строке и снова делится на 16, что дает частное 61 и остаток 11 ,Q или шестнадцатеричное В. В третей строке 61 делится на 16, дает частное 3 и остаток 13,g или D,g, а в четвертой строке делимое 3 делится на 16, дает частное О и остаток 3,о или 3,g. Когда частное равно О (как в четвертой строке) преобразование заканчивается. Таким образом, 3,g становится цифрой старшего разряда (CP) результата, т. е. 15797,0= 3DB5,g.

Упражнения

11. Шестнадцатеричная запись широко используется как сокращенная форма записи (двоичных, десятичных) чисел.

12. Шестнадцатеричная система имеет основание .

13. Записать следующие шестнадцатеричные числа в двоичной форме: а) C,g; 6) 6,g; в) F,; г) Е,; д) lA,; е) ЗВ,; ж) АО,; з) 8В,; и) 45,; к) D7,g.

14. Преобразовать следующие двоичные числа в шестнадцатеричный код: а) IOOI2; 6) 1100,; в) HOI2; г) IIU, д) 1000 ОООО2; е) 0111 lllOj; ж) 001 01012;з) 1101 10112.

15. Преобразовать следующие шестнадцатеричные числа в десятичный код: а) 7E,g; 6) DB,; в) 12A3,g; г) 34CF .

16.217,0 =.....

17. 48373,0 = .

-16-

Решения

11. Двоичных.

12. 16.

13. Используя таблицу 2.5 и процедуру, приведенную вразделе 9.2 получаем: а) С„ = 1102,; б) 6 = ОНО,; в) = 1111; г) Е, = ПЮ; д) lA, = 0001 1010 е) 3D, = 0011 11012; ж) АО = 1010 0000-,; з) 8В, = 1000 1011 и) 45 = 0100 0101к) D7j = 11010111,.

14. а) 1101, = 9, б) 1100, = С,; в) 1101,= г) 1111, = F, д) 1 ООО 0000, = 80i(e)0111 1110, = 7Е,ж)001 0101= 15, з) 1101 1011, = DB,.

15. а) 7Е, = (16*7) + (144) = 126, б) DB, = (1643) + (141) = 219, в) + (40964) + (256*2) + (1640) = (1 *3) = 47710, г) 34CF= (4096*3) +

(256*4) + (16*12) + (145) = 1359

16. 217= D9f - действия следующие: 217,0 = остаток 9. = 9 (MP);

,д: 16=0, остаток 13ig = D, (CP).

17. 48373

16 = 3023, остаток 5, = 5, (MP);



16= 188, остаток 15,д = F

16= 11, остаток 12 , = С,

3023 188

и

Таким образом, 48373,д = BCF5,.

16=0, остаток 11,д = В,

(CF).

3. ВОСЬМЕРИЧНЫЕ ЧИСЛА

Восьмеричная запись, как и шестнадцатеричная, используется для представления двоичных чисел. Восьмеричная система содержит 8 цифр от О до 7 и является соответственно системой с основанием 8. В табл. 7 представлено несколько десятичных, восьмеричных и двоичных чисел.

Преобразуем двоичное число IIIIIOOOIOO2 в его восьмеричный эквивалент. Процедура действий в этом следующая. Начиная с МБ двоичного числа, делим его на группы из 3 бит. Затем, используя табл. 7, преобразуем каждую триаду (группу из 3 бит) в эквивалентную восьмеричную цифру. Таким образом, мы заменим двоичное число IIIIIOOOIOO2 его восьмеричным эквивалентом 3704з :

Двоичноечисло 011 111 ООО 100

Восьмеричное число 3 7 0 4

Таблица 7

Десятичные, восьмеричные и двоичные эквиваленты

Десятичные

Восьмеричные

Двоичные

1

Преобразуем теперь восьмеричное число 652 Ig в его двоичный эквивалент. Каждая восьмеричная цифра заменяется двоичной триадой и получится, что 65218 = IIOIOIOIOOOI2:

Восьмеричное число 6 5 2 1 Двоичноечисло ПО 101 010 001

Запишем восьмеричное число 23578 десятичной форме. Классическая процедура выполняется согласно табл. 8. Здесь 512, 64, 8 и

1 - веса первых восьмеричных позиций. Заметим, что в этом примере содержится 7 единиц, 5 восьмерок, 4 числа 64 и два числа 521. Мы их складываем и получаем результат: 2x512 + 4x64 + 5x8 + 7 = 1024 + 192 + 40 + 7= 1263,

Таблица 8

Восьмерично-десятичное преобразование

Степень восьми

Значение позиции

Восьмеричное

число

Десятичное

= 1263,0

число

1024

Еще один пример - преобразуем десятичное число ЗЗЗб в его

восьмеричный эквивалент (рис. 3). В первую очередь 3336,о разделено на 8, что дает частное 417,о и остаток О причем 0,о = 0. Восьмеричный О становится значением MP восьмеричного числа. Первое частное (417) становится делимым и снова делится на 8 (вторая строка), что дает частное 52,о и остаток 1, = 1, который становится второй цифрой восьмеричного числа. В третьей строке частное (52) становится делимым, и деление его на 8 дает частное 6,о и остаток 4,о = 43. В четвертой строке последнее частное 6 разделено на 8 с частным О и остат-

ком 6,0 = 6о

ЗЗЗбю: 8 = 417 остаток Ою = Ов f-

417io.8 = 52ocTaTOKlio=l8 f-

52,о: 8 = 6остаток41о = 48 ,

610: 8 = 0остатокб1о = б8

3336)0= 6 4 1 0

Рис. 3. Десятично-восьмеричное преобразование

Теперь счет закончен последним частным 0. Цифра 6g становится значением CP восьмеричного числа, и мы можем видеть на рис. 3, что 3336,0 = 64108.

Большинство микропроцессоров и микроконтроллеров обрабатывают группы из 4, 8 или 16 бит. Отсюда следует, что обычно чаще используется шестнадцатеричная запись, чем восьмеричная. Однако



восьмеричная запись более удобна, когда группы бит делятся на 3 (например, группы из 12 бит).

Упражнения

18. Для представления двоичных чисел в тексте документации 8-разрядного микропроцессора используют (шестнадцатеричную, восьмеричную) систему.

19. Другим названием восьмеричной системы является.

20. Записать следующие восьмеричные числа в двоичном коде: а) 3g; 6) 7;в) Ogjr) 76428; д) ЮЗб^; е) 21058.

21. Записать следующие двоичные числа в восьмеричном коде: а) IOI2; 6) IIO2; в) OIO2; г) IIIOOOIOIOIO2; д)10110001112; e)10011010010l2.

22. 6724, =

-10-

23.2648,0 = .

Решения

18. Шестнадцатеричную, при которой удобно представить двоичное число двумя 4-разрядными группами.

19. Система с основанием 8.

20. а)3, = 011 б) 7, = 111; в) О, = ООО,; г) 7642 = 111110100010; д) 1036, = 1000011110,; е) 2105, = 10001000101,.

21. а) 101, = 5,- б) 110 = 6,; в) 010 = 2,; г) ШОООЮЮЮ^ = 7052 д) IOIIOOOIII2 = 1307,; е) 100110100101 = 4645,.

22. Согласно табл. 8:6724, = (512*6) + (64*7) + (8*2) + (1*4) = 3540 3. Согласно рис. 3 :

2648,0: 8 = 331, остаток О (MP);

331 41 5

8 = 41, остаток 3;

8 = 5, остаток 1;

8 = 0, остаток 5 (CP);

2626,д = 5130,.

4. ДВОИЧНО-ДЕСЯТИЧНЫЕ ЧИСЛА

Для удобства преобразования чистые двоичные числа представляются десятичными либо шестнадцатеричными. Однако ограничиться только этими формами представления чисел не удается. В калькуляторах, магистралях и числовых приборах, когда на доступных пользователю индикаторах и устройствах ввода обычно используют десятичные числа, для их представления используют специальный двоично-десятичный код (ДДК). В табл. 9 приведено несколько десятичных чисел и соответствующих им двоично-десятичных эквивалентов (система 8421). Здесь определяются веса позиций каждого из четырех бит ДДК (здесь мы не будем рассматривать другие ДДК, например 5421 и плюс 3).

Двоично-десятичный код 8421

Десятичные числа

Двоично-десятичные числа

Запишем десятичное число 3691,о в ДДК 8421. Каждая десятичная цифра преобразуется прямо в свой двоично-десятичный эквивалент из 4 бит, и преобразования дают 3691,g = 0011 ОНО 1001 0001 ДДК:

Десятичное число Двоично-десятичное число

3 6 9 1 ООП ОНО 1001 0001

Преобразуем теперь двоично-десятичное число 100000000111 0010 в его десятичный эквивалент. Каждая группа из 4 бит прямо преобразуется в ее десятичный эквивалент, и тогда получаем 1000 0000 0111 0010 ДДК = 8072,о:

Двоично-десятичное число Десятичное число

1000 0000 0111 0010 8 0 7 2

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

Упражнения

24. Запись ДДК является сокращением

25. Наиболее общей записью двоично-десятичного кода является ДДК (5421,8421).



26. Записать следующие десятичные числа в ДДК 8421: а) ЗЭ; б) бЗц,;

в) 40,0-, г) 17,о;д) 82,о;е) 99,.

2.27. Записать следующие двоично-десятичные числа в десятичном коде: а) 1000 0000; б) 0000 0001; в) 1001 0010; г) 0111 ОНО; д) 0100 ООП; е) 0101 0101.

Решения

24. Двоично-десятичного кода.

25. 8421.

26. Следуя процедуре, приведенной в разделе 9.4, получаем: а) 39,д = ООП 1001 ДДК; б) 65,д = 0110 0101 ДДК; в) 40,д = 0100 0000 ДДК; г) 17, = 0001 0111 ДДК; д) 82 ,= 1000 0010ДДК; е)99,д = 1001 1001 ДДК.

27. Следуя процедуре, приведенной в разделе 9.4, получаем: а) 1000 0000ДДК= 80 б) 0000 0001 ДДК = 1 в) 1001 0010 ДДК = 92,д; г) 0111 ОНО ДДК = 76, д) 0100 ООП ДДК =43 ; е) 0101 0101 ДДК = 55,д.

5. ДВОИЧНАЯ АРИФМЕТИКА

Сложение, вычитание или умножение двоичных чисел выполняется так же, как и в арифметике десятичных чисел. Большинство микропроцессоров и микроконтроллеров располагает лишь командами сложения и вычитания двоичных чисел, и только некоторые, число которых не столь велико, выполняют команды умножения и деления (например, микропроцессоры Intel 8086/8088).

На рис. 4, а представлены простые правила двоичного сложения. Два первых (слева) правила очевидны, третье показывает, что 1 + 1 = 10, т. е. наиболее значимая единица переносится в ближайший старший разряд. Четвертое правило показывает, что 1 + 1 -1-1 = 11. Б этом случае первое, второе слагаемые и запоминаемое в результате сложения в младшем разряде числа-единицы. Результатом является сумма 1 с переносом 1.

1-е слагаемое О +

2-е слагаемое 0 Сумма О

Запоминание из менее значимой позиции

Перенос Перенос в следующую старшую а)

позицию

)11 1 Переносы i

1-еслагэемое ООШ0П 59

2-е слагаемое 00101010 42

Сумма 011001012 10 д,

Рис. 4. Двоичное сложение: а - правила; б- пример 18

Сложим двоичные числа 0011 101 Ij и 0010 IOIO2 (операция показана на рис. 4, 6). Для большей ясности действия с десятичными эквивалентами обрабатываемых чисел показаны на рисунке справа. Суммой двух чисел ООП ЮЩ и 0010 lOlOj будет ОНО ОЮЦ.

На рис. 5, а приведены правила двоичного вычитания. Первые три аналогичны десятичному вычитанию. Последнее требует заема из более значимого предшествующего разряда (в этом случае вес 2). Уменьшаемым является двоичное число 10, вычитаемым - 1, разностью - 1.

Вычтем двоичное число ООП lOOlj из 0101 OlOlj. Этот пример приведен на рис. 5, б. Разряды весов 1, 2 и 4 этого двоичного вычитания просты для выполнения и относятся к первым трем правилам на рис. 5, а. В колонке веса 8 имеет место вычитание 1 из 0. Тогда 1 занимается из колонки веса 16.

о 1 10 10 010010

! /

Уменьшаемое О 1 1 10 01010101 85

Вычитаемое 0 0 1 Разность О 1 О а)

j 00111001 1 000111002 28io

Рис. 5. Двоичное вычитание: а - правила; б - пример

Единица вычитается из lOj, что дает разность 1 согласно четвертому правилу 5, а. После этого заема в колонке веса 16 имеет место вычитание 1 из нового вычитаемого 0. Согласно четвертому правилу 1 должна быть занята из следующей, более значимой позиции (колонка веса 32), но в колонке 32 имеется 0; поэтому колонка 32 должна сделать заем из колонки веса 64, что и выполнено. Окончательно колонка 16 делает заем из колонки32, уменьшаемым в колонке 16 становится lOj, вычитаемым 1, разностью 1. В колонке 32 имеем 1 - 1 = О, в колонке 64: О - О = О, в колонке 128:0-0 = 0. Таким образом, рис. 5, иллюстрирует операцию вычитания ООП lOOlj из 0101 OlOlj (справа эта задача решена в десятичной записи).

Правила десятичного умножения:

Множимые 0 10 1

X X X X

Множители L 1

Произведения 0 0 0 1

Два первых правила не требуют никаких пояснений. В двух других множителем является 1: при двоичном умножении, когда множителем является 1, множимое становится результатом и представляет собой произведение. Когда множитель О, произведение всегда равно 0.



сятичных чисел, J в колонке веса 1).

младшем разряде (в рассматриваемом случае

Множимое 10 ..

Множимое Множитель 1 -е частичное произведение 1 -е частичное произведение 1 -е частичное произведение

01 j

110 0000 01

5 65,0

3 Ча*Л ИЧПСП^ --------

Конечное произведение 1OOOOOI2

Рис. 6. Двоичное умножение

Поскольку бит множителя в разряде веса 1 является 1, множимое копируется и составляет первое частичное произведение. Вторым битом множителя является О, тогда второе частичное произведение есть 0000 (заметим, что оно сдвштуто на одну позицию влево). Битом разряда веса 4 множителя является 1, тогда для получения третьего частичного произведения снова следует копирование множимого (заметим, что копирование завершается новым сдвигом на одну позицию влево). После этого выполняем сложение трех частичных произведений, что дает результат Ш000\. Полученный результат llOljXlOlj = 100000К соответствует произведению десятичных чисел 13,рХ5,р = 65,ц.

Упражнения

28. Выполнить следующие сложения двоичных чисел:

а) lOlOj б) IIOI2 в) 0101 1011, г) ООН llllj

0101-

+ 01012

0000 IHI2

0001 11H2

29 Выполнить следующие вычитания двоичных чисел:

а) 1010, 6) 1010, в) ОНО ОНО, г) 0111 1000,

0000 1010, ООН 1111,.

1000,

0101,

30. Первое число при умножении называется .

второе - множителем, а результат составляет-

31. Выполнить следующие умножения двоичных чисел:

г) 1110, х

1110,-

а) 1001, х

6) 1101, х

юоь

в) 1114

101,

Решения

28. См. рис. f. а) 1117 6) 10010,; в) ОНО 1010,; г) 0101 1110,.

29. См. рис. 5: а) 0110,; 6) 0101,; в) 01001100,; г) 0011 1001,

30. Множимое. Произведение.

31. а) 11011,; б) 111 0101,; в) 1001011; г) 11000100,.

ДОПОЛНИТЕЛЬНЫЙ код

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

76543210 76543210 76543210

О

28 64 32 16 8 4 2 1 (+) 64 32 16 8 4 2 1 (-) >-,-

Вес двоичной Бит Вес двоичной Бит Запись дополнительного

позиции знака позиции знака Я^

а) б) В)

Рис. 7. Изображение регистра МП (МК) или ячейки памяти:

а- расположение двоичных позиций; б - идентификация положительных чисел нулем в знаковом бите; в- идентификация отрицательных чисел единицей в знаковом бите

На рис. 7, а приведено обычное изображение регистра МП (МК) или ячейки внутреннего или внешнего ОЗУ. Такой регистр представляют пространством из 8 бит данных. Позиции бит пронумерованы от 7 до О, а веса двоичных позиций указаны в основании регистра, бит 7 имеет вес 128, бит 6 - 64 и т. д.

На рис. 7, бив показаны типовые структуры 8-разрядных регистров при использовании их для размещения чисел со знаком. В обоих случаях бит 7 является знаковым. Он указывает, является ли число положительным (+) или отрицательным (-). Если знаковый бит - нуль, то число положительно, если единица - отрицательно. Оставшиеся ячейки памяти (с шестой по нулевую) содержат двоичное 7-разрядное число. Например, если регистр на рис. 7, содержит 0100 0001, это соответствует числу +65,0 знаковый бит положительный). Если в него записано 0111 1111, содержимым будет +127,о ( знаковый бит положителен; 64 + 32 + 16 + 8 + 4 + 2 + 1 = 127), что является наибольшим положительным числом, которое может содержать 7-разрядный регистр. Нуль кодируется числом 0000 0000, т. е. он в рассматриваемом нами представлении чисел со знаком нуль - положительное число (его старший бит равен 0), восьмерка кодируется числом 0000 1000 и т. д.



представление десятичных чисел со знаком

Десятичные

Представление исел со зиако

+127

0111 1111

0000 1111

0000 0111

0000 0110

0000 0101

0000 0100

0000 ООН

0000 0010

0000 0001

0000 0000

1111 ИИ

1111 1110

1111 1101

1111 1100

1111 1011

1111 1010

1111 1001

1111 1000

-128

1000 1111

Примечания

Положительные число . представлены в той ж9 Iформе, что и прямые! двоичные числа

Отрицательные числа поедставлеиы в форме! дополнительного кода i

Рассмотрим, как можно осуществить это преобразование. Например, какой будет запись в рассматриваемом нами представлении отрицательных чисел числа -9? Преобразование осуществляется в четыре этапа. Полученный в ходе описанного преобразования результат {1111 0111) называется дополнительным кодом положительного десятичного числа 9. Процесс преобразования в дополнительный код состоит в инверсии всех бит числа (замене единиц на нули и наоборот) и прибавлении к инвертированному результату единицы. Таким образом, мы для представления отрицательных чисел используем представление равных им по модулю положительных чисел в дополнительном коде. В приведенном примере 9 кодируется как 0000 1001, дополнительным кодом числа 9 является 1111 ОШуИИмеяно этот код мы будем использовать для представления Числа -9. Заметим, что в последнем случае знаковый бит - единица, что удовлетворяет выбранному нами критерию идентификации отрицательных чисел.

А каким будет десятичный эквивалент числа 1111 0000, записанного в форме дополнительного кода? Иными словами, как найти,

какому знаковому десятичному числу соответствует 1111 0000? Процедура преобразования в этом случае следующая:

Десятичное число 9 Этап1. Запись десятичного

числа без знака (9)

Двоичноечисло 0000 1001 Этап2. Преобразование десятичного

числа в двоичный код (0000 1001)

Дополнение до 1 11110110 ЭтапЗ. Получить обратный код двоичного

(обратный или числа заменой нулей единицами, а

инверсный код) единиц-нулями (1111 0110}

Дополнение до 2 +1 Этап 4. Прибавить единицу к обратному коду.

(дополнительный код) ) , 0111 Здесь прибавить 1 к 1111 0110,

что дает 1111 0111

Рис. 8. Преобразование десятичного числа в дополнительный код

Как видите, процесс преобразования тот же самый - формирование инверсного кода и добавление 1, т. е. те же процедуры, которые мы проводили при преобразовании двоичного числа в дополнительный код. Однако следует отметить, что хотя в результате преобразования мы получили положительное двоичное число 0001 0000 = 16,о, исходная запись дополнительного кода (1111 0000) содержит единицу в старшем бите, что означает, что 1111 0000 = -16,0.

Упражнения

32. Когда числа со знаком помещается в 8-разрядный регистр микропроцессора, старший (7-й) бит называется .

33. Установить, являются ли следующие знаковые числа с представлением в дополнительном коде положительными или отрицательными:

а) 0111 0000; 6) 1100 1111; в) 1000 1111; г) 0101 0101.

34. Используя табл. 10, представить в виде знаковых чисел с использованием дополнительного кода следующих десятичных чисел со знаком: а) +1; б) +5; в) +127; г) -1; д) -2: е) -128.

35. Используя процедуру, приведенную в этом разделе, представить в виде знаковых чисел с использованием дополнительного кода следующих десятичных чисел со знаком : а) -10; б) -21; в) -34; г) -96.

36. Расположение бит в дополнительном коде (в ДДК, в двоичном коде) одинаково для положительных двоичных чисел.

37. Используя процедуру, приведенную в разделе 9.6, дать десятичные эквиваленты следующих знаковых чисел с дополнительным кодом: а) 1111 1011;6) 0000 1111;в) 1000 1111;г)0111 0111.

Решения

32. Знаковым.

33. а) 0111 0000 положительно, так как знаковый бит 0; 6) 11001111 отрицательно, так как знаковый бит 1;



в) 1000 пи отрицательно, так как знаковый бит 1; г) 0101 0101 положительно, так как знаковый бит 0. 34. см. табл. 10: а)-hi = 0000 0001; б) +5 = 0000 0101; в)+127 =0111 ПП; г)-1 = пи 1111; д)-5= 1111 1110; е)-128= 10000000.

35. В соответствии с рекомендациями раздела 9.6 имеем следующие результаты: а) этап 1 (преобразование десятичного числа в двоичный код): = 00001010-,; этап2 (получениеобратного кода): 0000ЮЮа 1111 0101; этапЗ (добавление 1): 1111 0101 + 1 = 11111 ОНО (доп.код)] б) этап 1: 21 ,д = 0001 OlOU; этап 2: 0001 0101, а 1110 1010; этап 3: 1110 1010 + 1 = 1110 1011 (доп. код); в) этап 1:34,д= 0010 0010,; этап2: 00100010а 1101 1101; этап 3: 1101 1101 + 1 = 1101 1110 (доп. код); г) этап 1: 96,д = 0110 0000,; этап 2: ОНО 0000, и 1001 1111; этап 3:1001 1111 + 1 = 1010 0000 (доп.код).

36. В двоичном коде.

37. а) НИ 1011 (доп. код)=-5,д. обратный код

1111 1011 а 0000 0100 + 1

0000 0101 =5;

б) 00001111 (доп. код) = +15;

в) 1000 пи (доп. код)=-иЗ обратный код

1000 ни а 0111 0000

0111 0001 =113;

г) 0111 0111 (доп. код) = +119.

7 . АРИФМЕТИКА В ДОПОЛНИТЕЛЬНОМ КОДЕ

Для микропроцессоров и микроконтроллеров оказывается предпочтительным применение знаковых чисел в соответствии с табл. 10 (для простоты далее будем говорить - в форме дополнительного кода), потому что среди них нет таких, которые были бы не в состоянии выполнить операции инверсии, инкрементирования (добавления 1 к числу) и сложения двоичных чисел. В то же время многие микроконтроллеры, особенно ранних разработок, не имеют команд для прямого вычитания. Они могут только суммировать, и в них

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

Поясним, почему вычитание может быть заменено сложением чисел, представленных в дополнительном коде. Для начала сложим десятичные числа со знаком +5 и +3. Рассмотрим процедуру действий в случае одновременного сложения чисел в десятичном и в дополнительных кодах:

1-е число 2-е число

(+5) 0000 0101

(+3) 0000 0011

(+8) 0000 1000.

Согласно табл. 10, +5 представляется в виде 0000 0101, аналогично +3 -- в виде 0000 ООН. Положительные числа 0000 0101 и 0000 0011 складываются, как обычные двоичные числа, давая сумму 0000 1000, которая в соответствии с табл. 10 равна +8,д. Следовательно, сложение двух положительных знаковых чисел, представленных в соответствии с табл. 10, дает правильный результат. Это неудивительно, т. к. знаковому представлению положительных чисел соответствует его обычное двоичное представление.

Пусть теперь надо сложить десятичные числа -t-7 и -3. Согласно табл. 10, числу +7 соответствует 0000 0111, а числу -3 соответствует 1111 1101. Сложим их как обычные двоичные числа, а результат суммирования также будем считать знаковым числом, использующим дополнительный код:

1-е число 2-е число

(+7) 0000 0101 4- +

(-3) 11111101

(+4) 1 0000 0100 (пренебречь переполнением).

Старший бит является переполнением 8-разрядного регистра, и им нужно пренебречь. Получаем сумму 0000 0100 или +4,о. Таким образом, сложение представленных с использованием дополнительного кода двух знаковых чисел, одно из которых отрицательно, по-прежнему дало правильный результат. Но ведь это то же самое, что вычитание числа 3 из числа 7! Таким образом, мы заменили вычитание сложением знаковых чисел +7 и -3, получив в итоге (без учета переполнения) нужный результат.



1 2 3 4 ... 20
© 2004-2024 AVTK.RU. Поддержка сайта: +7 495 7950139 в тональном режиме 271761
Копирование материалов разрешено при условии активной ссылки.
Яндекс.Метрика