Você está na página 1de 3

MCS51

Prof. Celso

INSTRUÇÕES ARITMÉTICAS INC @Ri


Soma 1 ao conteúdo da posição de memória
ADD A, Rn indicada por Ri.
Soma o conteúdo de Rn com Acc, o resultado é DEC A
armazenado no ACC Subtrai 1 ao acumulador
ADD A, direto DEC Rn
Soma o conteúdo da posição de memória “direto” Subtrai 1 ao acumulador
com o ACC. O resultado é armazenado no ACC DEC direto
ADD A, @Ri Subtrai 1 no conteúdo da posição de memória
Soma o conteúdo da posição de memória indicada “direto”
por Ri com o ACC. O resultado é armazenado no DEC @Ri
ACC Subtrai 1 ao conteúdo da posição de memória
ADD A, #dado indicada por Ri.
Soma o valor dado com o ACC. O resultado é INC DPTR
armazenado no ACC. Soma 1 ao conteúdo do registrador DPTR
ADDC A, Rn DA A
Soma o conteúdo de Rn com Acc e com o flag de Ajuste decimal. Converte para BCD o conteúdo
carry. O resultado é armazenado no ACC do Acc.
ADDC A, direto
Soma o conteúdo da posição de memória “direto”
com o ACC e com o flag de carry. O resultado é INSTRUÇÕES LÓGICAS
armazenado no ACC
ADDC A, @Ri ANL A, Rn
Soma o conteúdo da posição de memória indicada Operação lógica AND entre ACC e o conteúdo de
por Ri com o ACC e com o flag de carry. O Rn. O resultado é armazenado no ACC.
resultado é armazenado no ACC ANL A, direto
ADDC A, #dado Operação lógica AND entre ACC e o conteúdo da
Soma o valor dado com o ACC e com o flag de posição de memória “direto”. O resultado é
carry. O resultado é armazenado no ACC. armazenado no ACC
SUBB A, Rn ANL A, @Ri
Subtrai do Acc o conteúdo de Rn e o flag do Operação lógica AND entre ACC e o conteúdo da
carry. O resultado é armazenado no acumulador posição de memória indicada por Ri. O resultado
SUBB A, direto é armazenado no ACC
Subtrai do Acc o conteúdo da posição de memória ANL A, # dado
“direto” e o flag do carry. O resultado é Operação lógica AND entre ACC e o valor do
armazenado no acumulador dado. O resultado é armazenado no ACC.
SUBB A, @Ri ANL direto, A
Subtrai do Acc o conteúdo da posição de memória Operação lógica AND entre a posição de
indicada por Ri e o flag do carry. O resultado é memória “direto” e o ACC. O resultado é
armazenado no acumulador armazenado na posição de memória direto.
SUBB A, #dado ANL direto, #dado
Subtrai do Acc o valor do dado e o flag do carry. Operação lógica AND entre a posição de
O resultado é armazenado no acumulador memória “direto” e o valor do dado. O resultado é
MUL AB armazenado na posição de memória ‘direto”.
Multiplica o conteúdo do ACC pelo conteúdo do ORL A, Rn
registrador B. O resultado fica em B (MSB) e em Operação lógica OR entre ACC e o conteúdo de
Acc (LSB) Rn. O resultado é armazenado no ACC.
DIV AB ORL A, direto
Divide o conteúdo do ACC pelo conteúdo do Operação lógica OR entre ACC e o conteúdo da
registrador B. O resultado fica em B (resto) e em posição de memória “direto”. O resultado é
Acc (quociente) armazenado no ACC
INC A ORL A, @Ri
Soma 1 ao acumulador Operação lógica OR entre ACC e o conteúdo da
INC Rn posição de memória indicada por Ri. O resultado
Soma 1 no conteúdo de Rn é armazenado no ACC
INC direto ORL A, # dado
Soma 1 no conteúdo da posição de memória Operação lógica OR entre ACC e o valor do dado.
“direto” O resultado é armazenado no ACC.

a
MCS51
Prof. Celso

ORL direto, A MOV A, #dado


