Buscar

Prévia do material em texto

Prof. Celso 
 
 a
 MCS51 
INSTRUÇÕES ARITMÉTICAS 
 
ADD A, Rn 
Soma o conteúdo de Rn com Acc, o resultado é 
armazenado no ACC 
ADD A, direto 
Soma o conteúdo da posição de memória “direto” 
com o ACC. O resultado é armazenado no ACC 
ADD A, @Ri 
Soma o conteúdo da posição de memória indicada 
por Ri com o ACC. O resultado é armazenado no 
ACC 
ADD A, #dado 
Soma o valor dado com o ACC. O resultado é 
armazenado no ACC. 
ADDC A, Rn 
Soma o conteúdo de Rn com Acc e com o flag de 
carry. O resultado é armazenado no 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 é 
armazenado no ACC 
ADDC A, @Ri 
Soma o conteúdo da posição de memória indicada 
por Ri com o ACC e com o flag de carry. O 
resultado é armazenado no ACC 
ADDC A, #dado 
Soma o valor dado com o ACC e com o flag de 
carry. O resultado é armazenado no ACC. 
SUBB A, Rn 
Subtrai do Acc o conteúdo de Rn e o flag do 
carry. O resultado é armazenado no acumulador 
SUBB A, direto 
Subtrai do Acc o conteúdo da posição de memória 
“direto” e o flag do carry. O resultado é 
armazenado no acumulador 
SUBB A, @Ri 
Subtrai do Acc o conteúdo da posição de memória 
indicada por Ri e o flag do carry. O resultado é 
armazenado no acumulador 
SUBB A, #dado 
Subtrai do Acc o valor do dado e o flag do carry. 
O resultado é armazenado no acumulador 
MUL AB 
Multiplica o conteúdo do ACC pelo conteúdo do 
registrador B. O resultado fica em B (MSB) e em 
Acc (LSB) 
DIV AB 
Divide o conteúdo do ACC pelo conteúdo do 
registrador B. O resultado fica em B (resto) e em 
Acc (quociente) 
INC A 
Soma 1 ao acumulador 
INC Rn 
Soma 1 no conteúdo de Rn 
INC direto 
Soma 1 no conteúdo da posição de memória 
“direto” 
INC @Ri 
Soma 1 ao conteúdo da posição de memória 
indicada por Ri. 
DEC A 
Subtrai 1 ao acumulador 
DEC Rn 
Subtrai 1 ao acumulador 
DEC direto 
Subtrai 1 no conteúdo da posição de memória 
“direto” 
DEC @Ri 
Subtrai 1 ao conteúdo da posição de memória 
indicada por Ri. 
INC DPTR 
Soma 1 ao conteúdo do registrador DPTR 
DA A 
Ajuste decimal. Converte para BCD o conteúdo 
do Acc. 
 
 
INSTRUÇÕES LÓGICAS 
 
ANL A, Rn 
Operação lógica AND entre ACC e o conteúdo de 
Rn. O resultado é armazenado no ACC. 
ANL A, direto 
Operação lógica AND entre ACC e o conteúdo da 
posição de memória “direto”. O resultado é 
armazenado no ACC 
ANL A, @Ri 
Operação lógica AND entre ACC e o conteúdo da 
posição de memória indicada por Ri. O resultado 
é armazenado no ACC 
ANL A, # dado 
Operação lógica AND entre ACC e o valor do 
dado. O resultado é armazenado no ACC. 
ANL direto, A 
Operação lógica AND entre a posição de 
memória “direto” e o ACC. O resultado é 
armazenado na posição de memória direto. 
ANL direto, #dado 
Operação lógica AND entre a posição de 
memória “direto” e o valor do dado. O resultado é 
armazenado na posição de memória ‘direto”. 
ORL A, Rn 
Operação lógica OR entre ACC e o conteúdo de 
Rn. O resultado é armazenado no ACC. 
ORL A, direto 
Operação lógica OR entre ACC e o conteúdo da 
posição de memória “direto”. O resultado é 
armazenado no ACC 
ORL A, @Ri 
Operação lógica OR entre ACC e o conteúdo da 
posição de memória indicada por Ri. O resultado 
é armazenado no ACC 
ORL A, # dado 
Operação lógica OR entre ACC e o valor do dado. 
O resultado é armazenado no ACC. 
 Prof. Celso 
 
 b
 MCS51 
