This is the v1.24.0 version of the MicroPython documentation. The latest development version of this page may be more current.

3. Store register to memory

3.1. Document conventions

Notation: Rt, Rn denote ARM registers R0-R7 except where stated. immN represents an immediate value having a width of N bits hence imm5 is constrained to the range 0-31. [Rn + imm5] is the contents of the memory address obtained by adding Rn and the offset imm5. Offsets are measured in bytes. These instructions do not affect the condition flags.

3.2. Register Store

  • str(Rt, [Rn, imm7]) [Rn + imm7] = Rt Store a 32 bit word

  • strb(Rt, [Rn, imm5]) [Rn + imm5] = Rt Store a byte (b0-b7)

  • strh(Rt, [Rn, imm6]) [Rn + imm6] = Rt Store a 16 bit half word (b0-b15)

The specified immediate offsets are measured in bytes. Hence in the case of str the 7 bit value enables 32 bit word aligned values to be accessed with a maximum offset of 31 words. In the case of strh the 6 bit value enables 16 bit half-word aligned values to be accessed with a maximum offset of 31 half-words.