Operations:

Format

Syntax:

Operation:

Operands:

Architecture revision

Opcode

1

stm {--}Rp, Reglist16

Storeaddress  = Rp;
if Opcode[--] == 1 then
      for (i = 0 to 15)
            if Reglist16[i] == 1 then
                   *(--Storeaddress) =Ri;
      Rp   = Storeaddress;
else
      for (i = 15 to 0)
            if Reglist16[i] == 1 then
                   *(Storeaddress++) =Ri;
Reglist16 ∈ {R0, R1, R2, ..., R12, LR, SP, PC} 
p ∈ {0, 1, …, 15}

Rev1+

111010

--

11100

Rp

Reglist16[15:1]

R15 R14 R13 R12 R11

R10

R9

R8

R7

R6

R5

R4

R3

R2

R1

Reglist16[0]

R0

6

1

5

4

15

1

Description

Stores the registers specified to the consecutive memory locations pointed to by Rp. Both regis- ters in the register file and some of the special-purpose registers can be stored.

Status Flags:

Q:

Not affected.

V:

Not affected.

N:

Not affected.

Z:

Not affected.

C:

Not affected.

Note:

Emtpy Reglist16 gives UNDEFINED result.

If Rp is in Reglist16 and pointer is written back the result is UNDEFINED

The R bit in the status register has no effect on this instruction.