SlideShare uma empresa Scribd logo
1 de 44
Baixar para ler offline
Sistemas
Microprocessados
sato<at>utfpr<dot>edu<dot>br
http://pessoal.utfpr.edu.br/sato/
Assembly do 8051
sato<at>utfpr<dot>edu<dot>br
Sobre o material
• Essas transparências foram baseadas
em materiais elaborados pelos
professores Hugo Vieira Neto,
Eduardo Bertonha e Gabriel
Kovalhuk
Assembly
• Opcode (Operation code)
– Instrução em linguagem de máquina
– Carga, aritmética, lógica, controle, etc
– Operandos: registradores, pilha,
memória, interfaces E/S, etc
• Assembly
– Linguagem de baixo nível
– Mnemônicos
Assembly
• Mnemônicos
– Representam opcode
– Mais compreensível para humanos
– Significado exato para máquina
• Assembler (Montador)
– mnemônicos → opcodes
• Labels (Referências)
– Nomes dados endereços, variáveis,
etc
Assembly
Assembler
Memória
ISP, gravador, etc
MOV A, #1C
ADD A, #F2
mnemônicos
01110100
00011100
00100100
11110010
opcodes
Assembly
CLR C ;faz carry=0
SUBB A, R0 ;subtrai R0 de A
JZ IGUAL ;se R0=A salta para IGUAL
JC MAIOR ;se R0>A salta para MAIOR
MENOR: MOV R1, #01 ;sinaliza em R1 que R0<A
SJMP FIM
MAIOR: MOV R1, #02 ;sinaliza em R1 que R0>A
SJMP FIM
IGUAL: MOV R1, #00 ;sinaliza em R1 que R0=A
FIM: ;segue em frente
Comentários
Labels
Assembly
• Códigos das instruções de 8 bits
• Extensão variável de 1 a 3 bytes
• Tempo de execução variável de 1 a
4 ciclos de máquina
• Mnemônicos seguem o padrão Intel
Conjunto de Instruções
• Transferência de dados
– MOV, MOVX, MOVC
– PUSH, POP
– XCH, XCHD
• Aritméticas
– ADD, ADDC, SUBB
– INC, DEC
– MUL, DIV
– DA
Conjunto de Instruções
• Lógicas
– ANL, ORL, XRL, CLR, CPL,
– RL, RLC, RR, RRC, SWAP
• Booleanas (bits)
– CLR, SETB, CPL, ANL, ORL
– MOV
Conjunto de Instruções
• Desvio
– ACALL, LCALL, RET, RETI
– AJMP, LJMP, SJMP, JMP
– JZ, JNZ, JC, JNC, JB, JNB, JBC
– CJNE, DJNZ
– NOP
Modos de Endereçamento
• Endereçamento Direto
– MOV A, 25h
– Move para A o conteúdo de da
posição de memória 25h
• Endereçamento por Constante
Imediata
– MOV A, #25h
– Move para A o dado imediato 25h (#)
Modos de Endereçamento
• Endereçamento Indireto
– MOV A, @R1
– Move para A o conteúdo da posição de
memória apontada por R1 (@)
• Endereçamento via Registrador
– MOV A, R1
– Move para A o conteúdo de R1
Modos de Endereçamento
• Endereçamento Indexado
– MOVX A, @DPTR
– Move para A o conteúdo da posição de
memória apontada por DPTR
– MOVC A, @A+DPTR
– Move para A o conteúdo da posição de
memória apontada por A+DPTR
– MOVC A, @A+PC
– Move para A o conteúdo da posição de
memória apontada por A+PC
Notação dos Mnemônicos
• Endereçamento de dados
– A - acumulador
– B - registro especial B
– Rn - R0 a R7 do banco em uso
– direto - endereço da RAM interna
– @Ri - R0 ou R1 como ponteiro da
RAM interna
– @DPTR - DPTR como ponteiro da
ROM ou RAM externa
Notação dos Mnemônicos
• Endereçamento de dados (cont.)
– #dado - constante de 8 bits
– #dado16 - constante de 16 bits
– Bit - flag, bit de controle ou de port de E/S
• Endereçamento de programa
– end11 - endereço dentro de página de 2KB
– end16 - endereço dentro do espaço de
64KB
– rel - destino relativo à próxima instrução
(128 a +127)
Diretivas do Assembler
• ORG exp
• END exp
• label: DB exp
• label: DW exp
• label: LONG exp
• label: ASCII exp
• label: EQU val
Programa em Assembly
TESTE EQU 01010101B ;CONSTANTE DE TESTE
ORG 0000H ;ENDERECO DE RESET
RESET: LJMP INICIO ;SALTA PARA O INICIO
ORG 0100H ;INICIO DO PROGRAMA
INICIO: MOV A, #040H ;INICIALIZA CONTADOR
MOV R0, #64 ;ENDERECO INICIAL
REPETE: MOV @R0, #TESTE ;ESCREVE CONSTANTE
INC R0 ;PRÓXIMO ENDEREÇO
DEC A ;DECREMENTA CONTADOR
CJNE A, #0, REPETE ;SE NAO TERMINOU REPETE
FINAL: JMP FINAL
Resultado do Montador
LOC OBJ LINE SOURCE
0055 1 TESTE EQU 01010101B
2
0000 3 ORG 0000H
0000 020100 4 RESET: LJMP INICIO
5
0100 6 ORG 0100H
0100 7440 7 INICIO: MOV A, #040H
0102 7840 8 MOV R0, #64
0104 7655 9 REPETE: MOV @ R0 , # 85
0106 08 10 INC R0
0107 14 11 DEC A
0108 B400F9 12 CJNE A, #0, REPETE
010B 80FE 13 FINAL: JMP FINAL
Pilha
• Pilha
– Estrutura de dados do tipo LIFO, cujo topo é
apontado pelo registro SP
– Utilizada para armazenamento temporário
de dados e endereços de retorno de
subrotinas e interrupções
– O programa em Assembly deve manter o
equilíbrio da pilha, evitando o estouro da sua
capacidade
Exemplo - Pilha
PUSH ACC ;salva acumulador na pilha
PUSH PSW ;salva PSW na pilha
PUSH DPL ;salva DPTR na pilha
PUSH DPH
...
;sequencia de instrucoes
...
POP DPH ;recupera DPTR da pilha
POP DPL
POP PSW ;recupera PSW da pilha
POP ACC ;recupera acumulador da pilha
Estruturas de
Programação
• Subrotinas
– São funções (rotinas) chamadas por
software
– Úteis quando uma seqüência de
operações em um programa é
repetidamente utilizada
Exemplo - Subrotina
INICIO: MOV R0, #11H ;valor=11H
LCALL ENVIA ;chama subrotina ENVIA
MOV R0, #22H ;valor=22H
LCALL ENVIA ;chama subrotina ENVIA
SJMP INICIO ;retorna ao INICIO
ENVIA: ANL R0, #0FH ;zera nibble superior
ORL R0, #30H ;forma codigo ASCII
MOV SBUF, R0 ;envia pela serial
RET ;retorna da subrotina
Estruturas de
Programação
• Interrupções
– São funções (rotinas) chamadas por
hardware
– Possuem endereços fixos (vetores de
interrupção)
Exemplo - Interrupção
TIMER0: PUSH ACC ;salva acumulador
PUSH PSW ;salva PSW
MOV PSW, #00011000B ;banco 3
MOV A, P1 ;le port P1
ANL A, #11000000B ;mascara
MOV ESTADO, A ;guarda em ESTADO
POP PSW ;recupera PSW
POP ACC ;recupera A
RETI ;retorno da int
Estruturas de
Programação
• Decisões
– Desviam o fluxo de execução do programa
conforme determinada condição for
verdadeira ou falsa (IF - ELSE)
Exemplo - Estrutura de Decisão
CLR C ;faz carry=0
SUBB A, R0 ;subtrai R0 de A
JZ IGUAL ;se R0=A salta para IGUAL
JC MAIOR ;se R0>A salta para MAIOR
MENOR: MOV R1, #01 ;sinaliza em R1 que R0<A
SJMP FIM
MAIOR: MOV R1, #02 ;sinaliza em R1 que R0>A
SJMP FIM
IGUAL: MOV R1, #00 ;sinaliza em R1 que R0=A
FIM: ;segue em frente
Estruturas de
Programação
• Repetições
– Permitem a repetição de um conjunto de
ações (loop) enquanto determinada condição
for verdadeira ou falsa (FOR, WHILE, DO -
WHILE)
Exemplo - Estrutura de
Repetição
MOV R0, #16 ;repeticoes=16
LOOP1: ...
;sequencia de instrucoes
...
DJNZ R0, LOOP1 ;repete se R0!=0
MOV A, #20H ;repeticoes=32
LOOP2: ...
;sequencia de instrucoes
...
DEC A
JNZ LOOP2 ;repete se A!=0
Programa em C
void main(void)
{
unsigned char cont, soma=0;
for(cont=1; cont<10; cont++)
soma+=cont;
while(1);
} /* main*/
Resultado do Compilador
; FUNCTION main (BEGIN)
; SOURCE LINE # 3
0000 750000 R MOV soma,#000H
; R7 is assigned to cont
; SOURCE LINE # 5
0003 7F01 MOV R7,#001H
0005 ?FOR1:
; SOURCE LINE # 6
0005 E500 R MOV A,soma
0007 2F ADD A,R7
0008 F500 R MOV soma,A
; SOURCE LINE # 5
000A 0F INC R7
000B BF0AF7 CJNE R7,#00AH,?FOR1
000E ?WHILE1:
; SOURCE LINE # 8
000E 80FE SJMP ?WHILE1
; FUNCTION main (END)
Instruções Carga
24
3
MOV DPTR,#2000h
Move 2 bytes p/ data pointer
MOV DPTR,#dado16
12
2
MOV @R4,#0Fh
Move dado imediato p/ RAM indireto
MOV @Ri,#dado
24
2
MOV @R3,40h
Move byte direto p/ RAM indireto
MOV @Ri,direto
12
1
MOV @R4,A
Move acumulador p/ RAM indireto
MOV @Ri,A
24
2
MOV 40h,#100
Move dado imediato p/ byte direto
MOV direto,#dado
24
2
MOV 7Fh,@R0
Move RAM indireto p/ byte direto
MOV direto,@Ri
24
3
MOV 7Fh,30h
Move byte direto p/ byte direto
MOV direto,direto
24
2
MOV 7Fh,R1
Move registro p/ byte direto
MOV direto,Rn
12
2
MOV 7Fh,A
Move acumulador p/ byte direto
MOV direto,A
12
2
MOV R6,#200
Move dado imediato p/ registro
MOV Rn,#dado
24
2
MOV R3,7Fh
Move byte direto p/ registro
MOV Rn,direto
12
1
MOV R7,A
Move acumulador p/ registro
MOV Rn,A
12
2
MOV A,#20
Move dado imediato p/ acumulador
MOV A,#dado
12
1
MOV A,@R4
Move RAM indireto p/ acumulador
MOV A,@Ri
12
2
MOV A,7Fh
Move byte direto p/ acumulador
MOV A,direto
12
1
MOV A,R2
Move registro p/ acumulador
MOV A,Rn
Clk
B
Exemplo
Descrição
Instrução
Instruções Carga
12
1
XCHD A,@R0
Troca nibble inferior da RAM com
acumulador
XCHD A,@Ri
12
1
XCH A,@R0
Troca RAM indireto com A
XCH A,@Ri
12
2
XCH A,48h
Troca byte direto com A
XCH A,direto
24
2
POP DPH
Recupera byte direto da pilha
POP direto
24
2
PUSH R0
Move byte direto para pilha
PUSH direto
24
1
MOVC A,@A+PC
Move código contido no endereço A+PC
para o acumulador
MOVC A,@A+PC
24
1
MOVC A,@A+DPTR
Move código contido no endereço
A+DPTR para o acumulador
MOVC A,@A+DPTR
24
1
MOVX @DPTR,A
Move acumulador p/ RAM externa (end.
16 bits)
MOVX @DPTR,A
24
1
MOVX @R1,A
Move acumulador p/ RAM externa (end. 8
bits)
MOVX @Ri,A
24
1
MOVX A,DPTR
Move RAM externa (end. 16 bits) p/
acumulador
MOVX A,@DPTR
24
1
MOVX A,@R1
Move RAM externa (end. 8 bits) p/
acumulador
MOVX A,@Ri
Clk
B
Exemplo
Descrição
Instrução
Instruções Aritméticas
12
2
ADD A,#15
Subtrai dado imediato e borrow do
acumulador
SUBB A,#dado
12
1
ADD A,@R4
Subtrai RAM indireto e borrow do
acumulador
SUBB A,@Ri
12
2
ADD A,50h
Subtrai byte direto e borrow do acumulador
SUBB A,direto
12
1
ADD A,R2
Subtrai registro e borrow do acumulador
SUBB A,Rn
12
2
ADDC A,#15
Soma dado imediato ao acumulador e ao
carry
ADDC A,#dado
12
1
ADDC A,@R4
Soma RAM indireto ao acumulador e ao
carry
ADDC A,@Ri
12
2
ADDC A,50h
Soma byte direto ao acumulador e ao carry
ADDC A,direto
12
1
ADDC A,R2
Soma registro ao acumulador e ao carry
ADDC A,Rn
12
2
ADD A,#15
Soma dado imediato ao acumulador
ADD A,#dado
12
1
ADD A,@R4
Soma RAM indireto ao acumulador
ADD A,@Ri
12
2
ADD A,50h
Soma byte direto ao acumulador
ADD A,direto
12
1
ADD A,R2
Soma registro ao acumulador
ADD A,Rn
Clk
B
Exemplo
Descrição
Instrução
Instruções Aritméticas
12
1
DA A
Ajuste decimal do acumulador
DA A
48
1
DIV AB
Divide A por B
DIV AB
48
1
MUL AB
Multiplica A e B
MUL AB
24
1
INC DPTR
Incrementa data pointer
INC DPTR
12
1
DEC @R1
Decrementa RAM indireto
DEC @Ri
12
2
DEC 50h
Decrementa byte direto
DEC direto
12
1
DEC R3
Decrementa registro
DEC Rn
12
1
DEC A
Decrementa acumulador
DEC A
12
1
INC @R1
Incrementa RAM indireto
INC @Ri
12
2
INC 50h
Incrementa byte direto
INC direto
12
1
INC R3
Incrementa registro
INC Rn
12
1
INC A
Incrementa acumulador
INC A
Clk
B
Exemplo
Descrição
Instrução
Instruções Aritméticas
• Afetam flag C e OV : ADD; ADDC;
SUBB; MUL; DIV
• Afetam flag C : DA; RRC; RLC; SETB C;
CLR C; CPL C; ANL e ORL (C,bit e
C,/bit); MOV C,bit; CJNE
Instruções Lógicas
24
3
XRL 50h,#7Fh
XOR de byte direto com dado imediato
XRL direto,#dado
12
2
XRL 50h,A
XOR de byte direto com acumulador
XRL direto, A
12
2
XRL A,#15
XOR do acumulador com dado imediato
XRL A,#dado
12
1
XRL A,@R4
XOR do acumulador com RAM indireto
XRL A,@Ri
12
2
XRL A,50h
XOR do acumulador com byte direto
XRL A,direto
12
1
XRL A,R2
XOR do acumulador com registro
XRL A,Rn
24
3
ORL 50h,#7Fh
OR de byte direto com dado imediato
ORL direto,#dado
12
2
ORL 50h,A
OR de byte direto com acumulador
ORL direto, A
12
2
ORL A,#15
OR do acumulador com dado imediato
ORL A,#dado
12
1
ORL A,@R4
OR do acumulador com RAM indireto
ORL A,@Ri
12
2
ORL A,50h
OR do acumulador com byte direto
ORL A,direto
12
1
ORL A,R2
OR do acumulador com registro
ORL A,Rn
24
3
ANL 50h,#7Fh
AND de byte direto com dado imediato
ANL direto,#dado
12
2
ANL 50h,A
AND de byte direto com acumulador
ANL direto, A
12
2
ANL A,#15
AND do acumulador com dado imediato
ANL A,#dado
12
1
ANL A,@R4
AND do acumulador com RAM indireto
ANL A,@Ri
12
2
ANL A,50h
AND do acumulador com byte direto
ANL A,direto
12
1
ANL A,R2
AND do acumulador com registro
ANL A,Rn
Clk
B
Exemplo
Descrição
Instrução
Instruções Lógicas
12
1
SWAP A
Troca nibbles inferior e superior
SWAP A
12
1
RRC A
Rotaciona acumulador à direita com carry
RRC A
12
1
RR A
Rotaciona acumulador à direita
RR A
12
1
RLC A
Rotaciona acumulador à esquerda com carry
RLC A
12
1
RL A
Rotaciona acumulador à esquerda
RL A
12
1
CPL A
Complementa acumulador
CPL A
12
1
CLR A
Limpa acumulador
CLR A
Clk
B
Exemplo
Descrição
Instrução
Afetam flag C : RRC; RLC
Instruções Booleanas
24
2
MOV P1.0,C
Move carry p/ bit direto
MOV bit,C
12
2
MOV C,P1.0
Move bit direto p/ carry
MOV C,bit
24
2
ORL C,P1.5
OR do carry com bit direto complementado
ORL C,/bit
24
2
ORL C,P1.5
OR do carry com bit direto
ORL C,bit
24
2
ANL C,P1.5
AND do carry com bit direto
complementado
ANL C,/bit
24
2
ANL C,P1.5
AND do carry com bit direto
ANL C,bit
12
2
CPL P1.7
Complementa bit direto
CPL bit
12
1
CPL C
Complementa flag de carry
CPL C
12
2
SETB P1.7
Seta bit direto
SETB bit
12
1
SETB C
Seta flag de carry
SETB C
12
2
CLR P1.7
Limpa bit direto
CLR bit
12
1
CLR C
Limpa flag de carry
CLR C
Clk
B
Exemplo
Descrição
Instrução
Afetam flag C : SETB C; CLR C; CPL C; ANL e ORL (C,bit e
C,/bit); MOV C,bit
Instruções Booleanas
24
2
MOV P1.0,C
Move carry p/ bit direto
MOV bit,C
12
2
MOV C,P1.0
Move bit direto p/ carry
MOV C,bit
24
2
ORL C,P1.5
OR do carry com bit direto complementado
ORL C,/bit
24
2
ORL C,P1.5
OR do carry com bit direto
ORL C,bit
24
2
ANL C,P1.5
AND do carry com bit direto
complementado
ANL C,/bit
24
2
ANL C,P1.5
AND do carry com bit direto
ANL C,bit
12
2
CPL P1.7
Complementa bit direto
CPL bit
12
1
CPL C
Complementa flag de carry
CPL C
12
2
SETB P1.7
Seta bit direto
SETB bit
12
1
SETB C
Seta flag de carry
SETB C
12
2
CLR P1.7
Limpa bit direto
CLR bit
12
1
CLR C
Limpa flag de carry
CLR C
Clk
B
Exemplo
Descrição
Instrução
Afetam flag C : SETB C; CLR C; CPL C; ANL e ORL (C,bit e
C,/bit); MOV C,bit
Instruções de Desvio
24
3
JBC TF0,L1
Desvia se bit direto setado e reseta bit
JBC bit,relativo
24
2
JNB P1.0,DESVIO
Desvia se bit direto não setado
JNB bit,relativo
24
2
JB P1.0,LOOP
Desvia se bit direto setado
JB bit,relativo
24
2
JNC DESVIO
Desvia se flag de carry não setado
JNC relativo
24
2
JC LOOP
Desvia se flag de carry setado
JC relativo
Clk
B
Exemplo
Descrição
Instrução
Instruções de Desvio
24
2
JNZ REPETE
Desvia se acumulador diferente de zero
JNZ relativo
24
2
JZ SAI
Desvia se acumulador igual a zero
JZ relativo
24
1
JMP @A+DPTR
Desvio indireto relativo a DPTR
JMP @A+DPTR
24
2
SJMP LOOP1
Desvio curto (relativo)
SJMP relativo
24
3
LJMP SAIDA
Desvio longo
LJMP end16bits
24
2
AJMP LOOP
Desvio absoluto
AJMP end11bits
24
1
RETI
Retorno de rotina de interrupção
RETI
24
1
RET
Retorno de subrotina
RET
24
3
LCALL TECLAS
Desvio longo para subrotina
LCALL end16bits
24
2
ACALL DISP
Desvio absoluto para subrotina
ACALL end11bits
Clk
B
Exemplo
Descrição
Instrução
Instruções de Desvio
12
1
NOP
Sem operação
NOP
24
2
DJNZ 5Fh,LOOP
Decrementa byte direto e desvia se
diferente de 0
DJNZ direto,relativo
24
2
DJNZ R0,LOOP
Decrementa registro e desvia se
diferente de 0
DJNZ Rn,relativo
24
3
CJNE @R2,#20,L3
Compara dado c/ dado apontado por
registrador, se diferente, desvia
CJNE
@Rn,#dado,relativo
24
3
CJNE R2,#20,L3
Compara dado c/ registrador, se
diferente, desvia
CJNE Rn,#dado,relativo
24
3
CJNE A,#10,L3
Compara dado c/ acumulador, se
diferente, desvia
CJNE A,#dado,relativo
24
3
CJNE A,30h,L3
Compara byte direto c/ acumulador, se
diferente, desvia
CJNE A,direto,relativo
Clk
B
Exemplo
Descrição
Instrução
Afetam flag C : CJNE
Sobre o material
• Essas transparências foram baseadas
em materiais elaborados pelos
professores Hugo Vieira Neto,
Eduardo Bertonha e Gabriel
Kovalhuk

Mais conteúdo relacionado

Semelhante a Assembly 8051

Microcontroladores: El microcontrolador 8051
Microcontroladores: El microcontrolador 8051 Microcontroladores: El microcontrolador 8051
Microcontroladores: El microcontrolador 8051 SANTIAGO PABLO ALBERTO
 
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORESARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORESwillian324163
 
Pbl assembly avr como atmega328 p - rev.1
Pbl   assembly avr como atmega328 p - rev.1Pbl   assembly avr como atmega328 p - rev.1
Pbl assembly avr como atmega328 p - rev.1andrademanoel
 
8085 Introducao
8085 Introducao8085 Introducao
8085 Introducaoedgluc2001
 
Gerador de Código-Objeto - Compiladores
Gerador de Código-Objeto - CompiladoresGerador de Código-Objeto - Compiladores
Gerador de Código-Objeto - CompiladoresAnderson Favaro
 
SIMATIC S7 AVANZADO PROGRAMACAO EMERSON EDUARDO RODRIGUES
SIMATIC S7 AVANZADO PROGRAMACAO EMERSON EDUARDO RODRIGUESSIMATIC S7 AVANZADO PROGRAMACAO EMERSON EDUARDO RODRIGUES
SIMATIC S7 AVANZADO PROGRAMACAO EMERSON EDUARDO RODRIGUESEMERSON EDUARDO RODRIGUES
 
Guia de utilização Apresentacao_ADC_PIC16F877A.pdf
Guia de utilização Apresentacao_ADC_PIC16F877A.pdfGuia de utilização Apresentacao_ADC_PIC16F877A.pdf
Guia de utilização Apresentacao_ADC_PIC16F877A.pdfSilvanildoManoeldaSi
 
Aula 7 conjunto de instrucoes
Aula 7   conjunto de instrucoesAula 7   conjunto de instrucoes
Aula 7 conjunto de instrucoesCratuscb
 
AA Apresentacao_TIMER0_PIC16F877A_2016.pdf
AA Apresentacao_TIMER0_PIC16F877A_2016.pdfAA Apresentacao_TIMER0_PIC16F877A_2016.pdf
AA Apresentacao_TIMER0_PIC16F877A_2016.pdfSilvanildoManoeldaSi
 
1CseqFFsrPresolvido (1).pptx
1CseqFFsrPresolvido (1).pptx1CseqFFsrPresolvido (1).pptx
1CseqFFsrPresolvido (1).pptxAlvaro Silva
 
SIMCIT 2013 - Mini-curso PHP
SIMCIT 2013 - Mini-curso PHPSIMCIT 2013 - Mini-curso PHP
SIMCIT 2013 - Mini-curso PHPJonata Weber
 
Curso básico de eletrônica digital parte 11
Curso básico de eletrônica digital parte 11Curso básico de eletrônica digital parte 11
Curso básico de eletrônica digital parte 11Renan Boccia
 
Cartilha Micro-Controlador 80c51 - Assembly
Cartilha Micro-Controlador 80c51 - AssemblyCartilha Micro-Controlador 80c51 - Assembly
Cartilha Micro-Controlador 80c51 - AssemblyPedro Raphael
 

Semelhante a Assembly 8051 (20)

Microcontroladores: El microcontrolador 8051
Microcontroladores: El microcontrolador 8051 Microcontroladores: El microcontrolador 8051
Microcontroladores: El microcontrolador 8051
 
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORESARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES
 
Pipeline
PipelinePipeline
Pipeline
 
Clp ab avancado
Clp ab avancadoClp ab avancado
Clp ab avancado
 
Pbl assembly avr como atmega328 p - rev.1
Pbl   assembly avr como atmega328 p - rev.1Pbl   assembly avr como atmega328 p - rev.1
Pbl assembly avr como atmega328 p - rev.1
 
8085 Introducao
8085 Introducao8085 Introducao
8085 Introducao
 
Pic16f628a
Pic16f628aPic16f628a
Pic16f628a
 
Pic18xx
Pic18xxPic18xx
Pic18xx
 
Linguagem Assembly
Linguagem AssemblyLinguagem Assembly
Linguagem Assembly
 
S7 avançado
S7 avançadoS7 avançado
S7 avançado
 
Gerador de Código-Objeto - Compiladores
Gerador de Código-Objeto - CompiladoresGerador de Código-Objeto - Compiladores
Gerador de Código-Objeto - Compiladores
 
Pic aula1
Pic   aula1Pic   aula1
Pic aula1
 
SIMATIC S7 AVANZADO PROGRAMACAO EMERSON EDUARDO RODRIGUES
SIMATIC S7 AVANZADO PROGRAMACAO EMERSON EDUARDO RODRIGUESSIMATIC S7 AVANZADO PROGRAMACAO EMERSON EDUARDO RODRIGUES
SIMATIC S7 AVANZADO PROGRAMACAO EMERSON EDUARDO RODRIGUES
 
Guia de utilização Apresentacao_ADC_PIC16F877A.pdf
Guia de utilização Apresentacao_ADC_PIC16F877A.pdfGuia de utilização Apresentacao_ADC_PIC16F877A.pdf
Guia de utilização Apresentacao_ADC_PIC16F877A.pdf
 
Aula 7 conjunto de instrucoes
Aula 7   conjunto de instrucoesAula 7   conjunto de instrucoes
Aula 7 conjunto de instrucoes
 
AA Apresentacao_TIMER0_PIC16F877A_2016.pdf
AA Apresentacao_TIMER0_PIC16F877A_2016.pdfAA Apresentacao_TIMER0_PIC16F877A_2016.pdf
AA Apresentacao_TIMER0_PIC16F877A_2016.pdf
 
1CseqFFsrPresolvido (1).pptx
1CseqFFsrPresolvido (1).pptx1CseqFFsrPresolvido (1).pptx
1CseqFFsrPresolvido (1).pptx
 
SIMCIT 2013 - Mini-curso PHP
SIMCIT 2013 - Mini-curso PHPSIMCIT 2013 - Mini-curso PHP
SIMCIT 2013 - Mini-curso PHP
 
Curso básico de eletrônica digital parte 11
Curso básico de eletrônica digital parte 11Curso básico de eletrônica digital parte 11
Curso básico de eletrônica digital parte 11
 
Cartilha Micro-Controlador 80c51 - Assembly
Cartilha Micro-Controlador 80c51 - AssemblyCartilha Micro-Controlador 80c51 - Assembly
Cartilha Micro-Controlador 80c51 - Assembly
 

Último

Lista de presença treinamento de EPI NR-06
Lista de presença treinamento de EPI NR-06Lista de presença treinamento de EPI NR-06
Lista de presença treinamento de EPI NR-06AndressaTenreiro
 
Calculo vetorial - eletromagnetismo, calculo 3
Calculo vetorial - eletromagnetismo, calculo 3Calculo vetorial - eletromagnetismo, calculo 3
Calculo vetorial - eletromagnetismo, calculo 3filiperigueira1
 
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docxTRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docxFlvioDadinhoNNhamizi
 
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptxVagner Soares da Costa
 
Apresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPMApresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPMdiminutcasamentos
 
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptxVagner Soares da Costa
 

Último (6)

Lista de presença treinamento de EPI NR-06
Lista de presença treinamento de EPI NR-06Lista de presença treinamento de EPI NR-06
Lista de presença treinamento de EPI NR-06
 
Calculo vetorial - eletromagnetismo, calculo 3
Calculo vetorial - eletromagnetismo, calculo 3Calculo vetorial - eletromagnetismo, calculo 3
Calculo vetorial - eletromagnetismo, calculo 3
 
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docxTRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
TRABALHO INSTALACAO ELETRICA EM EDIFICIO FINAL.docx
 
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
07 - MICRÔMETRO EXTERNO SISTEMA MÉTRICO.pptx
 
Apresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPMApresentação Manutenção Total Produtiva - TPM
Apresentação Manutenção Total Produtiva - TPM
 
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
10 - RELOGIO COMPARADOR - OPERAÇÃO E LEITURA.pptx
 

Assembly 8051

  • 3. Sobre o material • Essas transparências foram baseadas em materiais elaborados pelos professores Hugo Vieira Neto, Eduardo Bertonha e Gabriel Kovalhuk
  • 4. Assembly • Opcode (Operation code) – Instrução em linguagem de máquina – Carga, aritmética, lógica, controle, etc – Operandos: registradores, pilha, memória, interfaces E/S, etc • Assembly – Linguagem de baixo nível – Mnemônicos
  • 5. Assembly • Mnemônicos – Representam opcode – Mais compreensível para humanos – Significado exato para máquina • Assembler (Montador) – mnemônicos → opcodes • Labels (Referências) – Nomes dados endereços, variáveis, etc
  • 6. Assembly Assembler Memória ISP, gravador, etc MOV A, #1C ADD A, #F2 mnemônicos 01110100 00011100 00100100 11110010 opcodes
  • 7. Assembly CLR C ;faz carry=0 SUBB A, R0 ;subtrai R0 de A JZ IGUAL ;se R0=A salta para IGUAL JC MAIOR ;se R0>A salta para MAIOR MENOR: MOV R1, #01 ;sinaliza em R1 que R0<A SJMP FIM MAIOR: MOV R1, #02 ;sinaliza em R1 que R0>A SJMP FIM IGUAL: MOV R1, #00 ;sinaliza em R1 que R0=A FIM: ;segue em frente Comentários Labels
  • 8. Assembly • Códigos das instruções de 8 bits • Extensão variável de 1 a 3 bytes • Tempo de execução variável de 1 a 4 ciclos de máquina • Mnemônicos seguem o padrão Intel
  • 9. Conjunto de Instruções • Transferência de dados – MOV, MOVX, MOVC – PUSH, POP – XCH, XCHD • Aritméticas – ADD, ADDC, SUBB – INC, DEC – MUL, DIV – DA
  • 10. Conjunto de Instruções • Lógicas – ANL, ORL, XRL, CLR, CPL, – RL, RLC, RR, RRC, SWAP • Booleanas (bits) – CLR, SETB, CPL, ANL, ORL – MOV
  • 11. Conjunto de Instruções • Desvio – ACALL, LCALL, RET, RETI – AJMP, LJMP, SJMP, JMP – JZ, JNZ, JC, JNC, JB, JNB, JBC – CJNE, DJNZ – NOP
  • 12. Modos de Endereçamento • Endereçamento Direto – MOV A, 25h – Move para A o conteúdo de da posição de memória 25h • Endereçamento por Constante Imediata – MOV A, #25h – Move para A o dado imediato 25h (#)
  • 13. Modos de Endereçamento • Endereçamento Indireto – MOV A, @R1 – Move para A o conteúdo da posição de memória apontada por R1 (@) • Endereçamento via Registrador – MOV A, R1 – Move para A o conteúdo de R1
  • 14. Modos de Endereçamento • Endereçamento Indexado – MOVX A, @DPTR – Move para A o conteúdo da posição de memória apontada por DPTR – MOVC A, @A+DPTR – Move para A o conteúdo da posição de memória apontada por A+DPTR – MOVC A, @A+PC – Move para A o conteúdo da posição de memória apontada por A+PC
  • 15. Notação dos Mnemônicos • Endereçamento de dados – A - acumulador – B - registro especial B – Rn - R0 a R7 do banco em uso – direto - endereço da RAM interna – @Ri - R0 ou R1 como ponteiro da RAM interna – @DPTR - DPTR como ponteiro da ROM ou RAM externa
  • 16. Notação dos Mnemônicos • Endereçamento de dados (cont.) – #dado - constante de 8 bits – #dado16 - constante de 16 bits – Bit - flag, bit de controle ou de port de E/S • Endereçamento de programa – end11 - endereço dentro de página de 2KB – end16 - endereço dentro do espaço de 64KB – rel - destino relativo à próxima instrução (128 a +127)
  • 17. Diretivas do Assembler • ORG exp • END exp • label: DB exp • label: DW exp • label: LONG exp • label: ASCII exp • label: EQU val
  • 18. Programa em Assembly TESTE EQU 01010101B ;CONSTANTE DE TESTE ORG 0000H ;ENDERECO DE RESET RESET: LJMP INICIO ;SALTA PARA O INICIO ORG 0100H ;INICIO DO PROGRAMA INICIO: MOV A, #040H ;INICIALIZA CONTADOR MOV R0, #64 ;ENDERECO INICIAL REPETE: MOV @R0, #TESTE ;ESCREVE CONSTANTE INC R0 ;PRÓXIMO ENDEREÇO DEC A ;DECREMENTA CONTADOR CJNE A, #0, REPETE ;SE NAO TERMINOU REPETE FINAL: JMP FINAL
  • 19. Resultado do Montador LOC OBJ LINE SOURCE 0055 1 TESTE EQU 01010101B 2 0000 3 ORG 0000H 0000 020100 4 RESET: LJMP INICIO 5 0100 6 ORG 0100H 0100 7440 7 INICIO: MOV A, #040H 0102 7840 8 MOV R0, #64 0104 7655 9 REPETE: MOV @ R0 , # 85 0106 08 10 INC R0 0107 14 11 DEC A 0108 B400F9 12 CJNE A, #0, REPETE 010B 80FE 13 FINAL: JMP FINAL
  • 20. Pilha • Pilha – Estrutura de dados do tipo LIFO, cujo topo é apontado pelo registro SP – Utilizada para armazenamento temporário de dados e endereços de retorno de subrotinas e interrupções – O programa em Assembly deve manter o equilíbrio da pilha, evitando o estouro da sua capacidade
  • 21. Exemplo - Pilha PUSH ACC ;salva acumulador na pilha PUSH PSW ;salva PSW na pilha PUSH DPL ;salva DPTR na pilha PUSH DPH ... ;sequencia de instrucoes ... POP DPH ;recupera DPTR da pilha POP DPL POP PSW ;recupera PSW da pilha POP ACC ;recupera acumulador da pilha
  • 22. Estruturas de Programação • Subrotinas – São funções (rotinas) chamadas por software – Úteis quando uma seqüência de operações em um programa é repetidamente utilizada
  • 23. Exemplo - Subrotina INICIO: MOV R0, #11H ;valor=11H LCALL ENVIA ;chama subrotina ENVIA MOV R0, #22H ;valor=22H LCALL ENVIA ;chama subrotina ENVIA SJMP INICIO ;retorna ao INICIO ENVIA: ANL R0, #0FH ;zera nibble superior ORL R0, #30H ;forma codigo ASCII MOV SBUF, R0 ;envia pela serial RET ;retorna da subrotina
  • 24. Estruturas de Programação • Interrupções – São funções (rotinas) chamadas por hardware – Possuem endereços fixos (vetores de interrupção)
  • 25. Exemplo - Interrupção TIMER0: PUSH ACC ;salva acumulador PUSH PSW ;salva PSW MOV PSW, #00011000B ;banco 3 MOV A, P1 ;le port P1 ANL A, #11000000B ;mascara MOV ESTADO, A ;guarda em ESTADO POP PSW ;recupera PSW POP ACC ;recupera A RETI ;retorno da int
  • 26. Estruturas de Programação • Decisões – Desviam o fluxo de execução do programa conforme determinada condição for verdadeira ou falsa (IF - ELSE)
  • 27. Exemplo - Estrutura de Decisão CLR C ;faz carry=0 SUBB A, R0 ;subtrai R0 de A JZ IGUAL ;se R0=A salta para IGUAL JC MAIOR ;se R0>A salta para MAIOR MENOR: MOV R1, #01 ;sinaliza em R1 que R0<A SJMP FIM MAIOR: MOV R1, #02 ;sinaliza em R1 que R0>A SJMP FIM IGUAL: MOV R1, #00 ;sinaliza em R1 que R0=A FIM: ;segue em frente
  • 28. Estruturas de Programação • Repetições – Permitem a repetição de um conjunto de ações (loop) enquanto determinada condição for verdadeira ou falsa (FOR, WHILE, DO - WHILE)
  • 29. Exemplo - Estrutura de Repetição MOV R0, #16 ;repeticoes=16 LOOP1: ... ;sequencia de instrucoes ... DJNZ R0, LOOP1 ;repete se R0!=0 MOV A, #20H ;repeticoes=32 LOOP2: ... ;sequencia de instrucoes ... DEC A JNZ LOOP2 ;repete se A!=0
  • 30. Programa em C void main(void) { unsigned char cont, soma=0; for(cont=1; cont<10; cont++) soma+=cont; while(1); } /* main*/
  • 31. Resultado do Compilador ; FUNCTION main (BEGIN) ; SOURCE LINE # 3 0000 750000 R MOV soma,#000H ; R7 is assigned to cont ; SOURCE LINE # 5 0003 7F01 MOV R7,#001H 0005 ?FOR1: ; SOURCE LINE # 6 0005 E500 R MOV A,soma 0007 2F ADD A,R7 0008 F500 R MOV soma,A ; SOURCE LINE # 5 000A 0F INC R7 000B BF0AF7 CJNE R7,#00AH,?FOR1 000E ?WHILE1: ; SOURCE LINE # 8 000E 80FE SJMP ?WHILE1 ; FUNCTION main (END)
  • 32. Instruções Carga 24 3 MOV DPTR,#2000h Move 2 bytes p/ data pointer MOV DPTR,#dado16 12 2 MOV @R4,#0Fh Move dado imediato p/ RAM indireto MOV @Ri,#dado 24 2 MOV @R3,40h Move byte direto p/ RAM indireto MOV @Ri,direto 12 1 MOV @R4,A Move acumulador p/ RAM indireto MOV @Ri,A 24 2 MOV 40h,#100 Move dado imediato p/ byte direto MOV direto,#dado 24 2 MOV 7Fh,@R0 Move RAM indireto p/ byte direto MOV direto,@Ri 24 3 MOV 7Fh,30h Move byte direto p/ byte direto MOV direto,direto 24 2 MOV 7Fh,R1 Move registro p/ byte direto MOV direto,Rn 12 2 MOV 7Fh,A Move acumulador p/ byte direto MOV direto,A 12 2 MOV R6,#200 Move dado imediato p/ registro MOV Rn,#dado 24 2 MOV R3,7Fh Move byte direto p/ registro MOV Rn,direto 12 1 MOV R7,A Move acumulador p/ registro MOV Rn,A 12 2 MOV A,#20 Move dado imediato p/ acumulador MOV A,#dado 12 1 MOV A,@R4 Move RAM indireto p/ acumulador MOV A,@Ri 12 2 MOV A,7Fh Move byte direto p/ acumulador MOV A,direto 12 1 MOV A,R2 Move registro p/ acumulador MOV A,Rn Clk B Exemplo Descrição Instrução
  • 33. Instruções Carga 12 1 XCHD A,@R0 Troca nibble inferior da RAM com acumulador XCHD A,@Ri 12 1 XCH A,@R0 Troca RAM indireto com A XCH A,@Ri 12 2 XCH A,48h Troca byte direto com A XCH A,direto 24 2 POP DPH Recupera byte direto da pilha POP direto 24 2 PUSH R0 Move byte direto para pilha PUSH direto 24 1 MOVC A,@A+PC Move código contido no endereço A+PC para o acumulador MOVC A,@A+PC 24 1 MOVC A,@A+DPTR Move código contido no endereço A+DPTR para o acumulador MOVC A,@A+DPTR 24 1 MOVX @DPTR,A Move acumulador p/ RAM externa (end. 16 bits) MOVX @DPTR,A 24 1 MOVX @R1,A Move acumulador p/ RAM externa (end. 8 bits) MOVX @Ri,A 24 1 MOVX A,DPTR Move RAM externa (end. 16 bits) p/ acumulador MOVX A,@DPTR 24 1 MOVX A,@R1 Move RAM externa (end. 8 bits) p/ acumulador MOVX A,@Ri Clk B Exemplo Descrição Instrução
  • 34. Instruções Aritméticas 12 2 ADD A,#15 Subtrai dado imediato e borrow do acumulador SUBB A,#dado 12 1 ADD A,@R4 Subtrai RAM indireto e borrow do acumulador SUBB A,@Ri 12 2 ADD A,50h Subtrai byte direto e borrow do acumulador SUBB A,direto 12 1 ADD A,R2 Subtrai registro e borrow do acumulador SUBB A,Rn 12 2 ADDC A,#15 Soma dado imediato ao acumulador e ao carry ADDC A,#dado 12 1 ADDC A,@R4 Soma RAM indireto ao acumulador e ao carry ADDC A,@Ri 12 2 ADDC A,50h Soma byte direto ao acumulador e ao carry ADDC A,direto 12 1 ADDC A,R2 Soma registro ao acumulador e ao carry ADDC A,Rn 12 2 ADD A,#15 Soma dado imediato ao acumulador ADD A,#dado 12 1 ADD A,@R4 Soma RAM indireto ao acumulador ADD A,@Ri 12 2 ADD A,50h Soma byte direto ao acumulador ADD A,direto 12 1 ADD A,R2 Soma registro ao acumulador ADD A,Rn Clk B Exemplo Descrição Instrução
  • 35. Instruções Aritméticas 12 1 DA A Ajuste decimal do acumulador DA A 48 1 DIV AB Divide A por B DIV AB 48 1 MUL AB Multiplica A e B MUL AB 24 1 INC DPTR Incrementa data pointer INC DPTR 12 1 DEC @R1 Decrementa RAM indireto DEC @Ri 12 2 DEC 50h Decrementa byte direto DEC direto 12 1 DEC R3 Decrementa registro DEC Rn 12 1 DEC A Decrementa acumulador DEC A 12 1 INC @R1 Incrementa RAM indireto INC @Ri 12 2 INC 50h Incrementa byte direto INC direto 12 1 INC R3 Incrementa registro INC Rn 12 1 INC A Incrementa acumulador INC A Clk B Exemplo Descrição Instrução
  • 36. Instruções Aritméticas • Afetam flag C e OV : ADD; ADDC; SUBB; MUL; DIV • Afetam flag C : DA; RRC; RLC; SETB C; CLR C; CPL C; ANL e ORL (C,bit e C,/bit); MOV C,bit; CJNE
  • 37. Instruções Lógicas 24 3 XRL 50h,#7Fh XOR de byte direto com dado imediato XRL direto,#dado 12 2 XRL 50h,A XOR de byte direto com acumulador XRL direto, A 12 2 XRL A,#15 XOR do acumulador com dado imediato XRL A,#dado 12 1 XRL A,@R4 XOR do acumulador com RAM indireto XRL A,@Ri 12 2 XRL A,50h XOR do acumulador com byte direto XRL A,direto 12 1 XRL A,R2 XOR do acumulador com registro XRL A,Rn 24 3 ORL 50h,#7Fh OR de byte direto com dado imediato ORL direto,#dado 12 2 ORL 50h,A OR de byte direto com acumulador ORL direto, A 12 2 ORL A,#15 OR do acumulador com dado imediato ORL A,#dado 12 1 ORL A,@R4 OR do acumulador com RAM indireto ORL A,@Ri 12 2 ORL A,50h OR do acumulador com byte direto ORL A,direto 12 1 ORL A,R2 OR do acumulador com registro ORL A,Rn 24 3 ANL 50h,#7Fh AND de byte direto com dado imediato ANL direto,#dado 12 2 ANL 50h,A AND de byte direto com acumulador ANL direto, A 12 2 ANL A,#15 AND do acumulador com dado imediato ANL A,#dado 12 1 ANL A,@R4 AND do acumulador com RAM indireto ANL A,@Ri 12 2 ANL A,50h AND do acumulador com byte direto ANL A,direto 12 1 ANL A,R2 AND do acumulador com registro ANL A,Rn Clk B Exemplo Descrição Instrução
  • 38. Instruções Lógicas 12 1 SWAP A Troca nibbles inferior e superior SWAP A 12 1 RRC A Rotaciona acumulador à direita com carry RRC A 12 1 RR A Rotaciona acumulador à direita RR A 12 1 RLC A Rotaciona acumulador à esquerda com carry RLC A 12 1 RL A Rotaciona acumulador à esquerda RL A 12 1 CPL A Complementa acumulador CPL A 12 1 CLR A Limpa acumulador CLR A Clk B Exemplo Descrição Instrução Afetam flag C : RRC; RLC
  • 39. Instruções Booleanas 24 2 MOV P1.0,C Move carry p/ bit direto MOV bit,C 12 2 MOV C,P1.0 Move bit direto p/ carry MOV C,bit 24 2 ORL C,P1.5 OR do carry com bit direto complementado ORL C,/bit 24 2 ORL C,P1.5 OR do carry com bit direto ORL C,bit 24 2 ANL C,P1.5 AND do carry com bit direto complementado ANL C,/bit 24 2 ANL C,P1.5 AND do carry com bit direto ANL C,bit 12 2 CPL P1.7 Complementa bit direto CPL bit 12 1 CPL C Complementa flag de carry CPL C 12 2 SETB P1.7 Seta bit direto SETB bit 12 1 SETB C Seta flag de carry SETB C 12 2 CLR P1.7 Limpa bit direto CLR bit 12 1 CLR C Limpa flag de carry CLR C Clk B Exemplo Descrição Instrução Afetam flag C : SETB C; CLR C; CPL C; ANL e ORL (C,bit e C,/bit); MOV C,bit
  • 40. Instruções Booleanas 24 2 MOV P1.0,C Move carry p/ bit direto MOV bit,C 12 2 MOV C,P1.0 Move bit direto p/ carry MOV C,bit 24 2 ORL C,P1.5 OR do carry com bit direto complementado ORL C,/bit 24 2 ORL C,P1.5 OR do carry com bit direto ORL C,bit 24 2 ANL C,P1.5 AND do carry com bit direto complementado ANL C,/bit 24 2 ANL C,P1.5 AND do carry com bit direto ANL C,bit 12 2 CPL P1.7 Complementa bit direto CPL bit 12 1 CPL C Complementa flag de carry CPL C 12 2 SETB P1.7 Seta bit direto SETB bit 12 1 SETB C Seta flag de carry SETB C 12 2 CLR P1.7 Limpa bit direto CLR bit 12 1 CLR C Limpa flag de carry CLR C Clk B Exemplo Descrição Instrução Afetam flag C : SETB C; CLR C; CPL C; ANL e ORL (C,bit e C,/bit); MOV C,bit
  • 41. Instruções de Desvio 24 3 JBC TF0,L1 Desvia se bit direto setado e reseta bit JBC bit,relativo 24 2 JNB P1.0,DESVIO Desvia se bit direto não setado JNB bit,relativo 24 2 JB P1.0,LOOP Desvia se bit direto setado JB bit,relativo 24 2 JNC DESVIO Desvia se flag de carry não setado JNC relativo 24 2 JC LOOP Desvia se flag de carry setado JC relativo Clk B Exemplo Descrição Instrução
  • 42. Instruções de Desvio 24 2 JNZ REPETE Desvia se acumulador diferente de zero JNZ relativo 24 2 JZ SAI Desvia se acumulador igual a zero JZ relativo 24 1 JMP @A+DPTR Desvio indireto relativo a DPTR JMP @A+DPTR 24 2 SJMP LOOP1 Desvio curto (relativo) SJMP relativo 24 3 LJMP SAIDA Desvio longo LJMP end16bits 24 2 AJMP LOOP Desvio absoluto AJMP end11bits 24 1 RETI Retorno de rotina de interrupção RETI 24 1 RET Retorno de subrotina RET 24 3 LCALL TECLAS Desvio longo para subrotina LCALL end16bits 24 2 ACALL DISP Desvio absoluto para subrotina ACALL end11bits Clk B Exemplo Descrição Instrução
  • 43. Instruções de Desvio 12 1 NOP Sem operação NOP 24 2 DJNZ 5Fh,LOOP Decrementa byte direto e desvia se diferente de 0 DJNZ direto,relativo 24 2 DJNZ R0,LOOP Decrementa registro e desvia se diferente de 0 DJNZ Rn,relativo 24 3 CJNE @R2,#20,L3 Compara dado c/ dado apontado por registrador, se diferente, desvia CJNE @Rn,#dado,relativo 24 3 CJNE R2,#20,L3 Compara dado c/ registrador, se diferente, desvia CJNE Rn,#dado,relativo 24 3 CJNE A,#10,L3 Compara dado c/ acumulador, se diferente, desvia CJNE A,#dado,relativo 24 3 CJNE A,30h,L3 Compara byte direto c/ acumulador, se diferente, desvia CJNE A,direto,relativo Clk B Exemplo Descrição Instrução Afetam flag C : CJNE
  • 44. Sobre o material • Essas transparências foram baseadas em materiais elaborados pelos professores Hugo Vieira Neto, Eduardo Bertonha e Gabriel Kovalhuk