gs 0908 assembly 8051 v0 - páginas pessoais -...

44
Sistemas Microprocessados sato<at>utfpr<dot>edu<dot>br http://pessoal.utfpr.edu.br/sato/

Upload: lediep

Post on 20-Mar-2018

216 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

Sistemas Microprocessados

sato<at>utfpr<dot>edu<dot>brhttp://pessoal.utfpr.edu.br/sato/

Page 2: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

Assembly do 8051

sato<at>utfpr<dot>edu<dot>br

Page 3: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

Sobre o material

• Essas transparências foram baseadas em materiais elaborados pelos professores Hugo Vieira Neto, Eduardo Bertonha e Gabriel Kovalhuk

Page 4: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

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

Page 5: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

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

Page 6: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

Assembly

Assembler

Memória

ISP, gravador, etc

MOV A, #1C

ADD A, #F2

mnemônicos

01110100

00011100

00100100

11110010

opcodes

Page 7: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

AssemblyCLR C ;faz carry=0SUBB A, R0 ;subtrai R0 de AJZ IGUAL ;se R0=A salta para IGUALJC MAIOR ;se R0>A salta para MAIOR

MENOR: MOV R1, #01 ;sinaliza em R1 que R0<ASJMP FIM

MAIOR: MOV R1, #02 ;sinaliza em R1 que R0>ASJMP FIM

IGUAL: MOV R1, #00 ;sinaliza em R1 que R0=AFIM: ;segue em frente

ComentáriosLabels

Page 8: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

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

Page 9: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

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

Page 10: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

Conjunto de Instruções

• Lógicas– ANL, ORL, XRL, CLR, CPL, – RL, RLC, RR, RRC, SWAP

• Booleanas (bits)– CLR, SETB, CPL, ANL, ORL

– MOV

Page 11: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

Conjunto de Instruções

• Desvio– ACALL, LCALL, RET, RETI

– AJMP, LJMP, SJMP, JMP– JZ, JNZ, JC, JNC, JB, JNB, JBC– CJNE, DJNZ

– NOP

Page 12: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

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 (#)

Page 13: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

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

Page 14: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

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

Page 15: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

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

Page 16: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

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)

Page 17: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

Diretivas do Assembler

• ORG exp• END exp• label: DB exp• label: DW exp• label: LONG exp• label: ASCII exp• label: EQU val

Page 18: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

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

Page 19: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

Resultado do MontadorLOC 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

Page 20: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

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

Page 21: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

Exemplo - PilhaPUSH 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

Page 22: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

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

Page 23: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

Exemplo - SubrotinaINICIO: 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

Page 24: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

Estruturas de Programação

• Interrupções– São funções (rotinas) chamadas por

hardware– Possuem endereços fixos (vetores de

interrupção)

Page 25: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

Exemplo - InterrupçãoTIMER0: 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

Page 26: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

Estruturas de Programação

• Decisões– Desviam o fluxo de execução do programa

conforme determinada condição for verdadeira ou falsa (IF - ELSE)

Page 27: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

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

Page 28: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

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)

Page 29: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

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

Page 30: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

Programa em C

void main(void)

{

unsigned char cont, soma=0;

for(cont=1; cont<10; cont++)

soma+=cont;

while(1);

} /* main*/

Page 31: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

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,#001H0005 ?FOR1:

; SOURCE LINE # 6 0005 E500 R MOV A,soma0007 2F ADD A,R70008 F500 R MOV soma,A

; SOURCE LINE # 5 000A 0F INC R7000B BF0AF7 CJNE R7,#00AH,?FOR1000E ?WHILE1:

; SOURCE LINE # 8 000E 80FE SJMP ?WHILE1

; FUNCTION main (END)

Page 32: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

Instruções Carga

243MOV DPTR,#2000hMove 2 bytes p/ data pointer MOV DPTR,#dado16

122MOV @R4,#0FhMove dado imediato p/ RAM indiretoMOV @Ri,#dado

242MOV @R3,40hMove byte direto p/ RAM indiretoMOV @Ri,direto

121MOV @R4,AMove acumulador p/ RAM indiretoMOV @Ri,A

242MOV 40h,#100Move dado imediato p/ byte direto MOV direto,#dado

242MOV 7Fh,@R0Move RAM indireto p/ byte direto MOV direto,@Ri

243MOV 7Fh,30hMove byte direto p/ byte direto MOV direto,direto

242MOV 7Fh,R1Move registro p/ byte direto MOV direto,Rn

122MOV 7Fh,AMove acumulador p/ byte direto MOV direto,A

122MOV R6,#200Move dado imediato p/ registroMOV Rn,#dado

242MOV R3,7FhMove byte direto p/ registroMOV Rn,direto

121MOV R7,AMove acumulador p/ registroMOV Rn,A

122MOV A,#20Move dado imediato p/ acumuladorMOV A,#dado

121MOV A,@R4Move RAM indireto p/ acumuladorMOV A,@Ri

