Скачиваний:
0
Добавлен:
21.12.2024
Размер:
25.12 Кб
Скачать

Федеральное государственное образовательное бюджетное учреждение

высшего профессионального образования

«Санкт-Петербургский государственный университет телекоммуникаций

им. проф. М.А. Бонч-Бруевича»

Отчет по лабораторной работе №5

По дисциплине «Микропроцессорные устройства».

Ассемблер ARM (Cortex A9)

Выполнил студент

Группы РТ-11

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

2023

Команды арифметических операций.

К основным командам арифметических операций относятся команды арифметики 1-ой ступени, выполняющиеся в АЛУ – сложение, вычитание и арифметическое сравнение, а также операции, выполняющиеся в блоке умножителя и в блоке умножителя + АЛУ – умножение и умножение с последующим сложением.

Команды, выполняющиеся на сумматоре с фиксацией результата в защелке -сложение и вычитание всегда предполагают наличие 3-х операндов. В общем виде:

OP Rd, Rn, Rm ; где

Rd – приемник операнда,

Rn – первый операнд-источник,

Rm – второй операнд-источник.

В качестве второго операнда может быть использовано его непосредственное значение. Приемником может быть как отдельный регистр, так и регистр первого операнда-источника.

Например:

ADD R3, R2, R1 SUB R0, R2, R1

ADD R6, R6,#20 SUB R3, R3,#20

ADC R1, R0, R3 SBC R4, R0, R5

Необходимо заметить, что эти команды при получении результата флагов состояний не выставляют. Логические цепочки, позволяющие получить флаги состояний, подключаются только при записи после команды суффикса S (ADDS, SUBS и т.п.).

Специальными командами, устанавливающими флаги состояний, для этой группы являются команды арифметического сравнения. Такие команды не имеют операнда-приемника. Есть операнд, который сравнивают, и операнд, с которым сравнивают. Сравнение можно производить как с помощью вычитания, так и с помощью сложения.

CMP R5, R0 (imm)

CMN R4, R2 (imm)

Команды умножения выполняются в блоке умножителя, а также в блоке умножителя с дополнительным сумматором для возможности накопления результата.

MUL R2, R4, R5

[R2] <= [R4] x [R5]

MLA R2, R4, R5, R6

[R2] <= ([R4] x [R5] + [R6])

MLS R3, R1, R2, R4

[R3] <= ([R1] x [R2] – [R4])

Эти команды в обычной записи флагов не устанавливают. Суффикс S могут иметь команды MUL и MLA, но только для ARM-кодирования.

Работа № 2, ассемблер.

  1. Следуя методике, описанной в лабораторной работе №3 (работа №1, ассемблер), набрать и выполнить в шаговом режиме Прогр. 2.

  2. В каждом цикле выполнения устанавливать новое значение на тумблерах, первый проход – число 15; второй – 35, третий - 37.

  3. При выполнении программы по шагам обратить внимание на состояние регистра CPSR в части флагов состояния процессора. При изменении его состояния записать только старший символ в 8-разрядном 16-ном числе (например 0x2-------) и внести его двоичное значение в таблицу 1.

  4. Заполнить таблицу 2.

Прогр. 2

.text

.global _start

1._start: LDR R0, ADR1 // базовый адрес порта тумблеров в R0

2. LDR R1, ADR2 // базовый адрес порта светодиодов в R1

3. MOV R6, #3 // счетчик обращений к порту тумблеров

4. MOV R2, #35 // базовое число

5. MET: LDR R3, [R0] // обращение к тумблерам

6. ADD R4, R3, R2

7. STR R4, [R1] // обращение к светодиодам

8. SUB R5, R3, R2

9. STR R5, [R1] // обращение к светодиодам

10. SUBS R5, R3, R2

11. STR R5, [R1] // обращение к светодиодам

12. SUBS R6, #1

13. BNE MET

14. FIN: B FIN

ADR1: .word 0xFF200020

ADR2: .word 0xFF200000

.end

Таблица 1.

№команды

31 разр. (NF)

30 разр. (ZF)

29 разр. (CF)

28 разр. (VF)

8

0

0

1

0

10

1

0

0

0

8

0

0

1

0

10

0

1

1

0

8

0

0

1

0

10

0

0

1

0

Таблица 2.

№команды

Состояние регистра

Состояние порта

Состояние флагов

Произведенное действие

1

r0=0xff200040

Адрес тумблеров

2

r1=0xff200000

Адрес светодиодов

3

r6=3

Счетчик циклов

4

r2=0x23

Базовое число

5

r3=0xf

0xff200040=0

xf

Загрузка числа

6

r4=0x32

Получение суммы

7

0xff200000=0

x32

Вывод суммы

8

r5=0xffffffec

0x2

Разность

9

0xff200000=0

x...3ec

0x2

Вывод разности

10

r5=0xfffffec

0x8

Разность с установкой флага

11

0x...3ec

str

12

r6=0x2

Cpsr 0x2...

subs

5

r3=0x23

0xff200040=0

x23

Загрузка числа

6

r4=0x46

add

7

0xff200040=0

x46

Вывод суммы

8

r5=0x0

0x2...

sub

9

0

str

10

r5=0x0

0x6

sub

11

0

str

12

r6=0x1

0x2...

sub

5

r3=0x25

0xff200040=0

x25

Загрузка числа

6

r4=0x48

add

7

0xff200000=0

x48

Вывод суммы

8

r5=0x2

0x2...

sub

9

0xff200000=0

x2

str

10

r5=0x2

0x2

sub

11

0x2...2c

str

12

r6=0x0

0x6...

sub


Вывод: В ходе работы были отработаны команды арифметических операций.

Соседние файлы в папке лабы