лр2_
.docxМИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ федеральное государственное автономное образовательное учреждение высшего образования «САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ КАФЕДРА вычислительных систем и сетей
ОЦЕНКА
ПРЕПОДАВАТЕЛЬ
ассистент А.Н. Долидзе
должность, уч. степень, звание подпись, дата инициалы, фамилия
ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №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 Скриншот окна симулятора с примером вычислений.