ORL direto, A 
Operação lógica OR entre a posição de memória 
“direto” e o ACC. O resultado é armazenado na 
posição de memória “direto”. 
ORL direto, #dado 
Operação lógica OR entre a posição de memória 
“direto” e o valor do dado. O resultado é 
armazenado na posição de memória “direto”. 
XRL A, Rn 
Operação lógica XOR entre ACC e o conteúdo de 
Rn. O resultado é armazenado no ACC 
XRL A, direto 
Operação lógica XOR entre ACC e o conteúdo da 
posição de memória “direto”. O resultado é 
armazenado no ACC 
XRL A, @Ri 
Operação lógica XOR entre ACC e o conteúdo da 
posição de memória indicada por Ri. O resultado 
é armazenado no ACC 
XRL A, # dado 
Operação lógica XOR entre ACC e o valor do 
dado. O resultado é armazenado no ACC. 
XRL direto, A 
Operação lógica XOR entre a posição de memória 
“direto” e o ACC. O resultado é armazenado na 
posição de memória “direto”. 
XRL direto, #dado 
Operação lógica XOR entre a posição de memória 
“direto” e o valor do dado. O resultado é 
armazenado na posição de memória “direto” 
CLR A 
Zera o acumulador 
CPL A 
Complementa todos os bits do acumulador 
RL A 
Rotaciona todos os bits do acumulador à esquerda 
RLC A 
Rotaciona todos os bits do acumulador à esquerda 
junto com o carry 
RR A 
Rotaciona todos os bits do acumulador à direita 
RRC A 
Rotaciona todos os bits do acumulador à direita 
junto com o carry 
SWAP A 
Troca os nibbles do acumulador 
 
 
INSTRUÇÕES DE TRANSFERÊNCIA 
 
MOV A, Rn 
Carrega o acumulador com o conteúdo de Rn 
MOV A, direto 
Carrega o acumulador com o conteúdo da posição 
de memória “direto” 
MOV A, @Ri 
Carrega o acumulador com o conteúdo da posição 
de memória endereçada por Ri 
MOV A, #dado 
Carrega o acumulador com o valor do dado 
MOV Rn, A 
Carrega Rn com o conteúdo do acumulador 
MOV Rn, direto 
Carrega Rn com o conteúdo da posição de 
memória “direto” 
MOV Rn, #dado 
Carrega Rn com o valor do dado 
MOV direto, A 
Carrega o conteúdo da posição de memória 
“direto” com o conteúdo do acumulador 
MOV direto, Rn 
Carrega o conteúdo da posição de memória 
“direto” com o conteúdo de Rn 
MOV direto, direto 
Carrega o conteúdo da posição de memória 
“direto” com o conteúdo de outra posição de 
memória “direto”. 
MOV direto, @Ri 
Carrega o conteúdo da posição de memória 
“direto” com o conteúdo da posição de memória 
endereçada por Ri 
MOV direto, #dado 
Carrega o conteúdo da posição de memória 
“direto” com o valor do dado 
MOV @Ri, A 
Carrega o conteúdo da posição de memória 
endereçada por Ri com o conteúdo do acumulador 
MOV @Ri, direto 
Carrega o conteúdo da posição de memória 
endereçada por Ri com o conteúdo da posição de 
memória “direto” 
MOV @Ri, #dado 
Carrega o conteúdo da posição de memória 
endereçada por Ri com o valor do dado. 
MOV DPTR, #dado16 
Carrega o DPTR com um endereço de 16 bits. 
XCH A, Rn 
Troca os dados do acumulador com o registro Rn 
XCH A, direto 
Troca os dados do acumulador com a posição de 
memória “direto”. 
XCH A, @Ri 
Troca os dados do acumulador com o conteúdo da 
posição de memória endereçada por Ri. 
XCHD A, @Ri 
Troca os nibbles menos significativo do 
acumulador os nibbles menos significativo do 
conteúdo da memória endereçada por Ri. 
PUSH direto 
Guarda o conteúdo da memória “direto” na pilha 
POP direto 
Recupera o conteúdo da memória “direto” da 
pilha 
MOVX A, @Ri 
Carrega o acumulador com o conteúdo da RAM 
externa endereçada por Ri 
 Prof. Celso 
 
 c
 MCS51 
