Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБОРАТОРНА РОБОТА общее.doc
Скачиваний:
33
Добавлен:
18.03.2015
Размер:
5.16 Mб
Скачать

Додатковий код

Сама ЕОМ обробляє інформацію звичайно у двійковому коді. Однак якщо потрібно використовувати числа зі знаком, використовується спеціальний додатковий код, що спрощує апаратні засоби ЕОМ.

На мал. 3,а наведене звичайне зображення регістра МП або комірки пам'яті поза МП. Такий регістр представляють простором з 8 біт даних. Позиції біт пронумеровані від 7 до 0, а ваги двійкових позицій зазначені в підставі регістра, біт 7 має вага 128, біт 6 - 64 і т.д.

7

6

5

4

3

2

1

0

128

64

32

16

8

4

2

1

Вага

двійкової

позиції

а)

7

6

5

4

3

2

1

0

1

(-)

7

6

5

4

3

2

1

0

0

(+)

64

32

16

8

4

2

1


Біт знаку Вага Біт знаку Запис додаткового коду

двійкової

позиції

б) в)

Рис 3. Зображення регістру МП або комірки пам’яті

На мал. 3,б и в показані типові структури 8-розрядних регістрів для розміщення чисел зі знаком. В обох випадках біт 7 є знаковим. Він указує, чи є число позитивним (+) або негативним (-). При 0 у знаковому біті число позитивно, при 1 - негативно.

Якщо, як показано на мал. 3,б, число позитивно, комірки пам'яті що залишилися (6 — 0) містять двійкове 7-розрядне число. Наприклад, якщо регістр на мал. 3,б містить 0100 0001, це відповідає числу +6510 (64 + 1, знаковий біт позитивний). Якщо в нього записано 0111 1111, змістом буде + 12710 (знаковий біт позитивний: + 64 +32 +16 + 8 + 4 + 2 + 1), що є найбільшим позитивним числом, що може містити 7-розрядний регістр.

Якщо, як це показано на мал. 3,в, регістр містить то ж число зі знаком, але негативне, він буде містити додатковий код цього числа. У табл. 2. наведений запис у додатковому коді позитивних і негативних чисел. Помітимо, що всі позитивні числа мають 0 у старшому біті, інші біти становлять двійкове число. Всі негативні числа мають 1 у старшому розряді. Розглянемо рядок +0 у табл. 2: запис у додатковому коді +0 буде 0000 0000. У найближчому нижньому рядку бачимо, що запис у додатковому коді -1 наступна: 1111 1111. Розглянемо покрокове переміщення у зворотному напрямку від 0000 0000 до 1111 1111.

Таблиця 2. Десяткові числа зі знаком і їхнє подання в додатковому коді

Десяткові

Подання

чисел зі знаком

Примітки

+127

.

.

.

+8

+7

+6

+5

+4

+3

+2

+1

+0

-1

-2

-3

-4

-5

-6

-7

-8

.

.

.

-128

0111 1111

.

.

.

0000 1111

0000 0111

0000 0110

0000 0101

0000 0100

0000 0011

0000 0010

0000 0001

0000 0000

1111 1111

1111 1110

1111 1101

1111 1100

1111 1011

1111 1010

1111 1001

1111 1000

.

.

.

1000 0000

Позитивні числа представлені в тій же формі, що й прямі двійкові числа

Негативні числа представлені у формі додаткового коду

Який буде запис у додатковому коді числа -9? Розглянемо етапи перетворення. Вони наступні:

Десяткове число 9

Етап 1

Запис десяткового числа без знака (9)

Двійкове число 0000 1001

Етап 2.

Перетворення десяткового числа у двійковий код (0000 1001)

Доповнення до 1

1111 0110

(зворотний або інверсний код)

Етап 3

Одержання зворотного коду двійкового числа заміною нулів одиницями, а одиниць - нулями (1111 0110)

Доповнення до 2

1111 0110

+1

11110111

Етап 4

Додати одиницю до зворотного коду, що дає 1111 0111.

Отриманий результат є додатковим кодом позитивного десяткового числа. У наведеному прикладі додатковим кодом числа 9 є 1111 0111. Помітимо, що знаковий біт -1, це означає, що розглянуте число (1111 0111) негативне.

Яким буде десятковий еквівалент числа 1111 0000, записаного у формі додаткового коду? Процедура перетворень у цьому випадку наступна:

Додатковий код

1111 0000

Етап 1.

Запис додаткового коду (1111 0000).

Доповнення до 1

Етап 2.

Отримуємо зворотний код додаткового коду заміною нулів одиницями, а одиниць-нулями (0000 1111)

0000 1111

+1

0001 0000=16

Двійкове число

Етап 3.

Додати 1

Таким чином, формування зворотного коду й додавання 1 є тими ж процедурами, які ми проводили при перетворенні двійкового числа в додатковий код. Однак слід зазначити, що, хоча ми одержали двійкове число 0001 0000 = 1610, вихідний запис додаткового коду 1111 0000 = -16, тобто маємо негативне число, оскільки старший біт у додатковому коді є 1.

Вправи

1. Коли числа зі знаком містяться в 8-розрядний регістр мікропроцесора, старший ( 7-й) біт називається __________.

2. Установити чи є наступні числа в додатковому коді позитивними або негативними: а) 0111 0000; б) 1100 1111; в) 1000 1111; г) 0101 0101.

3. Використовуючи табл. 2 дати додатковий код наступних десяткових чисел зі знаком: а) +1; б) +5; в) +127; г) -1; д) -2; е) -128.

4. Використовуючи процедуру, наведену вище, дати додатковий код наступних десяткових чисел зі знаком: а) —10; б) —21; в) —34; г) —96.

5. Розташування біт у додатковому коді ________, (у ДДК, у двійковому коді) однаково для позитивних двійкових чисел.

6. Використовуючи процедуру, наведену вище, дати десяткові еквіваленти наступних чисел у додатковому коді: а) 1111 1011; б) 0000 1111; в) 1000 1111; г) 0111 0111.

ЛІТЕРАТУРА.

1. Описание «Микролаб». (с. 21-22, с. 47-49, с. 97-100).

  1. Токхайм Р. Микропроцессоры. Курс и упражнения. (с. 161-168).

3. Гилмор Ч. Введение в микропроцессорную технику М., Мир, 1987, (с. 109-137).