5.2. Формати надання чисел в мікропроцесорах
В залежності від специфіки використання мікропроцесорів числа в них можуть бути надані в різних форматах.
1) В простих випадках використання МПС широко використовується формат надання цілих чисел без знака в двійковому коді. Так, наприклад, для 8-ми розрядного процесора таке надання має вид:
В7 В6 В5 В4 В3 В2 В1 В0
0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 +255
Межі надання чисел не великі і складають від 0 до 2 – 1 , тобто складають тільки 256 різних чисел, які не повторюються. Відповідно у 12-розрядному процесорі в слові можна записати без знаку число 4095.
При необхідності суттєвого збільшення меж надання чисел у восьми розрядних мікропроцесорах використовують багатобайтові коди даних, або використовують більш потужний по розрядності мікропроцесор (16-ти чи 32-х розрядні). Наприклад, межі надання двійкових чисел в двох байтах 8-ми розрядного процесора або в 16-ти розрядному сягають від 0 до 65535
десяткової системі числення.
2) В МП, які орієнтовані на обробку даних, в яких, крім логічних операцій,
виконуються алгебраїчні операції (додавання та віднімання), використовується
формат надання чисел зі знаком.
Для того, щоб надати від’ємні і позитивні числа в будь-якій системі числення можна використовувати два способи.
Перший спосіб (звичайний) – це надання числа із знаком у прямому коді, коли спочатку надається знак числа, а потім саме число. Використовування даного способу для надання від’ємних чисел в мікропроцесорній техніці значно ускладнює структуру мікропроцесора для виконання ним математичної операції віднімання. В цьому випадку необхідно виконати не менше трьох операцій: 1) спочатку визначити, яке із двох чисел, що віднімаються, більше; 2) виконати саму операцію віднімання – від більшого відняти менше; 3) присвоїти результату знак більшого числа.
Для більш оптимального виконання операцій віднімання в
мікропроцесорній техніці застосовується другий спосіб - від’ємні числа надають у вигляді доповнюючого коду (у вигляді доповнення до основи системи числення і символ “-“(мінус) для їх ідентифікації не використовується), що дозволяє замінити операцію віднімання окремим видом додавання.
Доповненням D для n – розрядного числа Е називають різницю:
D = q - Е,
де q – основа системи числення; q - кількість різних чисел (комбінацій), що не повторюються і знаходяться в діапазоні від 0 до q ;
n – кількість розрядів (позицій) числа.
При цьому способі надання чисел із знаком із загальної кількості чисел q , половину чисел, а саме від 0 до (q /2 – 1) використовують як позитивні, а
іншу половину – як від’ємні і як доповнення до першої половини чисел.
Наприклад, розглянемо чотирьох розрядне число в десятковій системі числення : q =10; n =4; і відповідно q = 10000. В цьому діапазоні позитивні та від’ємні числа у формі прямого коду та їх відповідні доповнення до основи числення можуть бути записані так:
Прямий код Доповнюючий код
- 5000 +5000
- 4999 +5001
- 4998 +5002
……. …….
-3 +9997
-2 +9998
-1 +9999
0 0000
+1 0001
+2 0002
+3 0003
……. ……
+4998 4998
+4999 4999
Визначення: В будь-якій системі числення доповненням числа до її основи (або доповнюючим кодом числа) називається число, при додаванні якого до вихідного числа дістають всі нулі в позиціях (розрядах), які відповідають розрядам вихідного числа і одиницю в наступному по старшинству розряді, який відсутній у вихідному числі.
Легко перевірити правильність отриманних доповнень в приведеному вище переліку. Для цього треба додати число із нижньої половини (нижче значення 0000) правого стобчика з його доповненням, що розташоване на такій же відстані, але над кодом нуля (0000). Результатом такого додавання будуть числа 10 = 10000. Так як розрядність числа нами обмежена до чотирьох, то одиниця отриманого результату в п’ятому розряді «вивалюється » за розрядну сітку і не враховується нами, а результат дорівнює нулю. Н., 0003 + 9997 = 1 0000, де 0003 – позитивне число, а 9997 – від’ємне в доповнюю чому коді.
Перепишемо формулу для визначення доповнення числа до основи числення таким чином:
D = q - Е = [ (q - 1) – Е] + 1,
де (q -1) - це число, яке складається тільки із старших символів (цифр) системи числення, в якій записується число.
Отримана формула показує, що доповнення числа D можна отримати і без
безпосереднього віднімання самих чисел q та Е, а шляхом утворення спочатку доповнення [(q - 1) – Е], тобто, визначенням доповнення для кожного символу (кожної цифри) в усіх розрядах числа до максимального символу (старшої цифри) системи числення. А шукане доповнення D отримати шляхом додавання до отриманого числа 1 (одиниці).
Наприклад, отримати доповнення до десяткового числа: 1234.
1. Знаходимо доповнення в кожному розряді до старшої цифри (до 9) : 8765
2. Додаємо до отриманого числа одиницю 1
3. Шукане значення доповнюючого коду до числа 1234 є число 8766.
Перевіряємо, чи вірно виконане перетворення: 1234 + 8766 = 1 0000
Отримане в результаті додавання перенесення одиниці в неіснуючий старший розряд підтверджує вірність доповнюючого коду.
Виконання таких операцій в двійковій системі є особливо простим. Так як доповненням до 1 є 0, а доповненням до 0 є 1, то можна сформулювати правило отримання доповнення двійкових чисел:
доповнення D для двійкового числа знаходять заміною в кожному розряді вихідного двійкового числа 0 на 1, а 1 на 0 , тобто, виконують порозрядну інверсію числа (таку операцію називають знаходженням оберненого коду і вона виконується в МП дуже просто) і добавляють до числа, яке дістали, ще одиницю.
Наприклад, отримати доповнюючий код до двійкового числа 1010:
вихідне число - 1010, проводимо його порозрядну інверсію і дістаємо число
0101, до якого добавлямо 1. Результат дорівнює :
0110.
Використовуємо визначення, що: доповнення числа до 2 ( або кажуть доповнюючий код двійкового числа) – це число, при додаванні якого до вихідного числа дістають всі нулі в розрядах, які відповідають розрядам вихідного числа, і 1 - в наступному по старшинству розряді, який відсутній в вихідному числі.
Перевіряємо, чи вірно виконане перетворення:
1010 (вихідне двійкове число)
+ 0110 (доповнючий код двійкового числа 1010)
= 1 0000 (результат додавання).
Необхідно відмітити ще одну особливість доповнюючого коду двійкових чисел: - їх старший біт у байті виконує функцію знаку числа і він відводиться під знак «s» числа. Якщо s = 1, то число від’ємне і знаходиться в доповнюючому коді, а якщо s = 0 – то число позитивне і знаходиться у регістрі в прямому коді. Тому старший біт В7 в байті таких чисел, що зберігаються в регістрах або в комірках пам”яті, називають знаковим розрядом.
Таким чином, в мікропроцесорах позивні числа надаються модулем, або
кажуть в прямому коді, а від’ємні – у вигляді доповнення (доповнюючим кодом).
В одному байті 8-ми розрядного МП може бути розміщено число із знаком в таких межах (від’ємні – у вигляді доповнення):
S
B7 B6 В5 В4 В3 В2 В1 В0 Десяткове
1 0 0 0 0 0 0 0 -128
1 1 1 1 1 1 1 1 -1
0 0 0 0 0 0 0 0 0
0 1 1 1 1 1 1 1 +127.
3) В тих випадках, коли МПС вимагає ще більшого розширення меж надання чисел, використовують багатобайтові коди.
Наприклад, надання числа подвійної довжини (двобайтові числа). Знаковий розряд знаходиться при цьому в старшому розряді В7 старшого байту. Відповідно межа надання чисел розширюється від -2 = 32768 .. до ..+2 -1 = 32767.
Приклад розміщення в пам’яті 32-бітного двійкового цілого зі знаком.
Обробка таких багатобайтових чисел, розміщених в сміжних комірках, виконується в МП побайтно, починаючи з молодшого байту, шляхом виклику відповідної підпрограми обробки та 3-х разової модифікації (інкрементування) показника даних.
Пам’ять: Адреса
А Байт 0 Розміщення
А+1 Байт 1 чотирьохбайтного
А+2 Байт 2 (32 – бітного) числа в пам”яті МПС
А+3 s/Байт 3
4) Якщо в МПС потрібно виконувати операції над числами за правилами десяткової арифметики використовується так званий десятковий двійково-кодований упакований формат, або двійково- десяткова система числення. В цій системі десяткові цифри від 0 до 9 надаються 4-х розрядними двійковими комбінаціями від 0000 до 1001, тобто, двійковими еквівалентами десяти перших шістнадцяткових цифер. Перетворення виконується прямою заміною чотирьох розрядів двійкового числа одною десятковою цифрою і навпаки. Дві двійково - десяткові цифри складають байт, який умовно розбивається на дві тетради, в кожній із яких кодується десяткове число. Тобто, за допомогою 1 байта можна надати десяткове число від 0 до 99, а не від 0 до 255 або від 0 до FF, як при використовуванні двійкового 8-ми розрядного числа чи 2-х розрядів шістнадцяткового числа.
0 0 0 0 0 0 0 0 0
0 1 0 1 0 1 0 1 55
1 0 0 0 0 1 1 1 87
1 0 0 1 1 0 0 1 99
Старша цифра Молодша цифра
Використовуючи 1 байт для надання кожних 2-х десяткових чисел, можна утворювати двійково-десяткове число з будь-яким необхідним числом десяткових розрядів: н, (9538)10 = (1001 0101 0011 1000)2-10.
5) Якщо в МПС необхідно виконувати операції з багатобайтовими числами
зі знаком за правилами десяткової арифметики, то для кодування знака
числа використовується старша тетрада старшого байту, а (залишки) інші тетради зберігають двійові коди десяткових чисел. При цьому позитивне число в знаковій тетраді кодується 4-ма нулями (0000), а від”ємне – кодується 1001 (дев’яткою), що означає знак – “мінус”.
Наприклад: розміщення позитивного числа +9678348 в 4-х байтах:
А Тетрада 1 Тетрада 2 9 6 7 8 3 4 8
А+1 Тетрада 3 Тетрада 4 (0000 1001 0110 0111 1000 0011 0100 1000 )
А+2 Тетрада 5 Тетрада 6 (7 6 5 4 3 2 1 )
А+3 s s s s Тетрада 7 знак ( всього сім тетрад )
Позитивне число надається прямим кодом, а від”ємне – в доповюючому коді.
Н., від’ємне число: - 538 (його доповнюючий код: 462) буде записано 2-х байтах:
1001 0100 0110 0010
знак 4 6 2
6) Для надання дробових чисел в МП використовується формат з плаваючою комою, а саме число займає довжину в 32 розряди (4 байти ) . Як правило , при цьому три молодших байти відводяться для надання мантиси m, а старший байт використовується для надання порядку числа та його знаку. Порядок “Р” надається зміщеним кодом “Рсм” зі зміщенням 64 та займає біти В6....В0. При цьому біт В6 задає знак порядку: В6=1 при позитивному порядку, та В6=0 – при від”ємному порядку. Значення порядку лежить в межах від +63 до –64. Старший біт В7 в старшому байті задає знак числа: В7=0 – відповідає плюсу (позитивному числу), а В7=1 – мінусу (від’ємному).
Мантиса m надається прямим (при позитивному числі) та доповнюючим (при від’ємному) кодом і повинна бути нормалізована, тобто, мати значущу цифру старшу цифру, яка знаходиться по модулю в диапазоні від 2 до 1. Якщо в процесі обчислень мантиса денормалізується, то число результату знову нормалізується, тобто, виконується зсув мантиси вліво (або вправо) з одночасним зменшенням (збільшенням) порядку. Число з плаваючою комою визначається як: а = m * 2 , що дозволяє перекривати діапазон чисел від 2 до 2 .
Наприклад, розміщення у мікропроцесорі цілого від’ємного числа ( - 1234) у форматі з плаваючою комою.
Число спочатку нормалізується, тобто, записується у вигляді: - 0,1234 Е +4, тобто, дорівнює - 0,1234 * 10 , де Е – символ порядку числа, а сам порядок дорівнює 4 і його знак (+).
В двійковому еквіваленті число (-1234) буде записано в чотирьох байтах так:
в старшому В7 розряді старшого байту буде записана 1, так як вихідне число від“ємне;
в розряді В6 буде записана 1, так як порядок нормалізації позитивний;
в розрядах від В5 до В0 цього ж старшого байту буде записано двійковий
еквівалент числа 4 ( значення порядку нормалізації), тобто, 000100;
в молодших трьох байтах буде розміщено безпосередньо саме число (1234) в двійковій системі числення, як мантиса.
- Київ нухт 2011
- 1. Загальні відомості про мікропроцесор та мікропроцесорну систему
- 1.1. Мікропроцесор. Загальні положення та визначення.
- 1.2. Архітектура мікропроцесора
- 1.3. Загальна структура мікропроцесора та його функціонування
- 1.4. Поняття про мікропроцесорну систему (мпс)
- 1.5. Поняття мікропроцесорного контролера
- 2. Загальні відомості пронадання та опрацювання інформації в мікропроцесонній техніці
- 2.1. Поняття інформації та дві форми її надання
- 2.2. Фізична суть цифрової інформації та елементи її реалізації
- 3. Основи алгебри логіки
- 3.1. Загальні положення
- 3.2. Опис та задання логічних функцій.
- 3.3. Основні логічні функції алгебри логіки
- 4. Способи надання інформації в мікропроцесорі
- 4.1. Поняття систем числення в мікропроцесорній техніці
- 4.2. Дівйкова система числення та основи переведення чисел між системами числення
- 4.2.1. Перетворення двійкових чисел в десяткові.
- 4.2.2. Перетворення десяткових чисел в двійкові
- 4.3. Вісімкова та шістнадцяткова системи числення
- 5. Структурні елементи мікропроцесора
- 5.1. Поняття машинного слова, регістрів
- 5.2. Формати надання чисел в мікропроцесорах
- 5.3. Двійкова арифметика в мікропроцесорі.
- 5.4. Двійково-десяткова арифметика.
- 5.4.1 Додавання двійково-десяткових чисел без знаку.
- 5.4.2 Додавання двійково-десяткових чисел із знаком.
- 5.5. Регістр стану (psw) мп та його призначення
- 5.6. Поняття шин (bus) мікропроцесора
- 5.7. Арифметично – логічний пристрій мікропроцесора
- 5.8. Пристій вводу – виводу (пвв).
- In 07н; ввести в акумулятор дані із порту 7;
- Поняття шинних драйверів.
- 5.9. Поняття інтерфейсу
- 5.10. Передавання інформації у послідовному коді.
- 5.11. Память мікропроцесорів та опереції з нею
- 5.12. Адресний простір мікропроцесора
- 5.13. Стек та його використовування
- 6. Мови програмування мпс
- 6.1. Рівні мов прграмування мп.
- 6.1.1. Базова мова мікропроцесора.
- 6.1.2. Мова “ асемблер” (другого рівня).
- 6.1.3. Мови третього рівня.
- 6.2. Основні правила запису програм на мові асемблера
- 6.3 Програмне забезпечення мікропроцесорнихсистем та його види
- 6.4. Способи адресації в мікропроцесорній системі
- 6.5. Формати команд мікропроцесорів
- Варіанти однобайтних команд:
- 6.6. Робочий цикл виконання програми мп
- 7. Однокристальний мікропроцесорний контролер кр1816ве51…….
- 7.1. Номеклатура та порівняльні характеристики мп
- 7.2. Структурна схема мікроконтролера кр1816ве51 та призначення складових
- Призначення виводів мп кр1816ве51
- Призначення виводів мп кр1816ве51
- 7.3. Функціонування мп кр1816ве51
- 7.4. Система команд мп кр1816ве51
- In port- те, що знаходиться в порту вводу заноситься в акумулятор а
- 8. Приклади програмування на асемблері кр1816ве51
- 8.1 Форомалізований підхід до розробки прикладної програми
- 8.2. Підрахунок імпульсів
- 8.3. Функції часової витримки
- 8.4. Функції вимірювання часових інтервалів
- 8.5. Перетворення кодів між системами числення
- 8.6. Аналого-цифрове перетворення
- 8.7 Приклад програмування технічної задачі
- 8.7.1. Постановка задачі
- 8.7.2. Аналіз задачі.
- 8.7.3. Розробка схеми пристрою та інтерфейсу.
- 8.7.4. Інженерна інтерпретація задачі
- 8.7.5. Розробка блок –схеми алгоритму
- 8.7.6 Розробка прикладної програми
- Програма sezam
- Контрольні запитання з курсу
- Література
- 1..Технічне та програмне забезпечення плк “ломіконт” Функціональні можливості плк “Ломіконт”.
- Технічні характеристики Ломіконта
- 2. Фізична сруктура контролера та його склад
- На рис 1.1 приведена фізична структура л-110 з основними модулями.
- Програмування плк “ломіконт”
- ПрК задає логіку управління конкретним технологічним об”єктом.
- Порядок виконання програми контролером:
- 05 Если умова а
- 07 Если умова в
- 11 Если умова с
- 00 Если в дв015
- 01 Тогда о кс102
- 02 Иначе в кс116
- 14 Тогда алг 031 (потім виконати алгоритм 031)
- 3. Приклад програмування на технологічній мові «Мікрол»
- Програмування алгоритму
- Безпоседньо програма
- 11 Тогда о кс100 - 26 тогда тс 1.0.0
- Бібліотека алгоритмів «ломіконту»