122MOV A,7FhMove byte direto p/ acumuladorMOV A,direto

121MOV A,R2Move registro p/ acumuladorMOV A,Rn

ClkBExemploDescriçãoInstrução

Page 33: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

Instruções Carga

121XCHD A,@R0Troca nibble inferior da RAM com acumulador

XCHD A,@Ri

121XCH A,@R0Troca RAM indireto com AXCH A,@Ri

122XCH A,48hTroca byte direto com AXCH A,direto

242POP DPHRecupera byte direto da pilhaPOP direto

242PUSH R0Move byte direto para pilhaPUSH direto

241MOVC A,@A+PCMove código contido no endereço A+PC para o acumulador

MOVC A,@A+PC

241MOVC A,@A+DPTRMove código contido no endereço A+DPTR para o acumulador

MOVC A,@A+DPTR

241MOVX @DPTR,AMove acumulador p/ RAM externa (end. 16 bits)

MOVX @DPTR,A

241MOVX @R1,AMove acumulador p/ RAM externa (end. 8 bits)

MOVX @Ri,A

241MOVX A,DPTRMove RAM externa (end. 16 bits) p/ acumulador

MOVX A,@DPTR

241MOVX A,@R1Move RAM externa (end. 8 bits) p/ acumulador

MOVX A,@Ri

ClkBExemploDescriçãoInstrução

Page 34: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

Instruções Aritméticas

122ADD A,#15Subtrai dado imediato e borrow do acumulador

SUBB A,#dado

121ADD A,@R4Subtrai RAM indireto e borrow do acumulador

SUBB A,@Ri

122ADD A,50hSubtrai byte direto e borrow do acumuladorSUBB A,direto

121ADD A,R2Subtrai registro e borrow do acumuladorSUBB A,Rn

122ADDC A,#15Soma dado imediato ao acumulador e ao carry

ADDC A,#dado

121ADDC A,@R4Soma RAM indireto ao acumulador e ao carry

ADDC A,@Ri

122ADDC A,50hSoma byte direto ao acumulador e ao carryADDC A,direto

121ADDC A,R2Soma registro ao acumulador e ao carryADDC A,Rn

122ADD A,#15Soma dado imediato ao acumuladorADD A,#dado

121ADD A,@R4Soma RAM indireto ao acumuladorADD A,@Ri

122ADD A,50hSoma byte direto ao acumuladorADD A,direto

121ADD A,R2Soma registro ao acumuladorADD A,Rn

ClkBExemploDescriçãoInstrução

Page 35: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

Instruções Aritméticas

121DA AAjuste decimal do acumuladorDA A

481DIV ABDivide A por BDIV AB

481MUL ABMultiplica A e BMUL AB

241INC DPTRIncrementa data pointerINC DPTR

121DEC @R1Decrementa RAM indiretoDEC @Ri

122DEC 50hDecrementa byte diretoDEC direto

121DEC R3Decrementa registroDEC Rn

121DEC ADecrementa acumuladorDEC A

121INC @R1Incrementa RAM indiretoINC @Ri

122INC 50hIncrementa byte diretoINC direto

121INC R3Incrementa registroINC Rn

121INC AIncrementa acumuladorINC A

ClkBExemploDescriçãoInstrução

Page 36: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

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

Page 37: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

Instruções Lógicas

243XRL 50h,#7FhXOR de byte direto com dado imediatoXRL direto,#dado

122XRL 50h,AXOR de byte direto com acumulador XRL direto, A

122XRL A,#15XOR do acumulador com dado imediato XRL A,#dado

121XRL A,@R4XOR do acumulador com RAM indiretoXRL A,@Ri

122XRL A,50hXOR do acumulador com byte direto XRL A,direto

121XRL A,R2XOR do acumulador com registroXRL A,Rn

243ORL 50h,#7FhOR de byte direto com dado imediatoORL direto,#dado

122ORL 50h,AOR de byte direto com acumulador ORL direto, A

122ORL A,#15OR do acumulador com dado imediato ORL A,#dado

121ORL A,@R4OR do acumulador com RAM indiretoORL A,@Ri

122ORL A,50hOR do acumulador com byte direto ORL A,direto

121ORL A,R2OR do acumulador com registroORL A,Rn

243ANL 50h,#7FhAND de byte direto com dado imediatoANL direto,#dado

122ANL 50h,AAND de byte direto com acumulador ANL direto, A

122ANL A,#15AND do acumulador com dado imediato ANL A,#dado

121ANL A,@R4AND do acumulador com RAM indiretoANL A,@Ri

122ANL A,50hAND do acumulador com byte direto ANL A,direto

121ANL A,R2AND do acumulador com registroANL A,Rn

ClkBExemploDescriçãoInstrução

Page 38: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

Instruções Lógicas

121SWAP ATroca nibbles inferior e superiorSWAP A

121RRC ARotaciona acumulador à direita com carryRRC A

