A: mov cx,1; N является полным квадратом
ГУАП
КАФЕДРА № 34
ОТЧЕТ
ЗАЩИЩЕН С ОЦЕНКОЙ
ПРЕПОДАВАТЕЛЬ
старший преподаватель | К. А. Жиданов | |||
должность, уч. степень, звание | подпись, дата | инициалы, фамилия |
ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №1 |
по курсу: ИНФОРМАТИКА И ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ |
РАБОТУ ВЫПОЛНИЛ
СТУДЕНТ ГР. № | 3943 | Л.В.Краснов | |||
подпись, дата | инициалы, фамилия |
Санкт-Петербург 2019
Часть 1. Целочисленные вычисления
Задание №1: Вычислить общую площадь стенок параллелепипеда с ребрами a, b и с.
Решение:
1) Будем использовать 32-разрядные регистры, несмотря на целочисленные значения, применяемые в работе. Использование данных регистров не повлияет на наш результат, т.к они всего лишь способны хранить более объёмную информацию, чем16-разрядные регистры.
2) В работе будут применяться следующие регистры:
EAX, EBX, ECX, ESI, EDI, EBP, все они 32-разрядные. Результат программы будет записан в регистре EAX.
3) Для данной задачи алгоритм является вырожденным, т.к. представляет собой последовательность операций.
4) Текст программы
Mov ax , 2
Mov bx , 5
Mov cx, 3
Mul bx
Mov si, 2
Mov di, 0
Mul si
Mov di, ax
Mov ax, 2
Mul cx
Mul si
Mov bx, 0
Mov bx, ax
Mov bp, 3
Mov ax, 2
Add ax, bp
Mul cx
Add ax, di
Add ax, bx
Ret
5) Результаты работы программы на наборах входных данных:
|
|
6) Трассировочная таблица в соответствии с последовательными действиями:
№ СТРОКИ | EAX | EBX | ECX | EBP | ESI | EDI |
1 | 2 | ? | ? | ? | ? | ? |
2 | - | 5 | ? | ? | ? | ? |
3 | - | - | 3 | ? | ? | ? |
4 | 10 | - | - | ? | ? | ? |
5 | - | - | - | ? | 2 | ? |
6 | - | - | - | ? | - | 0 |
7 | 20 | - | - | ? | - | - |
8 | - | - | - | ? | - | 20 |
9 | 2 | - | - | ? | - | - |
10 | 6 | - | - | ? | - | - |
11 | 12 | - | - | ? | - | - |
12 | - | 0 | - | ? | - | - |
13 | - | 12 | - | ? | - | - |
14 | - | - | - | 3 | - | - |
15 | 2 | - | - | - | - | - |
16 | 5 | - | - | - | - | - |
17 | 15 | - | - | - | - | - |
18 | 35 | - | - | - | - | - |
19 | 47 | 12 | - | - | - | - |
Программа работает правильно, при подстановке других значений нет никаких заминок.
Ответ: На регистре сохранилось значение =47.
Часть 2. Вычисления с плавающей точкой
Задание №2: Вычислить площадь треугольника по формуле Герона (даны длины сторон треугольника).
Решение:
1) Для решения задачи будет использован сопроцессор и значения с плавающей точкой. Данные будут записаны в формате IEEE754.
3) Формула для вычисления площади треугольника способом Герона:
S = √(p·(p - a)·(p - b)·(p - c)), пусть a=3, b=4, c=3, d=2.
4) Текст программы
|
|
Section .data
A dd 0x40400000
B dd 0x40800000
C dd 0x40400000
D dd 0x40000000
E dd 0x00000000
F dd 0x00000000
Section .text
Global CMAIN
CMAIN:
Mov ebp,esp; for correct debugging
1.fld dword [a]
2.fld dword [b]
Fadd
4.fld dword [c]
Fadd
6.fld dword [d]
Fdiv
8.fst dword [e]
9.fld dword [e]
10.fld dword [a]
Fsub
12.fst dword [f]
13.fld dword [e]
14.fld dword [b]
Fsub
16.fld dword [f]
Fmul
18.fst dword [f]
19.fld dword [e]
20.fld dword [c]
Fsub
22.fld dword [f]
Fmul
24.fst dword [f]
25.fld dword [f]
Fsqrt
27.fst dword [f]
Ret
5) Результаты работы программы на наборах входных данных.
Использовались ячейки памяти, чтобы проверить результаты проведённой работы.
6) Трассировочная таблица
№ СТРОКИ | a | b | c | d | e | f | ||
1 | 3 | ? | ? | ? | ? | ? | ||
2 | - | 4 | ? | ? | ? | ? | ||
3 | Вычисления | |||||||
4 | - | - | 3 | ? | ? | ? | ||
5 | Вычисления | |||||||
6 | - | - | - | 2 | ? | ? | ||
7 | Вычисления | |||||||
8 | - | - | - | - | 5 | ? | ||
9 | - | - | - | - | - | ? | ||
10 | 3 | - | - | - | - | ? | ||
11 | Вычисления | |||||||
12 | - | - | - | - | - | 2 | ||
13 | - | - | - | - | - | - | ||
14 | - | 4 | - | - | - | - | ||
15 | Вычисления | |||||||
16 | - | - | - | - | - | 2 | ||
17 | Вычисления | |||||||
18 | - | - | - | - | - | 2 | ||
19 | - | - | - | - | 5 | - | ||
20 | - | - | 3 | - | - | - | ||
21 | Вычисления | |||||||
22 | - | - | - | - | - | 2 | ||
23 | Вычисления | |||||||
24 | - | - | - | - | - | 4 | ||
25 | - | - | - | - | - | 4 | ||
26 | Вычисления
| |||||||
27 | - | - | - | - | - | 2 |
Программа работает правильно, при подстановке дугих значений никаких заминок не происходит.
Ответ: S треугольника=2.
Часть 3. Условные переходы
Задание №3: Вычислить номер четверти координатной плоскости, в которой лежит точка с указанными координатами (x;y)
Решение:
1). Возьмём число n, относительно которого будем рассматривать известные нам x и y.
2). Пусть n=0, тогда:
При x>n и y<n будет 4 четверть: e
При x>n и y>n будет 1 четверть: f
При x<n и y<n будет 3 четверть: d
При x<n и y>n будет 2 четверть: c, Где c, d, e и f-созданные метки.
3) При решении воспользуемся регистрами AX, BX, CX и DX
4) Ответ будет записан в регистре DX
5) Текст программы:
Mov ax, 0; число n
Mov bx, 3; это x
Mov cx , -2; это y
Cmp bx,ax
Jl a
Jmp b
A : cmp cx , ax
Jg c; то 2 четверть
Jmp d; то 3 четверть
D : mov dx ,2
Ret
C : mov dx ,1
Ret
B: cmp cx,ax
Jl e; то 4 четверть
Jmp f; то 1 четверть
E: mov dx,3
Ret
F: mov dx,4
Ret
6) Схема
7) Трассировочная таблица
№ СТРОКИ | AX | BX | CX | DX | ||
1 | 0 | ? | ? | ? | ||
2 | - | 3 | ? | ? | ||
3 | - | - | -2 | ? | ||
4 | Сравнение
| |||||
5 | Переход на метку а, если меньше | |||||
6 | Переход в противном случае на метку b | |||||
7 | Сравнение на метке а | |||||
8 | Переход, если больше на метку с | |||||
9 | Переход в противном случае на метку d | |||||
10 | - | - | - | d :3 | ||
11 | Возможное окончание | |||||
12 | - | - | - | c :2 | ||
13 | Возможное окончание | |||||
14 | Сравнение на метке b | |||||
15 | Переход на метку е, если меньше | |||||
16 | В противном случае переход на метку f | |||||
17 | - | - | - | e:4 | ||
18 | Возможное окончание | |||||
19 | - | - | - | f:1 | ||
20 | Возможное окончание |
При подстановке следующих числовых значений:
X=3
Y=-2
на регистре DX сохранится значение 4, что свидетельствует о том, что точка находится в 4 четверти. Результат получился правильный.
Ответ: при X=3 и Y=-2, точка лежит в 4 четверти.
Часть 4. Циклы
Задание №4: Определить, является ли заданное число N полным квадратом.
Решение:
1) Возьмём какое-либо число М
2) Пусть М=3, N=9
3) Полный квадрат числа-это единственное значение числа: результат его умножения на самого себя. => Чтобы число N было полным квадратом числа М, нужно при умножении числа М на самого себя получить число N.
4) При решении данной задачи будем использовать регистры AX, BX и CX.
5) Текст программы:
Mov bx, 9; N
Mov ax, 3; M
Mul ax
Cmp ax,bx
Je a
Jne b
a: mov cx,1; N является полным квадратом
Ret
Дата добавления: 2019-11-16; просмотров: 126; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!