Лабораторная работа VAX5

advertisement
Лабораторная работа VAX5
Преобразование форматов данных
Цель работы: преобразование чисел из целочисленных форматов в форматы с
плавающей запятой и обратное преобразование из форматов с плавающей запятой в
целочисленные форматы.
Методические указания
Форматы целых чисел и чисел с плавающей запятой подробно описаны в файле
text2.doc.
Варианты индивидуальных заданий приведены в табл.1.
Таблица 1
Номер
Варианта
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Входной формат
Выходной формат
W
B
F
D
D
B
L
F
G
G
L
L
F
D
W
W
F
D
W
B
W
G
F
L
B
L
D
G
L
L
D
G
Пример 1. Составить программу перевода числа из формата B в формат F.
Схема алгоритма преобразования представлена на рис.1.
Пусть A – входное число, B - выходное число. Сначала необходимо определить
знак числа A.
Если число A отрицательное, то выполняется перевод числа в прямой код, т.е.
определяется модуль числа, и в старший разряд числа В записывается 1. Далее
выполняется нормализация числа A, и определяется истинный порядок числа A.
Смещенный порядок образуется из истинного путем прибавления числа 128 и
записывается в разряды 30 – 23 числа B. И, наконец,
из мантиссы убирается
скрытый бит и мантисса записывается в разряды 22 – 0 числа B.
Текст программы в мнемонических и машинных кодах представлен в табл.2, а карта
распределения памяти – в табл.3.
НАЧАЛО
e=8
B=0
Ввод A
да
A=0?
нет
да
A>0?
нет
A = -A
B = 0x80000000
A&0x80 = 1 ?
да
нет
e=e-1
A = A << 1
e = e + 128
e = e << 23
B=Bve
A = A & 0x7F
A = A << 16
B=BvA
Вывод B
КОНЕЦ
Рис.1
Таблица 2 Текст программы перевода числа из формата B в формат F
Адрес
00
02
04
06
09
0C LOOP:
0F
11
15
17
19 M2:
1C
20
23
26
2A
2D
Шестн.е.код
51 95
29 13
06 14
51 51 8E
55 54 с8
52 51 93
08 12
51 51 01 78
50 97
F3 11
50 52 82
50 50 17 78
55 50 C8
51 52 8A
51 51 10 78
55 51 С8
00
Мнемон.код
TSTB R1
BEQ END
BGTR LOOP
MNEGB R1,R1
BISB2 R4,R5
BITB R1,R2
BNE M2
ASHL #1, R1, R1
DECB R0
BR LOOP
ADDB2 R2,R0
ASHL #23, R0, R0
BISL2 R0,R5
BISB2 R2,R1
ASHL #16, R1, R1
BISL2 R1,R5
HALT
Комментарий
Проверка R1
Перейти, если R1 = 0
Перейти, если R1 > 0
Перевод числа в прямой код
R5 = R5 | R4 (установка знака)
R1 & 0x80 (проверка разряда)
Перейти, если разряд равен 1
R1 = R1 << 1 (следующий разряд)
R0 = R0 – 1
Переход на след. Итерацию
R0 = R0 + 128 (смещ. порядок)
R0 = R0 << 23 (уст. Порядка)
R5 = R5 | R0
R1 = R1 & 0x7F (скрытый бит)
R1 = R1 << 16 (уст. Мантиссы)
R5 = R5 | R1
Останов
Таблица 3 Карта распределения памяти
Объект
Место
размещения
A
R1
B
R5
E
R0
Константа 128 R2
Константа
R4
0x80000000
Значение
Комментарий
0x00000000
0x00000008
0x00000080
0x80000000
Входное число в формате B
Выходное число в формате F
Порядок числа
Число 128
Для установки знакового
разряда числа в формате F
Программный
код
0x000000000x0000002D
Перевод числа -1 из формата B в формат F представлен на рис.2.
1
1111111
Формат B
Определение модуля числа
00000001
Определение истинного
порядка числа
0,1 * 21
Определение смещенного
порядка числа
10000001
Определение мантиссы числа
1000 0000 0000 0000 0000 0000
Запись в формат
1
10000001
000 0000 0000 0000 0000 0000
Формат F
Рис.2
Пример 2. Составить программу перевода числа из формата F в формат B.
Схема алгоритма преобразования представлена на рис.3.
Пусть B – входное число, A - выходное число. Сначала необходимо извлечь из
формата числа B мантиссу (разряды 22 - 0), и добавить к ней скрытый бит. Далее
извлекается смещенный порядок числа (разряды 30 - 23).
Истинный порядок получается из смещенного вычитанием величины смещения
128. После этого мантисса числа приводится к формату байта (удаляются младшие
16 бит). Выполняется денормализация мантиссы согласно величине порядка.
Полученная величина (модуль числа) переводится в дополнительный код, если
число B отрицательное (разряд 31).
Текст программы в мнемонических и машинных кодах представлен в табл.4, а карта
распределения памяти – в табл.5.
.
НАЧАЛО
A=0
Ввод B
B=0?
да
нет
A = B & 0x7FFFFF
A = A v 0x800000
e = B >> 23
e = e & 0xFF
e = e - 128
A = A >> 16
e=8–e
A = A >> e
B< 0?
нет
да
A=-A
Вывод A
КОНЕЦ
Рис.3
Таблица 4
Адрес
00
03
05
08
0B
0E
13
17
1A
1D
22
26
28
2A
2D END:
Шестн.код
54 55 D0
28 13
53 55 D0
54 56 CA
54 50 C8
53 53 E9 8F 78
53 57 CA
53 80 8F 82
53 08 82
54 54 F0 8F 78
54 54 52 78
55 D5
03 14
54 54 8E
00
Мнемон.код
MOVL R5,R4
BEQ END
MOVL R5,R3
BICL2 R6,R4
BISL2 R0,R4
ASHL #-23,R3,R3
BICL2 R7,R3
SUBB2 #128,R3
SUBB2 #8,R3
ASHL #-16,R4,R4
ASHL R3,R4,R4
TSTL R5
BGTR END
MNEGB R4,R4
HALT
Комментарий
R4 = R5
Перейти, если R5 = 0
R3 = R5
R4 = R4 & 0x7FFFFF
R4 = R4 v 0x800000
R3 = R3 >> 23
R3 = R3 & 0x000000FF
R3 = R3 – 128
R3 = R3 - 8
R4 = R4 >> 16
R4 = R4 >> R3
Проверка R5
Перейти, если R5 >0
Перевод числа в дополнит. Код
Останов
Таблица 5 Карта распределения памяти
Объект
Место
размещения
R5
R4
R0
B
A
Константа
0x00800000
Константа
R6
0xFF800000
Константа
R7
0xFFFFFF00
Программный
код
Значение
Комментарий
0x00000000
0x00800000
Входное число в формате F
Выходное число в формате B
Для установки скрытого бита
Для извлечения разрядов
мантиссы
0xFFFFFF00 Для извлечения разрядов
порядка
0x000000000x0000002D
0xFF800000
Перевод числа -1 из формата F в формат B представлен на рис.4.
1
10000001
000 0000 0000 0000 0000 0000
Формат F
Извлечение мантиссы числа
и добавление скрытого бита
1000 0000 0000 0000 0000 0000
Извлечение смещенного
порядка числа
Мантисса в формате
байта
10000000
10000001
Определение истинного
Нормализованное
порядка числа (смещенный
представление числа
порядок - 128)
00000001
0,1 * 21
Запись в формат
1
Рис.4
1111111
Формат B
Содержание отчета
1. Титульный лист.
2. Текст задания.
3. Схема алгоритма программы.
4. Текст программы в мнемонических и машинных кодах.
5. Карта распределения памяти под команды и данные.
6. Таблица трассировки программы.
Download