Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Уч. пос. МПТ (2.04.12).pdf
Скачиваний:
404
Добавлен:
22.03.2015
Размер:
10.95 Mб
Скачать

Ограниченная разрядность поля операнда не позволяет загружать произвольную 32-разрядную константу. Непосредственно в коде команды могут размещаться только 8-разрядные константы с 4-разрядным смещением (раздел 1.4.1). Для загрузки 32-разрядных констант используются команды обмена с памятью. Влияние команд пересылки на флаги состояния разрешается или запрещается модификатором «S». Формат команд:

MOV{Усл}{S}

,

 

 

MVN{Усл}{S}

,

 

 

 

 

Операнд12 копируется в регистр-приемник

(R0–R15).

Примеры:

 

 

 

 

MOV

R0, #0x80

; R0

= 0x80

MVN

R0, R1, LSR #2

; R0

= ~(R1 << 2)

Для загрузки «полноценных» 32-разрядных констант служит псевдокоманда

LDR{Усл} , =

При этом константа размещается в отдельной ячейке памяти программ, адрес которой задается 12-разрядным кодом, обычно в виде смещения по отношению к счетчику команд.

1.3.4 Команды загрузки и сохранения регистров

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

Команда{Усл} , /

Поддерживается косвенная или индексная адресация (раздел 1.4.2). Имеется несколько модификаций команд этой группы (таблица 1.3.2) для пересылки байтов и двухбайтных слов. Как указывалось выше, при передаче 16разрядного слова адрес обязательно должен быть четным, а при передаче 32разрядного слова — кратным четырем. На флаги состояния программы команды эти команды не влияют.

Примеры:

STR

R1,

[R2]

;

*R2 = R1

LDR

R1,

[PC, #0x58]

;

R1 = *(PC + 0x58)

К этой же группе относится команды SWP одновременно загружающую и сохраняющую регистры. С помощью SWP можно «перестановить местами» содержимое регистра и ячейки памяти.

1.3.5 Команды пакетного обмена с памятью

Основное назначение таких команд — сохранение регистров в стек и последующем их восстановлении. В адресной части команды указывается регистр, содержащий базовый адрес блока памяти, перечень регистров общего назначения, содержимое которых требуется сохранить в блок памяти или загрузить этим блоком, а также метод адресации. Поддерживается автоинкрементный и автодекрементный виды адресации.

19