Você está na página 1de 2

MC404: Organizac

ao de Computadores e Linguagem de Montagem


Lista de Instrucoes do processador ARM
Prof. Edson Borin
MNE Operac
ao

Descric
ao

Transferencia
MOV
Rd :=
MVN
Rd :=
LDR
Rd :=

<MNE>{cond}{S} Rd, <Op2>


Movimentac
ao de registradores
Movimentac
ao negada
Carregamento de um imediato muito grande ou simbolo.
LDR Rd, =IMEDIATO

de Dados
Op2
(NOT) Op2
IMEDIADO

Operac
oes L
ogicas e Aritmeticas
ADD
Rd := Rn + Op2
ADC
Rd := Rn + Op2 + C
SUB
Rd := Rn - Op2
SBC
Rd := Rn - Op2 - (NOT) C
RSB
Rd := Op2 - Rn
RSC
Rd := Op2 - Rn - (NOT) C
AND
Rd := Rn AND Op2
EOR
Rd := Rn XOR Op2
ORR
Rd := Rn OR Op2
BIC
Rd := Rn AND (NOT)Op2

<MNE>{cond}{S} Rd, Rn, <Op2>


Adic
ao sem Carry
Adic
ao com Carry
Subtrac
ao sem Carry
Subtrac
ao com Carry
Subtrac
ao Reversa sem Carry
Subtrac
ao Reversa com Carry
E l
ogico
OU exclusivo l
ogico
OU l
ogico
Bitwise Clear

Multiplicac
ao
MUL
Rd := (Rm x Rs)
MLA
Rd := Rn + (Rm x Rs)

<MNE>{cond}{S} Rd, Rm, Rs {, Rn}


Multiplicac
ao
Multiplicac
ao com acumulac
ao

Comparac
ao
CMP
Rn - Op2, atualiza flags
CMN
Rn + Op2, atualiza flags
TST
Rn AND Op2, atualiza flags
TEQ
Rn EOR Op2, atualiza flags

<MNE>{cond} Rn, <Op2>


Comparac
ao
Comparac
ao Negativa
Test (AND)
Test Equivalence (EOR)

Saltos
B
BL
BX
BLX

<MNE>{cond} <address>
Salta
Salta com link
Salta para conteudo do registrador
Salta para conte
udo do registrador com link

PC
LR
PC
LR

:=
:=
:=
:=

<address>
PC+4, PC := <address>
Rn
PC+4, PC := Rn

Transferencia Entre Mem


oria e Registradores
LDR
Rd := Mem[<address>]
STR
Mem[<address>] := Rd

<MNE>{cond}{size} Rd, <address>


Load
Store

Transferencia de Multiplos Registradores


LDM
<reglist> := Mem[<address>]
STM
Mem[<address>] := <reglist>

<MNE>{cond}<mode> Rn{!}, <reglist>


Load m
ultiplo
Store m
ultiplo

Operando {mode}
IA
Increment After : incrementa depois
IB
Increment Before: incrementa antes
DA
Decrement After : decrementa depois
DB
Decrement Before: decrementa antes

Apelidos
FD
ED
FA
EA

para operac
ao de pilha
STMFD/LDMFD = STMDB/LDMIA
STMED/LDMED = STMDA/LDMIB
STMFA/LDMFA = STMIB/LDMDA
STMEA/LDMEA = STMIA/LDMDB

Operando Op2
Imm
Rn
Rn, <deslop> <quant>

Constante de 8 bits ou constante de mais bits obtidos atraves do deslocamento de


uma constante de 8 bits.
Valor armazenado no registrador Rn
Valor armazenado no registrador Rn deslocado <quant> vezes de acordo com o
operador de deslocamento <deslop>.
<deslop> Operador de deslocamento
LSL
Deslocamento l
ogico para a esquerda
LSR
Deslocamento l
ogico para a direita
ASR
Deslocamento l
ogico para a direita
ROR
Rotac
ao de bits para direita
RRX
Rotac
ao de bits para direita extendido
<quant>
Quantidade de bits a ser deslocada
#Imm
Constante de 5 bits
Rm
5 bits menos significativos do valor armazenado em Rm

Operando <address>
Operando
[Rn, constante]{!}
[Rn, {-}Rm]{!}
[Rn, {-}Rm <deslop> <quant>]{!}

Indexac
ao
Pre-indexado
Pre-indexado
Pre-indexado

[Rn], constante
[Rn], {-}Rm
[Rn], {-}Rm <deslop> <quant>

P
os-indexado
P
os-indexado
P
os-indexado

{cond}
Condic
ao
Igual
Diferente
Carry setada/maior
ou igual (sem sinal)
CC/LO Carry limpa/menor
(sem sinal)
MI
negativo
PL
positivo ou zero
VS
overflow
VC
no overflow
HI
maior (sem sinal)
LS
menor ou igual (sem
sinal)
GE
maior ou igual (com
sinal)
LT
menor (com sinal)
GT
maior (com sinal)
LE
menor ou igual (com
sinal)
AL
sempre (padr
ao)
Sufixos
Sufixo
EQ
NE
CS/HS

Flags
Z=1
Z=0
C=1
C=0
N=1
N=0
V=1
V=0
(C = 1) e (Z = 0)
(C = 0) ou (Z = 1)
N=V
N != V
(Z = 0) e (N = V)
(Z = 1) ou (N != V)

C
alculo do endereco
Valor em Rn + constante
Valor em Rn + {-} valor em Rm
Valor em Rn + {-} valor em Rm deslocado <quant>
vezes de acordo com o operador de deslocamento
<deslop>
Valor em Rn + constante
Valor em Rn + {-} valor em Rm
Valor em Rn + {-} valor em Rm deslocado <quant>
vezes de acordo com o operador de deslocamento
<deslop>

Operando {size}
B
Byte: Carrega um byte da mem
oria em um
registrador ou armazena o byte menos significativo do registrador na mem
oria.
SB Signed Byte: Carrega um byte da mem
oria
no byte menos sigficativo do registrador e
ajusta os bits restantes de acordo com o
sinal do n
umero.
H
Half-Word : Carrega meia palavra (dois bytes) da mem
oria em um registrador ou armazena os 2 bytes menos significativos do
registrador na mem
oria.
SH Signed Half-Word : Carrega meia palavra
(dois bytes) da mem
oria no registrador e
ajusta os bits restantes de acordo com o
sinal do n
umero.

Operando <reglist>
Lista de registradores ou faixa de registradores separados por vrgula.
Exemplo
Registradores na lista
{R1,R2}
Lista com registradores R1 e R2
{R1-R4}
Lista com registradores R1, R2, R3 e R4
{R1-R3, R7, R11}
Lista com registradores R1, R2, R3, R7 e R11

Você também pode gostar