Operação lógica OR entre a posição de memória Carrega o acumulador com o valor do dado
“direto” e o ACC. O resultado é armazenado na MOV Rn, A
posição de memória “direto”. Carrega Rn com o conteúdo do acumulador
ORL direto, #dado MOV Rn, direto
Operação lógica OR entre a posição de memória Carrega Rn com o conteúdo da posição de
“direto” e o valor do dado. O resultado é memória “direto”
armazenado na posição de memória “direto”. MOV Rn, #dado
XRL A, Rn Carrega Rn com o valor do dado
Operação lógica XOR entre ACC e o conteúdo de MOV direto, A
Rn. O resultado é armazenado no ACC Carrega o conteúdo da posição de memória
XRL A, direto “direto” com o conteúdo do acumulador
Operação lógica XOR entre ACC e o conteúdo da MOV direto, Rn
posição de memória “direto”. O resultado é Carrega o conteúdo da posição de memória
armazenado no ACC “direto” com o conteúdo de Rn
XRL A, @Ri MOV direto, direto
Operação lógica XOR entre ACC e o conteúdo da Carrega o conteúdo da posição de memória
posição de memória indicada por Ri. O resultado “direto” com o conteúdo de outra posição de
é armazenado no ACC memória “direto”.
XRL A, # dado MOV direto, @Ri
Operação lógica XOR entre ACC e o valor do Carrega o conteúdo da posição de memória
dado. O resultado é armazenado no ACC. “direto” com o conteúdo da posição de memória
XRL direto, A endereçada por Ri
Operação lógica XOR entre a posição de memória MOV direto, #dado
“direto” e o ACC. O resultado é armazenado na Carrega o conteúdo da posição de memória
posição de memória “direto”. “direto” com o valor do dado
XRL direto, #dado MOV @Ri, A
Operação lógica XOR entre a posição de memória Carrega o conteúdo da posição de memória
“direto” e o valor do dado. O resultado é endereçada por Ri com o conteúdo do acumulador
armazenado na posição de memória “direto” MOV @Ri, direto
CLR A Carrega o conteúdo da posição de memória
Zera o acumulador endereçada por Ri com o conteúdo da posição de
CPL A memória “direto”
Complementa todos os bits do acumulador MOV @Ri, #dado
RL A Carrega o conteúdo da posição de memória
Rotaciona todos os bits do acumulador à esquerda endereçada por Ri com o valor do dado.
RLC A MOV DPTR, #dado16
Rotaciona todos os bits do acumulador à esquerda Carrega o DPTR com um endereço de 16 bits.
junto com o carry XCH A, Rn
RR A Troca os dados do acumulador com o registro Rn
Rotaciona todos os bits do acumulador à direita XCH A, direto
RRC A Troca os dados do acumulador com a posição de
Rotaciona todos os bits do acumulador à direita memória “direto”.
junto com o carry XCH A, @Ri
SWAP A Troca os dados do acumulador com o conteúdo da
Troca os nibbles do acumulador posição de memória endereçada por Ri.
XCHD A, @Ri
Troca os nibbles menos significativo do
INSTRUÇÕES DE TRANSFERÊNCIA acumulador os nibbles menos significativo do
conteúdo da memória endereçada por Ri.
MOV A, Rn PUSH direto
Carrega o acumulador com o conteúdo de Rn Guarda o conteúdo da memória “direto” na pilha
MOV A, direto POP direto
Carrega o acumulador com o conteúdo da posição Recupera o conteúdo da memória “direto” da
de memória “direto” pilha
MOV A, @Ri MOVX A, @Ri
Carrega o acumulador com o conteúdo da posição Carrega o acumulador com o conteúdo da RAM
de memória endereçada por Ri externa endereçada por Ri

b
MCS51
Prof. Celso

MOVX A, @DPTR JB bit, label


Carrega o acumulador com o conteúdo da RAM Salta para label se bit=1
externa endereçada por DPTR JNB bit, label
MOVX @Ri, A Salta para label se bit=0
Escreve na posição endereçada por Ri da RAM JBC bit, label
externa o conteúdo do acumulador Salta para label se bit=1. Após o salto o bit é
MOVX @DPTR, A complementado
Escreve na posição endereçada por DPTR da
RAM externa o conteúdo do acumulador
MOVC A, @A+DPTR INSTRUÇÕES DE DESVIOS
Carrega o acumulador com o conteúdo da posição
endereçada pelo acumulador + DPTR ACALL adr11
MOVC A, @A + PC Chama subrotina (até 2 kbytes)
Carrega o acumulador com o conteúdo da posição LCALL adr16
endereçada pelo acumulador + PC Chama longa de subrotina (até 64 kbytes)
RET
Retorno de subrotina
RETI
INSTRUÇÕES BOOLEANAS Retorno de interrupção
JMP @A+DPTR
CLR C Desvio indireto para posição de memória
Zera o carry. C=0 endereçada pelo conteúdo do acc + DPTR
CLR bit SJMP relativo
Zera o bit. Bit=0 Salto curto incondicional (até 256 bytes)
SETB C AJMP adr11
Seta o carry. C=1 Salto incondicional (até 2 kbytes)
SETB bit LJMP adr16
Seta o bit. Bit=1 Salto longo incondicional (até 64 kbytes)
CPL C JZ label
Complementa o carry. Salta para label se acumulador=0
CPL bit JNZ label
Complementa o bit. Salta para label se acumulador=1
ANL C, bit CJNE A, direto, label
Operação AND entre o carry e o bit Salta para label se acumulador ≠ do conteúdo da
memória “direto”
ANL C, bit CJNE A, #dado, label
Operação AND entre o carry e o complemento do Salta para label se acumulador ≠ do valor do dado
bit. CJNE Rn,#dado, label
ORL C, bit Salta para label se Rn ≠ do valor do dado
Operação OR entre o carry e o bit CJNE @Ri, #dado, label
Salta para label se o conteúdo da posição de
ORL C, bit memória endereçada por Ri ≠ do valor do dado
Operação OR entre o carry e o complemento do DJNZ Rn, label
bit. Decrementa (Rn) e salta para label se (Rn)≠0
MOV C, bit DJNZ direto, label
Armazena o conteúdo do bit no carry Decrementa conteúdo da pos. memória e salta
MOV bit, C para label se (direto)≠0
Armazena o conteúdo do carry no bit NOP
JC label Não faz nada
Salta para label se o carry=1
JNC label
Salta para label se carry=0

Você também pode gostar