• убываю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 ? | | ПРОГРАММАТОР | | ПРОЕКТЫ | | СТАТЬИ | | ССЫЛКИ | | КАРТА САЙТА |