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

ASM- 04: Практична робота.

Практична робота № 2

Внутрішнє представлення цілочисельних даних в IBM PC

Мета роботи

Виконати переведення заданих чисел з десяткової в двійкову систему числення. Дати їх внутрішнє (машинне) представлення відповідно до діапазону в знакових і беззнакових форматах типів signed char, unsigned char, int, short int, unsigned int. Машинне представлення даних має бути в двійковій і шістнадцятирічній системах числення.

Порядок роботи

  1. визначити для свого варіанту цілі числа;

  2. перевести їх з 10-тичної в 2-ву і 16-річну систему числення;

  3. отримати їх внутрішнє представлення;

  4. написати програму опису цих чисел на мові Асемблера і отримати лістинг;

  5. перевірити правильність своїх викладень.

Цілочисельні дані мають бути представлені в усіх можливих для платформи Win32 форматах з урахуванням їх діапазону представлення.

У звіті по лабораторній роботі має бути представлений детальний протокол переведення усіх заданих чисел з 10-тичної в 2-ву і 16-річну системи числення.

Варіанти

Базові числа: X =± 4567, Y =± 60.

До базових чисел ± X і ± Y, Ви повинні додати і відняти № свого варіанту.

Наприклад, X =± 4567, Y =± 60, № = 45.

Тоді вийдуть наступні вісім цілих чисел для варіанту № = 45, а саме:

1)

4567 +45 =

4612

2)

4567 -45 =

4522

3)

-4567 +45 =

-4522

4)

-4567 -45 =

-4612

5)

60 +45 =

105

6)

60 -45 =

15

7)

-60+45 =

-15

8)

-60 -45 =

-105

Контрольні запитання

  1. Перерахуйте усі базові цілочисельні типи даних в IBM PC.

  2. Діапазон допустимих значень для цілочисельних даних.

  3. Як отримати внутрішнє представлення заданих даних у форматі long int?

  4. Що може означати, наприклад, машинне представлення 0F654h, і в яких форматах?

Теоретична частина.

Для переведення цілого числа, із десяткової системи числення, в двійкову можна використовувати один з методів.

Спосіб 1.

Число необхідно ділити на 2 до отримання цілого залишку, меншого 2. Число в системі числення з основою 2 представиться у вигляді впорядкованої послідовності залишків ділення в порядку, зворотному їх отриманню. Старшу цифру числа дає останній залишок, а молодшу - перший.

Спосіб 2.

У двійковій системі число може бути представлено|уявляти| сумою ступенів двійки.

1610 - 24, отже

1610 =1*24 + 0*23 + 0*22 + 0*21 + 0*2°= 10000.

2410 = 16 + 8 = 1*24 + 1*23 + 0*22 + 0*21 + 0*2° = - 11000.

12510 = 64 + 32 + 16 + 8 + 4 + 1 = 1 * 26+ 1 * 25 + 1 * 24 + 1 * 23 + 1 * 22 + + 0*21+ 1 *2°= 1111101.

Для того, щоб змінити знак числа, треба інвертувати усі його біти і додати до нього одиницю - отримаємо представлення від’ємного числа в додатковому коді.

Внутрішнє представлення чисел.

У C/C++ цілі числа можуть мати тип char або int. Число може бути знакове (signed) або беззнакове (unsigned), а тип int еше може бути коротким (short) або довгим (long). Усі ці типи даних мають визначену довжину комірки, а звідси і допустимий діапазон значень.

У Асемблері програміст сам вирішує, які дані (цілі або дійсні) він помістить в ту або іншу комірку. Наприклад, арифметичне дане, під яке відведене 32 або 64 біта, може бути як цілим, так і дійсним .

Цілі числа без знаку

Для платформи Win32, цілі числа без знаку можуть займати 8, 16 або 32 біта.

Біт 0 - молодший біт (крайній справа). Старший біт – 7 (15 або 31) - крайній ліворуч.

Усі біти вважаються інформаційними.

31

... 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

0

старший

Біти

молодший

Приклад. У якому форматі його можна представити десяткове число 40 000? Тобто скільки йому потрібно біт і яке буде його внутрішнє (машинне) представлення?

Переведемо це число в двійкову систему числення. За допомогою калькулятора отримуємо:

40000d - 1001 1100 0100 0000b - 9C40h

По кількості отриманих біт видно, що для зберігання такого числа нам знадобиться мінімум 16 двійкових розрядів. В термінах C/C++ це формат unsigned short int для платформи Win32.

Можна це число розмістити і в 32-х бітах:

40000d - 0000 0000 0000 0000 1001 1100 0100 0000b - 0000 9C40h

Це будуть для C/C++ unsigned int, int, unsigned long, long (Win32).

Цілі знакові числа

Старший біт двійкового представлення цих чисел відводиться під знак (S біт – Signum):

S = 0 – для додатних чисел;

S = 1 - для від’ємних чисел.

Тому, діапазон допустимих значень для позитивних значень в два рази менше беззнакових.

S-знак

Інформаційне поле числа (0,1)

32

. . .

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

Приклад: У один байт помістити знакове число 12710:

00111 1111b - 7Fh - 127d

Приклад. Скільки біт необхідно для представлення числа -1607 і яке буде його внутрішнє (машинне) представлення?

  1. | -1607 | = - 0110 0100 0111b.

Тобто нашому числу досить 12 біт. Але такого формату немає, тому беремо, наприклад, 16 біт, додаючи провідні нулі: 0000 0110 0100 011lb

  1. Робимо інверсію нашого коду, отримуємо: 1111 1001 1011 1000b

  2. До отриманого коду добавляємо 1: 1111 1001 1011 1001b

У шістнадцятирічній системі числення : F9B9h.

У пам'яті комп'ютера це число зберігатиметься задом-наперед, тобто B9F9h.

Розмістимо число - 1607 в 32 бітах.

Відповідь: FFFF F9B9h

Звертаємо увагу на провідні двійкові одиниці. Число обов'язково має бути в знаковому форматі (наприклад, з точки зору C/C++ це формат long int - 32 біта). А якщо воно інтерпретуватиметься як беззнакове", то

FFFF F9B9h - 4294965689d

Т. ч. : двійковий код може бути один і той же для різних чисел Усе залежить від програміста, як він цей код тлумачитиме.

Розмістимо число - 1607 - розмістити в 64 бітах?

Відповідь: FFFF FFFF FFFF F9B9h

Цілочисельні типи, їх діапазони значень і кількість потрібної для них пам'яті приведені в наступній таблиці:

Тип

Діапазон значень

Необхідна пам'ять

unsigned char

0 ... 255

1 byte

char

-128 ... 127

byte

unsigned short int

0 ... 65 535

2 bytes

short int

-32 768 ...32 767

2 bytes

int (long int)

-2 147 483 648 ...2 147 483 647

4 bytes

Приклад рішення типового варіанту №19.

Базові числа: X = ± 2235, Y = ± 40.

1)

40+19 =

59

2)

40-19 =

21

3)

2235 + 19 =

2254

4)

2235 - 19 =

2216

5)

-40+19 =

-21

6)

-40-19 =

-59

7)

-2235 + 19 =

-2216

8)

-2235 - 19 =

-2254

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