Практична робота № 3 Асемблер
Внутрішнє представлення дійсних даних в IBM PC
Мета роботи
Виконати переведення заданих чисел з десяткової в двійкову систему числення. Дати їх внутрішнє (машинне) представлення у форматах типів float, double, long double. Машинне представлення даних має бути дане в двійковій і шістнадковій системах числення.
Порядок роботи
вичислити для свого варіанту дійсні числа;
перевести їх з десяткової в двійкову систему числення і зробити нормалізацію;
отримати їх внутрішнє представлення;
написати програму опису цих чисел на мові Асемблера і отримати лістинг;
перевірити правильність своїх викладень.
У звіті по лабораторній роботі має бути представлений детальний протокол переведення усіх заданих чисел з десяткової в двійкову систему числення .
Варіанти
До заданих двох базових чисел ± X і ± Y, потрібно додати і відняти № свого варіанту (для цілої і дробової частини окремо). Інші варіанти чисел - машинне представлення окремо для дробової і цілої частини.
Наприклад, нехай X = ± 60, Y = ± 4567, № = 45. Тоді вийдуть наступні дванадцять дійсних чисел для варіанту № = 45, а саме:
№ п\п |
Базове число |
Ціла частина |
Дробова частина |
Числа варіанту |
|
60.4567 |
60+45 =105 |
4567+45=4612 |
105.4612 |
|
60.4567 |
60-45 =15 |
4567-45=4522 |
15.4522 |
|
-60.4567 |
-60+45 =-15 |
-4567+45=-4522 |
-15.4522 |
|
-60.4567 |
-60-45 =-105 |
-4567-45=-4612 |
-105.4612 |
|
|
|
|
105 |
|
|
|
|
15 |
|
|
|
|
-15 |
|
|
|
|
-105 |
|
|
|
|
0,4612 |
|
|
|
|
0,4522 |
|
|
|
|
-0,4522 |
|
|
|
|
-4612 |
Контрольні питання
З якими дійсними даними працює співпроцесор (платформа WIN16)?
Що таке характеристика?
Машинні формати дійсних даних.
Діапазон допустимих значень для дійсних даних.
Що може означати, наприклад, машинне представлення 0F6549FDCh, і в якому форматі?
Приклад рішення типового варіанту
Варіант № 45. Базові числа: X = ± 60, Y = ± 4567.
Зробимо докладний протокол отримання внутрішнього представлення наступних чисел:
105.4612, - 105. і 0.4612
в усіх трьох дійсних форматах.
Рішення
Типи змінних, їх діапазони значень і кількість потрібної для них пам'яті приведені в наступній таблиці:
Тип |
Діапазон значень |
Необхідна пам'ять |
float |
1.5e-45 ... 3.4e38 |
4 bytes |
double |
1.7e-308 ... 1.7e308 |
8 bytes |
long double |
3.4e-4932... 3.4e4932 |
10 bytes |
Переведення десяткових чисел в двійкову систему числення
Оскільки знак числа враховується тільки в старшому біті внутрішнього формату, то в кроці 1 і кроці 2 ми працюватимемо з додатними числами.
Спочатку переведемо ціле число 105 в двійкову систему числення :
-
105
2
104
52
2
1
52
26 ™1
2
0
26
13
2
0
12
6 5~~™П
2
1
6
3
2
0
2
1
1
105d - 110 1001b
Тепер переведемо в двійкову систему числення правильний десятковий дріб Для перевірки представлення в 32-х бітовому форматі нам достатньо 24-х біт в мантисі (зробимо із запасом - 26 біт) :
0.46126 - ??? bin
-
№ біта
Біт
Мантиса (Dec)
Множник
0
4612
2
1
0
9224
2
1
8448
3
1
6896
4
1
3792
5
0
7584
6
1
5168
7
1
0336
8
0
0672
9
0
1344
10
0
2688
11
0
5376
12
1
0752
13
0
1504
14
0
3008
IS
0
6016
16
1
2032
17
0
4064
18
0
8128
19
1
6256
20
1
2512
21
0
5024
22 J
1
0048
23 1
0
0096
24
0
0192
25
0
0384
26 [
0
0768
0.4612d - 0.0111 0110 0001 0001 0011 0100 00b
Таким чином:
105.4612d - 110 1001.0111 0110 0001 0001 0011 0100 00b