Предыдущая Следующая

• убываю1ций/возрастак>щий стек — стек растет вниз, начинаясь с большего адреса и наращиваясь к меньшему (убывающий стек), или вверх, начинаясь с меньшего адреса и наращиваясь к большему (возрастающий стек);

• полный/пустой стек — указатель вершины стека может указывать на последний элемент в стеке (полный стек) или на следующую свободную ячейку в стеке (пустой стек).

В Табл. 1.11, Табл. 1.12 приведены суффиксы, задающие способ модификации базового регистра в командах LDM и STM при групповом перемещении регистров общего назначения и при операциях со стеком. Эти суффиксы обозначены при описании форматов и операционных кодов команд LDM и STM процессора ARM7TDMI-S соответственно как <a_mode4L> и <a_mode4S>. Следует заметить, что суффиксы операций со стеком могут использоваться вместо суффиксов перемещения регистров общего назначения.

Режим адресации, обозначенный при описании форматов и операционных кодов команд процессора ARM7TDMI-S как <a_mode5>, описан в Табл. 1.13.

Таблица 1.11. Режим адресации 4 (<a_mode4L>) для команд загрузки

Групповая загрузка

Помещение в стек (PUSH)

IA

Инкремент после

FD

Полный убывающий стек

IB

Инкремент до

ED

Пустой убывающий стек

DA

Декремент после

FA

Полный возрастающий стек

DB

Декремент до

ЕА

Пустой возрастающий стек

Таблица 1.12. Режим адресации 4 (<a_mode4S>) для команд сохранения

Групповое сохранение

Выталкивание из стека (ГОР)

IA

Инкремент после

ЕА

Пустой возрастающий стек

IB

Инкремент до

FA

Полный возрастающий стек

DA

Декремент после

ED

Пустой убывающий стек

DB

Декремент до

FD

Полный убывающий стек

Таблица 1.13. Режим адресации 5 (<a_mode5>) для команд сопроцессора

Операция

Ассемблерная мнемоника

Примечание

Преиндексное непосредственное смещение

[Rn, #+/- <8*4bit_Imm>] {!}

 

Преиндексное нулевое смещение

[Rn]

Эквивалентно [Rn, #0]

Постиндексное непосредственное смещение

[Rn], #+/- <8*4bit_Imm>

 

304

При выполнении арифметических и логических операций один из операндов размещается в регистре, а второй (<Oprnd2>) — в регистре, ячейке памяти или задается непосредственно. Результат всегда размещается в регистре Rd. Следует заметить, что процессор не выполняет операцию деления, которая должна реализоваться программно, например, с помощью вызова соответствующей подпрограммы. Возможные типы второго операнда (<Oprnd2>), используемого в командах, приведены в Табл. 1.14.

Суффиксы, которые используются в командах пересылки с участием регистров SPSR и CPSR, приведены в Табл. 1.15. Эти суффиксы для указанных команд являются обязательными, т. е. с именем регистра SPSR или CPSR в команде необходимо указать один из суффиксов {field}.

Таблица 1.14. Типы операнда 2 (<Oprnd2>) в командах ARM

Операция

Ассемблерная мнемоника

Примечание

Непосредственное значение

#32bit_lmm

 

Логический сдвиг влево непосредственным значением

Rm, LSL #5bit_lmm

Допустимые сдвиги 0...31

Логический сдвиг вправо непосредственным значением

Rm, LSR #5bit_Imm

Допустимые сдвиги 1...32

Арифметический сдвиг вправо непосредственным значением

Rm, ASR #5bit_Imm

Допустимые сдвиги 1...32

Циклический сдвиг вправо непосредственным значением

Rm, ROR #5bit_Imm

Допустимые сдвиги 1...31

Регистр

Rm

 

Дополнительный сдвиг вправо

Rm, RRX

 

Логический сдвиг влево значением регистра

Rm, LSL Rs

 

Логический сдвиг вправо значением регистра

Rm, LSR Rs

 

Арифметический сдвиг вправо значением регистра

Rm, ASR Rs

 

Циклический сдвиг вправо значением регистра

Rm, ROR Rs

 

Таблица 1.15. Суффиксы ({field}) в кодах операций команд пересылки с участием регистров SPSR и CPSR


Предыдущая Следующая



НА ГЛАВНУЮ | ЧТО ТАКОЕ PIC ? | ПРОГРАММАТОР | ПРОЕКТЫ | СТАТЬИ | ССЫЛКИ | КАРТА САЙТА
Hosted by uCoz