Ответ: 5 – минимальное из трёх чисел.

ГУАП

КАФЕДРА № 34

ОТЧЕТ
ЗАЩИЩЕН С ОЦЕНКОЙ

ПРЕПОДАВАТЕЛЬ

старший преподаватель       К. А. Жиданов
должность, уч. степень, звание   подпись, дата   инициалы, фамилия

 

                       ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №1
                                         по курсу: ИНФОРМАТИКА
 

РАБОТУ ВЫПОЛНИЛ

СТУДЕНТ ГР. № 3045       А. Д. Паршин
      подпись, дата   инициалы, фамилия

Санкт-Петербург 2020

 

 

Задание 1. Целочисленные вычисления

Вычислить значение выражения (a-b)/c

1)Ход выполнения задания:

1) Для хранения чисел a, b, c в 16-ричной системе счисления будут использоваться регистры cl, al, bl. Разрядность выходных значений - 8 бит.

2) Результат программы будет находится в регистре al. (Остаток в ah, целое в al).

3) Переводим числа (10; -23; -24) в 16-ричную систему.

4) Производим вычитание al и bl. Реультат заносится в al.

5) Производим деление al/cl.

2) Текст программы:

8) xor eax, eax

9) xor ebx, ebx

10) xor ecx, ecx

11) mov al, 0x000a

12) mov bl, 0x0009

13) mov cl, 0x0008

14) sub al, bl

15) div cl

16) ret

 

 

3) Результаты работы программы на наборах входных данных:

 4) Трассировочная таблица в соответствии с последовательными действиями:

№ СТРОКИ EAX EBX ECX AL BL CL AH
8 0 ? ? ? ? ? ?
9 0 0 ? ? ? ? ?
10 0 0 0 ? ? ? ?
11 10 0 0 10 ? ? ?
12 10 -23 0 10 -23 ? ?
13 10 -23 -24 10 -23 -24 ?
14 -33 -23 -34 -33 -23 -24 ?
15 ? -24 -34 1 -23 -24 9

 

Программа работает правильно, при подстановке других значений нет никаких заминок.

Ответ: в регистре AL сохранилось значение 1.


Задание 2. Вычисления с плавающей точкой

Ход выполнения задания:

1) Ход выполнения задания:

1) Для решения задачи будет использован сопроцессор и значения с плавающей точкой. Данные будут записаны в формате IEEE754.
Приведём значения тестового набора к формату IEEE754. Рассмотрим число (-8) (для других чисел алгоритм аналогичный). Первый бит отводится для обозначения знака числа. Так как число -8 отрицательное, то первый бит равен 1. Следующие 8 бит (с 2-го по 9-й) отведены под экспоненту. Последние 23 бита под мантиссу. Переведём -8 в двоичную систему счисления – (-1000). Сдвинем число на 3 разряда вправо. В результате мы получили основные составляющие экспоненциального нормализованного двоичного числа: мантиссу – 1.000 и экспоненту – 3. Для определения знака экспоненты, чтобы не вводить ещё один бит знака, добавляют смещение к экспоненте в половину байта +127. Таким образом, наша экспонента = 3 + 127 = 130. Переведем экспоненту в двоичное представление: 130 = 10000010. Оставшиеся 23 бита отводят для мантиссы. У нормализованной двоичной мантиссы первый бит всегда равен 1. Мантисса = 01000000000000000000000.
Таким образом, после преобразования по стандарту IEEE754 число -8 будет иметь вид – 11000001000000000000000000000000. Переведём в hex = 0xc1000000. По аналогии переведём числа (30; -30) в формат IEEE754.

 

 

2)Выполнение программы осуществляется по формуле (a-b)/c. Переведём это выражение в постфиксную нотацию – ab-c/.

2) Текст программы

8) fld dword[a]

9) fld dword[b]

10 )fsub

11) fld dword[c]

12) fdiv

13) fst dword[d]

14) ret

15) SECTION .data

16) a dd 0x41f00000

17) b dd 0xc1f00000

18) c dd 0xc1000000

19) d dd 0

 

3) Результаты работы программы на наборах входных данных.

Использовались ячейки памяти, чтобы проверить результаты проведённой работы.

 

 

 

4) Трассировочная таблица

№ СТРОКИ a b c d
7 30 ? ? 0
8 - -30 ? 0
9 - - ? 0
10 60 - -8 0
11 - - - -7.5

 

Программа работает правильно, при подстановке других значений никаких заминок не происходит.

Ответ: в переменной «d» сохранилось значение равное -7.5.

 

 

Часть 3. Найти минимальное из трёх чисел a, b и c

 

Решение:

 

1) Определим для минимального числа регистр EAX.

2) Текст программы:

8) xor eax, eax

9) xor ebx, ebx

10) xor ecx, ecx

11) xor edx, edx

12) mov eax, 24

13) mov ebx, 29

14) mov ecx, 5

15) cmp eax, ebx ; Сравним значения регистров

16) jl branch1

17) jmp branch2

18) branch1: cmp eax, ecx

19) jl result1

20) jmp result2

21) result1: mov edx, eax

22) jmp quit

23) result2: mov edx, ecx

24) jmp quit

25) branch2: cmp ebx, ecx

26) jl result3

27) jmp result2

28) result3: mov edx, ebx

29) jmp quit

30) quit: ret

3) Схема

 

 

 

7) Трассировочная таблица

 

№ СТРОКИ EAX EBX ECX EDX
12 24 ? ? 0
13 - 29 ? 0
14 - - 5 0
15

                             

a < b , branch1

18

c < a, result2

23 - - - 5

При подстановке следующих числовых значений: {24, 29, 5} на регистре EDX сохранится значение 5, что свидетельствует о том, что 5 – минимальное из вводимых трёх чисел. Результат получился правильный.

 

Ответ: 5 – минимальное из трёх чисел.

 

 


Дата добавления: 2023-01-08; просмотров: 27; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!