LDM STM манипуляции со стеком

Команды LDM / STM передачи блоков данных применяются для чтения (LDM) или записи (STM) любого числа из доступных регистров общего назначения.

{cond}Rn{!},{^}

где:
{cond}: двухсимвольная мнемоника условия выполнения команды (см. табл. 6);
Rn: выражение, которое определяет номер регистра общего назначения;
Rlist: список регистров, например: {R0,R2-R7,R10};
{!}: разрешить запись вычисленного адреса обратно в базовый регистр (устанавливает в команде в единицу бит W).
{^}: установить бит S (обновление CPSR), наряду с загрузкой регистра PC, или же требуется передача банка пользователя с переключением в привилегированный режим.

Имя Со стеками Без стеков Бит L Бит P Бит U
Чтение с пре-инкрементом LDMED LDMIB 1 1 1
Чтение с пост-инкрементом LDMFD LDMIA 1 0 1
Чтение с пре-декрементом LDMEA LDMDB 1 1 0
Чтение с пост-декрементом LDMFA LDMDA 1 0 0
Запись с пре-инкрементом STMFA STMIB 0 1 1
Запись с пост-инкрементом STMEA STMIA 0 0 1
Запись с пре-декрементом STMFD STMDB 0 1 0
Запись с пост-декрементом STMED STMDA 0 0 0

Суффиксы FD, ED, FA, EA определяют пред/пост-индексацию, при этом бит U определяет направление индексации. Суффиксы F и E определяют "полный" или "пустой" стек, например, будет ли произведена индексация до или после записи в стек. Суффиксы A и D определяют направление роста стека. Если стек растет вверх (возрастающий), то команда STM вызовет рост стека вверх, а команда LDM - вниз. Если стек растет вниз (убывающий), то - наоборот.

Суффиксы IA, IB, DA, DB формируют передачи, в которых не требуется работа со стеками, т.е. требуется просто Постинкремент, Преинкремент, Постдекремент и Предекремент.

фотка 1