MOVX A, @DPTR 
Carrega o acumulador com o conteúdo da RAM 
externa endereçada por DPTR 
MOVX @Ri, A 
Escreve na posição endereçada por Ri da RAM 
externa o conteúdo do acumulador 
MOVX @DPTR, A 
Escreve na posição endereçada por DPTR da 
RAM externa o conteúdo do acumulador 
MOVC A, @A+DPTR 
Carrega o acumulador com o conteúdo da posição 
endereçada pelo acumulador + DPTR 
MOVC A, @A + PC 
Carrega o acumulador com o conteúdo da posição 
endereçada pelo acumulador + PC 
 
 
 
INSTRUÇÕES BOOLEANAS 
 
CLR C 
Zera o carry. C=0 
CLR bit 
Zera o bit. Bit=0 
SETB C 
Seta o carry. C=1 
SETB bit 
Seta o bit. Bit=1 
CPL C 
Complementa o carry. 
CPL bit 
Complementa o bit. 
ANL C, bit 
Operação AND entre o carry e o bit 
 
ANL C, bit 
Operação AND entre o carry e o complemento do 
bit. 
ORL C, bit 
Operação OR entre o carry e o bit 
 
ORL C, bit 
Operação OR entre o carry e o complemento do 
bit. 
MOV C, bit 
Armazena o conteúdo do bit no carry 
MOV bit, C 
Armazena o conteúdo do carry no bit 
JC label 
Salta para label se o carry=1JNC label 
Salta para label se carry=0 
JB bit, label 
Salta para label se bit=1 
JNB bit, label 
Salta para label se bit=0 
JBC bit, label 
Salta para label se bit=1. Após o salto o bit é 
complementado 
 
 
INSTRUÇÕES DE DESVIOS 
 
ACALL adr11 
Chama subrotina (até 2 kbytes) 
LCALL adr16 
Chama longa de subrotina (até 64 kbytes) 
RET 
Retorno de subrotina 
RETI 
Retorno de interrupção 
JMP @A+DPTR 
Desvio indireto para posição de memória 
endereçada pelo conteúdo do acc + DPTR 
SJMP relativo 
Salto curto incondicional (até 256 bytes) 
AJMP adr11 
Salto incondicional (até 2 kbytes) 
LJMP adr16 
Salto longo incondicional (até 64 kbytes) 
JZ label 
Salta para label se acumulador=0 
JNZ label 
Salta para label se acumulador=1 
CJNE A, direto, label 
Salta para label se acumulador ≠ do conteúdo da 
memória “direto” 
CJNE A, #dado, label 
Salta para label se acumulador ≠ do valor do dado 
CJNE Rn,#dado, label 
Salta para label se Rn ≠ do valor do dado 
CJNE @Ri, #dado, label 
Salta para label se o conteúdo da posição de 
memória endereçada por Ri ≠ do valor do dado 
DJNZ Rn, label 
Decrementa (Rn) e salta para label se (Rn)≠0 
DJNZ direto, label 
Decrementa conteúdo da pos. memória e salta 
para label se (direto)≠0 
NOP 
Não faz nada

Mais conteúdos dessa disciplina