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; Мы поможем в написании вашей работы!

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






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