Команды LDM / STM передачи блоков данных применяются для чтения (LDM) или записи (STM) любого числа из доступных регистров общего назначения.
где:
{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 формируют передачи, в которых не требуется работа со стеками, т.е. требуется просто Постинкремент, Преинкремент, Постдекремент и Предекремент.