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

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

учреждение высшего образования

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

телекоммуникаций им. Проф. М.А. Бонч-Бруевича»

(СПБГУТ)

Лабораторная работа №1

Группа: ИКПИ-32

Студент:

Максим Яковлев

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

2024 г.

Программа 1:

.global _start

  1. _start: LDR R0, = ADR1

  2. LDR R1, [R0]

  3. LDR R2, [R0, #4]

  4. LDR R3, [R0, #8]

  5. LDR R4, =ADR2

  6. STMIA R4!, {R1-R3}

  7. LDMDB R4!, {R5-R7}

  8. LDR R8, ADR3

  9. STR R8, [R0]

  10. Stop: B Stop

ADR1: .word 20, 36, 52

ADR2: .word 0, 0, 0

ADR3: .word 100

.end

Вопросы:

  1. Каким образом производится адресация памяти, относительно состояния базы, при внесении элементов массива в регистры?

Ответ – для внесения элемента массива в регистр указывается адрес регистра, адрес базы и смещение в формате «Ra, [Rb, #x]».

  1. Как меняется состояние базы при выполнении команд STMIA и LDMDB?

STMIA: Базовый регистр служит отправной точкой, а затем его значение поэтапно увеличивается на сумму смещений.

LDMDB: Сначала базовый регистр поэтапно уменьшается на сумму смещений, а затем используется для загрузки данных. В результате получается адрес первого загруженного слова.

  1. Чему соответствуют переменные, загружаемые в R0, R4 и R8?

  • R0 – база. Получает адрес метки ADR1 (указатель на массив [20, 36, 52])

  • R4 получает адрес метки ADR2 (указатель на массив [0, 0, 0])

  • R8 получает значение 100 из ADR3 (непосредственное значение)

Программа 2:

.text

.global _start

_start: LDR R0, =0xFF200040

LDR R1, =ARR

MOV R2, #3

MOV R4, 0

M:

LDR R3, [R0]

STR R3, [R1], #4

SUBS R2, #1

BNE M

FIN B FIN

ARR: .word 0,0,0

.end

Вопросы:

  1. Какой тип адресации, относительно состояния базы, Вы используете для занесения массива с внешнего устройства в память?

В данной программе для занесения массива с внешнего устройства в память используется пост-инкрементная адресация [R1], #4. После каждой операции сохранения данных в память, адрес в регистре R1 автоматически увеличивается на 4 байта.

  1. Каким образом Вы формируете базу для работы с массивом в этой программе?

База для работы с массивом формируется с помощью команды LDR R1, =ARR, где ARR – это метка, указывающая на начало массива в памяти.

Соседние файлы в папке Лабораторные работы. Неелова