Міністерство освіти і науки УкраїниНаціональний технічний університет України
«Київський політехнічний інститут ім. І. Сікорського»
Кафедра автоматизації проектування енергетичних процесів і систем
Лабораторна робота №1
з дисципліни «Операційні системи»
«Внутрішнє представлення цілочисельних даних в IBM PC»
Мета роботи. Виконати переведення чисел, наданих викладачем, з десяткової у двійкову систему числення. Надати їх внутрішньомашинне представлення відповідно до діапазону знакових та беззнакових форматів типів чисел. Машинне представлення даних необхідно надати у двійковій та шістнадцятирічній системі числення.
Теоритична частина.
Загальноприйнята форма запису числа являє собою скорочену форму запису розкладання по ступенях основи системи счислення, наприклад:
13067810=1*105+3*104+0*103+6*102+7*101+8*100
Загальна формула надання чисел у позиційної системі числення :
D = n0*m0+ n1*m1+ n2*m2+. . . + nk*mk ( 1)
D – числове дане
n - цифра на позиції і у числі
m - основа системи числення (2, 8, 10, 16)
Десяткове представлення позначається d – Decimal, двійкове – b (Binary),
Для переведення чисел з системи счислення з основою p у систему счислення з основою q з використанням арифметики старої системи счислення з основою p потрібно:
для переведення цілої частини:
послідовно число, записане в системі з основою p, слід ділити на основу нової системи счислення, виділяючи залишок. Останні (числа залишку), записані в зворотному порядку, будуть утворювати число в новій системі счислення;
для переведення дробової частини:
послідовно дробову частину слід множити на основу нової системи счислення, виділяючи цілі частини, які і будуть утворювати запис дробової частини числа в новій системі счислення.
Представлення чисел у десятковій, двійковій, шістнадцятирічній системі
Decimal, d
Binary, b
Hexadecimal, h
0
0000
0
1
0001
1
2
0010
2
3
0011
3
4
0100
4
5
0101
5
6
0110
6
7
0111
7
8
1000
8
9
1001
9
10
1010
A
11
1011
B
12
1100
C
13
1101
D
14
1110
E
15
1111
F
Цілочисельні типи даних, їх діапазони значень та кількість пам’яті, яку вони потребують, наведені у таблиці:
Тип
Діапазони значень
Необхідна пам’ять
Byte
0 - 255 28 - беззнакові
1 byte
Shortint
-128 - 127 (28 / 2) знакові
1 byte
Word
0 - 65535 216 беззнакові
2 bytes
Integer
-32768 – 32767 (216 / 2) знакові
2 bytes
Longint
-2 147 483 748 - 2 147 483 747 (232 / 2) знакові
4 bytes
Директиви асемблера для задання простих типів даних
Довжина (біт)
Ініціалізація
Опис
8
DB(Define Byte) – визначити байт
BYTE
16
DW(Define Word) – визначити слово (2 байти)
WORD
32
DD(Define Double Word) – визначити подвійне слово (4 байти)
DWORD
64
DQ(Define Quarter Word) – визначити зчетверене слово (8 байт)
QWORD
80
DT(Define Ten Bytes) – визначити 10 байтів (80-бітні типи даних, що використовуються FPU).
TBYTE
Завдання1. Перевести задані числа викладачем відповідно свого варіанту у двійкову систему, показавши детально покрокову схему переведення.
Надати внутрішнє представлення заданих чисел у вигляді таблиць. Виконати перевірку, підготувавши програму з використанням компілятора з мови Асемблер TASM та отримання файлу лістингу.
2025 + 25= 2050
-2025 - 25= -2050
2025 - 25= 2000
-2025 + 25 = -2000
217 + 25 = 242
-217 - 25 = -242
217 - 25 = 192
-217 + 25 = -192
Переведені числа з десяткової у двійкову (або шістнадцятирічну) систему счислення.
/
/
Внутрішньомашинне представлення
/
Виконати перевірку та отримати лістинг
/
Лістинг
/
/
Лістинг 2
Виділення помилок:
i db 0, 255
i1 db -255 ;Вихід за рамки діапазону (-128-127)
ii db -128, 127
a1 db 242
a2 db 192
a3 dw -242
a4 dw -192
r0 dw -255
r dw 0, 65535
r1 dw -1, -32768
r2 dw -65535 ;Вихід за рамки діапазону (-32768 – 32767)
r4 dd -65535
z1 dw 2050
z2 dw 2000
z3 dw -2050
z4 dw -2000
Завдання 2. Створити у Блокноті файл «Повні дані Прізвище» (файл dani.asm). У файлі dani.asm видалити символ коментаря « ; », запустити на трансляцію та уважно проаналізувати внутрішньомашинне представлення різних значень даних та їх типів, віднайти дані з невірним типом даних та виділити їх напівжирним накресленням.
/
Лістинг
/
/
/
/
Виділенні помилки:
.MODEL tiny
.data
k db -8
db -10
dw -10
db 15
db -15
db 0feh
db 0b12h
db 01100110b
dw 10001011b
dw 12
dw '0f'
dw 0245h
dw 0101b
dw 0a32h
dw 0f45h
dw 55
dw 0c47h
dw 0afh
dd 4, 8, 0Ah, 0ffh
dw -15
db -16
dw -16
r db 127
q db -127
t1 dw -127
db 128
i db -128
i1 dw -128
w db -129
p dw -129
db 255
db -255
db 256
dw 256
q dw -32768
rr1 df -32768
zz1 dd -32768
j dw 32767
a dw 65535
dw -65535
dd -65535
dd -2147583548
dd 2147583548
dq -2147583548
dq 2147583548
ll dw 10101000b
ff db 12, "№", 0b12h
f1 dw 12, "№", 0b12h
g5 db 0101b
ss dw 00000101b
xx dq 26
c1 dw 0f45h, 55, 66
a1 db -113
a2 dw -113
ii db -159
i11 dw -159
s1 db -89
ss5 dw -89
s2 db -92
ff2 dw -92
s3 dw -231
a11 db "sigma"
a22 dw e301h
a33 db 12
a55 dw offset a11
a66 dw 13
gg dw -123
hh dw -9
end
Висновок: Під час виконання лабораторної роботи я переводив задані викладачем десяткові числа в двійкову та шістнадцяткову систему числення та надав їх внутрішньо-машинне представлення відповідно до діапазону знакових та беззнакових форматів типів чисел.
Перевірив файл dani.asm , в якому були виявлені помилки, пов’язані з невірними заданими діапазонами чисел та використанням символів, що вже проіндексовані в мові асемблер. Помилки були проаналізовані.