Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lekz._8.doc
Скачиваний:
3
Добавлен:
05.05.2019
Размер:
182.27 Кб
Скачать

2.1. Огляд групи арифметичних команд і даних

Цілочисельний обчислювальний пристрій підтримує трохи більше десятка арифметичних команд. На рис. 8.1 наведено класифікацію команд цієї групи.

Рис. 8.1 - Класифікація арифметичних команд

Група арифметичних цілочисельних команд працює з двома типами чисел:

• цілими двійковими числами. Числа можуть мати знаковий розряд або не мати такого, тобто бути числами зі знаком чи без знаку;

• цілими десятковими числами.

Розглянемо машинні формати, в яких зберігаються ці типи даних.

2.2. Цілі двійкові числа

Ціле двійкове число з фіксованою точкою - це число, закодоване в двійковій системі числення. Розмірність цілого двійкового числа може складати 8, 16 або 32 біт. Знак двійкового числа визначається тим, як інтерпретується старший біт в поданні числа. Це 7-й, 15-й або 31-й біти для чисел відповідної розмірності. При цьому цікаво те, що серед арифметичних команд є лише дві команди, які дійсно враховують цей старший розряд як знаковий, - це команди цілочисельного множення і ділення imul і idiv. В інших випадках відповідальність за дії зі знаковими числами і, відповідно, зі знаковим розрядом лягає на програміста. Діапазон значень двійкового числа залежить від його розміру і трактування старшого біта або як старшого значущого біта числа, або як біта знака числа (табл. 8.1).

Таблица 8.1 - Діапазон значень двійковх чисел

Розмірність поля

Ціле без знаку

Ціле зі знаком

байт

0...255

–128...+127

слово

0...65 535

–32 768...+32 767

двійне слово

0...4 294 967 295

–2 147 483 648...+2 147 483 647

Як описати числа з фіксованою точкою в програмі? Це робиться з використанням директив опису даних. Наприклад, послідовність описів двійкових чисел з сегменту даних лістингу 3 (пам'ятайте про принцип “молодший байт за молодшою адресою”) виглядатиме в пам'яті так, як показано на рис. 8.2.

Лістинг 3. Числа с фіксованою точкою

;prg_8_3.asm

masm

model small

stack 256

.data ;сегмент даних

per_1 db 23

per_2 dw 9856

per_3 dd 9875645

per_4 dw 29857

.code ;сегмент коду

main: ;точка входу в програму

mov ax,@data ;зв’язуємо регістр dx з сегментом

mov ds,ax ;даних через регістр ax

exit: ;див. у відлагоджувачу дамп сегменту даних

mov ax,4c00h ;стандартний вихід

int 21h

end main ;кінець програми

2.3. Десяткові числа

Десяткові числа — спеціальний вид подання числової інформації, в основу якого покладено принцип кодування кожної цифри десяткового числа групою з чотирьох біт. При цьому кожен байт числа містить одну або дві десяткові цифри в так званому двійково-десятковому коді (BCD - Binary-Coded Decimal). Мікропроцесор зберігає BCD-числа у двох форматах (рис. 8.3):

  • упакованому форматі - в цьому форматі кожен байт містить дві десяткові цифри. Десяткова цифра є двійковим значенням в діапазоні від 0 до 9 розміром 4 біта. При цьому код старшої цифри числа займає старші 4 біта. Отже, діапазон подання десяткового упакованого числа в одному байті становить від 00 до 99;

  • неупакованому форматі - в цьому форматі кожен байт містить одну десяткову цифру в чотирьох молодших бітах. Старші чотири біта мають нульове значення. Це так звана зона. Отже, діапазон подання десяткового неупакованого числа в одному байті становить від 0 до 9.

Р ис. 8.2 - Дамп пам'яті для сегменту даних лістингу 1

Рис. 8.3 - Представлення BCD-чисел

Лістинг 4. BCD-числа

;prg_8_4.asm

masm

model small

stack 256

.data ;сегмент даних

per_1 db 2,3,4,6,8,2 ;неупаковане BCD-число 286432

per_3 dt 9875645 ;упаковане BCD-число 9875645

.code ;сегмент коду

main: ;точка входу в програму

mov ax,@data ;зв’язуємо регістр dx з сегментом

mov ds,ax ;даних через регістр ax

exit: ;див. у відлагоджувачу дамп сегменту даних

mov ax,4c00h ;стандартний вихід

int 21h

end main ;кінець програми

Як описати двійковій-десяткові числа в програмі? Для цього можна використовувати тільки дві директиви опису та ініціалізації даних - db і dt. Можливість застосування лише цих директив для опису BCD-чисел обумовлена тим, що до таких числах також застосуємо принцип "молодший байт за молодшому адресою", що, як ми побачимо далі, дуже зручно для їх обробки. І взагалі, при використанні такого типу даних як BCD-числа, порядок опису цих чисел в програмі і алгоритм їх обробки - це справа смаку і особистих пристрастей програміста. Це стане зрозуміло після того, як ми нижче розглянемо основи роботи з BCD-числами. Наприклад, наведена в сегменті даних лістингу 4 послідовність описів BCD-чисел буде виглядати в пам'яті так, як показано на рис. 8.4.

Після настільки докладного обговорення об'єктів, з якими працюють арифметичні операції, можна приступити до розгляду засобів їх обробки на рівні системи команд мікропроцесора.

Рис. 8.4 - Дамп пам'яті для сегменту даних лістингу 4

8

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]