A instrução LDR é utilizada para ler um valor Byte, Halfword e Word, de um endereço de memória
informado por um modo de endereçamento, e armazená-lo em um registrador de destino.
Tanto Byte quanto Halfword podem ser sinalizados ou não-sinalizados, sendo estendidos para 32-bits antes
de serem armazenados no destino. Para valores sinalizados, o sinal é mantido com o uso da extensão.
Sintaxe
LDM{<cond>} Rd, <endereçamento> ;Word
LDM{<cond>} B Rd, <endereçamento> ;Byte
LDM{<cond>}SB Rd, <endereçamento> ;Byte sinalizado
LDM{<cond>} H Rd, <endereçamento> ;Halfword
LDM{<cond>}SH Rd, <endereçamento> ;Halfword sinalizado
Operação
Rd <- MEM[<endereçamento>] ;Word
RdH <- MEM[<endereçamento>] ;Halfword
RdSH <- MEM[<endereçamento>] ;Halfword sinalizado
RdB <- MEM[<endereçamento>] ;Byte
RdSB <- MEM[<endereçamento>] ;Byte sinalizado
Endereçamento:
Rd, [Rn, #+/-<12_bit_offset>]
Rd, [Rn, +/-Rm]
Rd, [Rn, +/-Rm, <shift> #<shift_imm>]
Rd, [Rn, #+/-<12_bit_offset>]!
Rd, [Rn, +/-Rm]!
Rd, [Rn, +/-Rm, <shift> #<shift_imm>]!
Rd, [Rn], #+/-<12_bit_offset>
Rd, [Rn], +/-Rm
Rd, [Rn], +/-Rm, <shift> #<shift_imm>
CPSR
N: -
Z: -
C: -
V: -
Ex:
MOV R0, #AABBCCDD ;valor
MOV R1, #FF000000 ;ram
MOV R2, #0
LDRSB R0, [R1, R2] ; R0 <- 000000DD
LDRSH R0, [R1, R2] ; R0 <- 0000CCDD
LDR R0, [R1, R2] ; R0 <- AABBCCDD