121RR ARotaciona acumulador à direitaRR A

121RLC ARotaciona acumulador à esquerda com carryRLC A

121RL ARotaciona acumulador à esquerdaRL A

121CPL AComplementa acumuladorCPL A

121CLR ALimpa acumuladorCLR A

ClkBExemploDescriçãoInstrução

Afetam flag C : RRC; RLC

Page 39: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

Instruções Booleanas

242MOV P1.0,CMove carry p/ bit diretoMOV bit,C

122MOV C,P1.0Move bit direto p/ carryMOV C,bit

242ORL C,P1.5OR do carry com bit direto complementadoORL C,/bit

242ORL C,P1.5OR do carry com bit diretoORL C,bit

242ANL C,P1.5AND do carry com bit direto complementado

ANL C,/bit

242ANL C,P1.5AND do carry com bit diretoANL C,bit

122CPL P1.7Complementa bit diretoCPL bit

121CPL CComplementa flag de carryCPL C

122SETB P1.7Seta bit diretoSETB bit

121SETB CSeta flag de carrySETB C

122CLR P1.7Limpa bit diretoCLR bit

121CLR CLimpa flag de carryCLR C

ClkBExemploDescriçãoInstrução

Afetam flag C : SETB C; CLR C; CPL C; ANL e ORL (C,b it e C,/bit); MOV C,bit

Page 40: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

Instruções Booleanas

242MOV P1.0,CMove carry p/ bit diretoMOV bit,C

122MOV C,P1.0Move bit direto p/ carryMOV C,bit

242ORL C,P1.5OR do carry com bit direto complementadoORL C,/bit

242ORL C,P1.5OR do carry com bit diretoORL C,bit

242ANL C,P1.5AND do carry com bit direto complementado

ANL C,/bit

242ANL C,P1.5AND do carry com bit diretoANL C,bit

122CPL P1.7Complementa bit diretoCPL bit

121CPL CComplementa flag de carryCPL C

122SETB P1.7Seta bit diretoSETB bit

121SETB CSeta flag de carrySETB C

122CLR P1.7Limpa bit diretoCLR bit

121CLR CLimpa flag de carryCLR C

ClkBExemploDescriçãoInstrução

Afetam flag C : SETB C; CLR C; CPL C; ANL e ORL (C,b it e C,/bit); MOV C,bit

Page 41: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

Instruções de Desvio

243JBC TF0,L1Desvia se bit direto setado e reseta bitJBC bit,relativo

242JNB P1.0,DESVIODesvia se bit direto não setadoJNB bit,relativo

242JB P1.0,LOOPDesvia se bit direto setadoJB bit,relativo

242JNC DESVIODesvia se flag de carry não setadoJNC relativo

242JC LOOPDesvia se flag de carry setadoJC relativo

ClkBExemploDescriçãoInstrução

Page 42: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

Instruções de Desvio

242JNZ REPETEDesvia se acumulador diferente de zeroJNZ relativo

242JZ SAIDesvia se acumulador igual a zeroJZ relativo

241JMP @A+DPTRDesvio indireto relativo a DPTRJMP @A+DPTR

242SJMP LOOP1Desvio curto (relativo)SJMP relativo

243LJMP SAIDADesvio longo LJMP end16bits

242AJMP LOOPDesvio absolutoAJMP end11bits

241RETIRetorno de rotina de interrupçãoRETI

241RETRetorno de subrotinaRET

243LCALL TECLASDesvio longo para subrotinaLCALL end16bits

242ACALL DISPDesvio absoluto para subrotinaACALL end11bits

ClkBExemploDescriçãoInstrução

Page 43: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

Instruções de Desvio

121NOPSem operaçãoNOP

242DJNZ 5Fh,LOOPDecrementa byte direto e desvia se diferente de 0

DJNZ direto,relativo

242DJNZ R0,LOOPDecrementa registro e desvia se diferente de 0

DJNZ Rn,relativo

243CJNE @R2,#20,L3Compara dado c/ dado apontado por registrador, se diferente, desvia

CJNE @Rn,#dado,relativo

243CJNE R2,#20,L3Compara dado c/ registrador, se diferente, desvia

CJNE Rn,#dado,relativo

243CJNE A,#10,L3Compara dado c/ acumulador, se diferente, desvia

CJNE A,#dado,relativo

243CJNE A,30h,L3Compara byte direto c/ acumulador, se diferente, desvia

CJNE A,direto,relativo

ClkBExemploDescriçãoInstrução

Afetam flag C : CJNE

Page 44: gs 0908 assembly 8051 v0 - Páginas Pessoais - UTFPRpaginapessoal.utfpr.edu.br/sato/material-didatico/...– Representam opcode – Mais compreensível para humanos – Significado

Sobre o material

• Essas transparências foram baseadas em materiais elaborados pelos professores Hugo Vieira Neto, Eduardo Bertonha e Gabriel Kovalhuk