Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лр2_

.docx
Скачиваний:
14
Добавлен:
18.01.2022
Размер:
385.5 Кб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ федеральное государственное автономное образовательное учреждение высшего образования «САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»

ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ КАФЕДРА вычислительных систем и сетей

ОЦЕНКА

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

ассистент А.Н. Долидзе

должность, уч. степень, звание подпись, дата инициалы, фамилия

ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №2

Программная реализация алгоритма выполнения целочисленной операции для архитектуры набора команд ARM

по дисциплине: Организация ЭВМ и вычислительных систем.

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

СТУДЕНТКА ГР. № В8441

подпись, дата инициалы, фамилия

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

1.Вариант задания: 9

1mod8+1=2

Умножение целых чисел со знаком в дополнительном коде с неподвижной суммой частичных произведений, сдвигом множимого влево и анализом множителя, начиная с младших разрядов.

2. Блок схема изучаемого алгоритма.

I >9

3. Код программы на языке ассемблера ARM.

mov r0,#0x00000007 @ множитель А

mov r1,#0xfffffff8 @ множитель B

mov r5,#0 @ переменная для коррекции

sub r5,r5,r0 @ вычитания из 0 множитель А, для отрицания A

mov r2,#0 @ сумма частных произведений / итог

mov r3,#0 @ счетчик цикла

mov r4,#1 @ маска

label1: tst r1, r4 @ флаг1 сравнение маски и множителя

beq label2 @ если 0 переход к флагу2

add r2,r2,r0 @добавляем в регистр р2 содержимое регистра р0

label2: mov r0,r0,lsl #1 @флаг2 сдвигаем множитель А на 1 бит влево

mov r4,r4,lsl #1 @сдвигаем маску 0001 – 0010 - 0100 - 1000

add r3,r3,#1 @ добавляем 1 к счетчику

CMP r3,#4 @ сравнение счетчика и количество циклов (4)

bne label1 @ если не 4 переход к флагу 1

cmp r1,#0 @ сравнени множитля с 0

bge finish @ если больше 0 переход к флагу финиш, если меньше 0(отрицание) добавляем корекцию

mov r5,r5,lsl #4 @ сдвиг коррекции на 4 бита влево

add r2,r2,r5 @ добавление к результату коррекуцию

finish: .end

2.1 Карта распределения памяти под программу и данные

r0 - множимое А

r1 - множитель B

r2 - сумма частичных произведений

r3 - счетчик цикла

r4 - маска, для анализа младшего бита множителя

r5 – отрицательная А (коррекция)

2.2 Таблица трассировки программы

Команда

Состояние памяти и регистров

Было

Стало

1

mov r0,#0x00000007

r0=0 pc=1000

r0=00000007 pc=1004

2

mov r1,#0xfffffff8

r1=0 pc=1004

r1= fffffff8 pc=1008

3

mov r5,#0

r5=0 pc=1008

r5=0 pc=100c

4

sub r5,r5,r0

r5=0 pc=100c

r5= fffffff9 pc=1010

5

mov r2,#0

r2=0 pc=1010

r2=0 pc=1014

6

mov r3,#0

r3=0 pc=1014

r3=0 pc=1018

7

mov r4,#1

r4=0 pc=1018

r4=00000001 pc=101c

8

label1: tst r1, r4

Z=0 pc=101c

Z=1 pc=1020

9

beq label2

pc=1020

pc=1028

10

label2: mov r0,r0,lsl #1

r0=00000007 pc=1028

r0=0000000e pc=102c

11

mov r4,r4,lsl #1

r4=00000001 pc=102c

r4=00000002 pc=1030

12

add r3,r3,#1

r3=0 pc=1030

r3=00000001 pc=1034

13

CMP r3,#4

N=0 pc=1034

N=1 pc=1038

14

bne label1

pc=1038

pc=101c

15

label1: tst r1, r4

pc=101c

pc=1020

16

beq label2

pc=1020

pc=1028

17

label2: mov r0,r0,lsl

r0=0000000e pc=1028

r0=0000001c pc=102c

18

mov r4,r4,lsl #1

r4=00000002 pc=102c

r4=00000004 pc=1030

19

add r3,r3,#1

r3=00000001 pc=1030

r3=00000002 pc=1034

20

CMP r3,#4

N=0 pc=1034

N=1 pc=1038

21

bne label1

pc=1038

pc=101c

22

label1: tst r1, r4

Z=0 pc=101c

Z=1 pc=1020

23

beq label2

pc=1020

pc=1028

24

label2: mov r0,r0,lsl #1

r0=0000001c pc=1028

r0=00000038 pc=102c

25

mov r4,r4,lsl #1

r4=00000004 pc=102c

r4=00000008

pc=1030

26

add r3,r3,#1

r3=00000002 pc=1030

r3=00000003

pc=1034

27

CMP r3,#4

N=0 pc=1034

N=1 pc=1038

28

bne label1

pc=1038

pc=101c

29

label1: tst r1, r4

pc=101c

pc=1020

30

beq label2

pc=1020

pc=1024

31

add r2,r2,r0

r2=0 pc=1024

r2=00000038 pc=1028

32

label2: mov r0,r0,lsl #1

r0=00000038 pc=1028

r0=00000070

pc=102c

33

mov r4,r4,lsl #1

r4=00000008

pc=102c

r4=00000010

pc=1030

34

add r3,r3,#1

r3=00000003

pc=1030

r3=00000004

pc=1034

35

CMP r3,#4

Z=0 C=0 pc=1034

Z=1 C=1 pc=1038

36

bne label1

pc=1038

pc=103c

37

cmp r1,#0

N=0 C=0 pc=103c

N=1 C=1 pc=1040

38

bge finish

pc=1040

pc=1044

39

mov r5,r5,lsl #4

r5= fffffff9 pc=1044

r5= ffffff90 pc=1048

40

add r2,r2,r5

r2=00000038 pc=1048

r2=ffffff90 pc=104c

2.3 Скриншот окна симулятора с примером вычислений.

9

Соседние файлы в предмете Схемотехника