You copied the Doc URL to your clipboard.

3.4.1. ADR

Generates a PC-relative address.


ADRRd, label



Is the destination register.


Is a PC-relative expression. See PC‑relative expressions.


ADR generates an address by adding an immediate value to the PC, and writes the result to the destination register.

ADR facilitates the generation of position-independent code, because the address is PC-relative.

If you use ADR to generate a target address for a BX or BLX instruction, you must ensure that bit[0] of the address you generate is set to 1 for correct execution.


In this instruction Rd must specify R0-R7. The data-value addressed must be word aligned and within 1020 bytes of the current PC.

Condition flags

This instruction does not change the flags.


    ADR    R1, TextMessage   ; Write address value of a location labelled as
                             ; TextMessage to R1
    ADR    R3, [PC,#996]     ; Set R3 to value of PC + 996.
Was this page helpful? Yes No