Você está na página 1de 2

Instrues 8051 - Resumo

Instruo Descrio Exemplo OpCode Byte CM

SDAC 12 Ano
Flags C AC OV

ADD A, #valor ADD A, endereo ADD A, @Ri ADD A, Rn ADDC A, #valor ADDC A, endereo ADDC A, @Ri ADDC A, Rn SUBB A, #valor SUBB A, endereo SUBB A, @Ri SUBB A,Rn INC A INC endereo INC @Ri INC Rn DEC A DEC endereo DEC Rn DEC @Ri INC DPTR MUL AB DIV AB DA A ANL A, #valor ANL A, endereo ANL A, @Ri ANL A, Rn ANL endereo , A ANL endereo , #valor ORL A, #valor ORL A, endereo ORL A, @Ri ORL A, Rn ORL endereo , A ORL endereo , #valor XRL A, #valor XRL A, endereo XRL A, @Ri XRL A, Rn XRL endereo , A XRL endereo , #valor CRL A CPL A RL A RLC A RR A RRC A SWAP A MOV A, #valor MOV A, endereo MOV A, @Ri MOV A, Rn MOV Rn , A MOV Rn , #valor MOV Rn , endereo MOV endereo, A MOV endereo , #valor MOV endereo1 , endereo2 MOV endereo , @Ri MOV endereo , Rn MOV @Ri , A MOV @Ri , #valor MOV @Ri , endereo MOV DPTR, #Valor16 MOVC A, @A+DPTR MOVC A, @A+PC MOVX A, @Ri MOVX A, @DPTR MOVX @Ri , A MOVX @DPTR, A PUSH endereo POP endereo XCH A, Rn XCH A, endereo XCH A, @Ri XCHD A, @Ri

Soma o valor dado ao acumulador Soma o contedo da posio de memria ao acumulador Soma o contedo da RAM endereada por Ri ao acumulador Soma o contedo de Rn ao acumulador Soma o valor e o carry ao acumulador Soma o contedo da posio de memoria e o carry o acumulador Soma o conteudo da RAM enderecada por Ri e o carry ao acumulador Soma o contedo de Rn e o carry ao acumulador Subtrai o valor ao acumulador Subtrai o conte udo da posio de memoria ao acumulador Subtrai o contedo da RAM endereada por Ri ao acumulador Subtrai o contedo de Rn ao acumulador Soma 1 ao acumulador Soma 1 a posio de memoria Soma 1 a RAM endereada por Ri Soma 1 ao contedo de Rn Subtrai 1 do acumulador Subtrai 1 da posio de memoria Subtrai 1 do contedo de Rn Subtrai 1 da RAM endereada por Ri Soma 1 ao registo DPTR Multiplica A e B e guarda resulta em A Divide A e B . Resultado: A quociente, B resto Ajuste decimal do acumulador "E"entre acumulador e valor; resultado em A "E"entre acumulador e RAM; resultado em A "E"entre acumulador e RAM indireta; resultado em A "E" entre acumulador e registo; resultado em A "E" entre RAM e acumulador; resultado no endereo RAM "E" entre RAM e valor; resultado no endereo RAM "OU" entre acumulador e valor; resultado em A "OU" entre acumulador e RAM; resultado em A "OU" entre acumulador e RAM indireta; resultado em A "OU" entre acumulador e registo; resultado em A "OU" entre RAM e acumulador; resultado no endereo RAM "OU" entre RAM e valor; resultado no endereo RAM "OU Exclusivo" entre acumulador e valor; resultado em A "OU Exclusivo" entre acumulador e RAM; resultado em A "OU Exclusivo" entre acumulador e RAM indireta; resultado em A "OU Exclusivo" entre acumulador e registo; resultado em A "OU Exclusivo" entre RAM e acumulador; resultado na RAM "OU Exclusivo" entre RAM e valor; resultado na RAM Limpa o valor do acumulador (A=0) Efetua o complemento (operao NOT) de A Desloca 1 bit para a esquerda no acumulador Desloca 1 bit para a esquerda no acumulador atravs do carry Desloca 1 bit para a direita no acumulador Desloca 1 bit para a direita no acumulador atravs do carry Troca os nibbles do acumulador (equivale a 4 RR A ou 4 RL A) Move (copia) o valor para o acumulador: A valor Move (copia) o valor da RAM para o acumulador Move (copia) o valor da RAM indireta para o acumulador Move (copia) o valor do registo para o acumulador: A Rn Move o valor do acumulador para o registo: RnA Move o valor imediato para o registo Move o valor da RAM para o registo Move o valor do acumulador para o endereo RAM Move o valor ara o endereo RAM Move o valor do endereo RAM para outro endereo RAM Move o valor do endereo RAM para outro endereo RAM indireto Move o valor do registo para o endereo RAM Move o valor do acumulador para a RAM indireta Move o valor imediato para a RAM indireta Move o valor do endereo RAM para a RAM indireta Move um valor imediato de 16 bits para o Data Pointer Move code byte relative to DPTR to Accumulator Move code byte relative to PC to Accumulator Move o valor da RAM externa (endereo 8 bit) para o acumulador Move o valor da RAM externa (endere. 16 bit) para o acumulador Move o acumulador para a RAM Externa (endereo 8 bit) Move o acumuladorpara a RAM External RAM (endereo 16 bit) Coloca um byte da RAM na stack Retira um dado da stack e coloca na RAM Troca o valor do Acumulador e do Registo Troca o valor do Acumulador e do valor da RAM Troca o valor do Acumulador e do valor da RAM indireta Troca o NIBLE menos significativo do Acumulador e a RAM indireta

ADD A, #20h ADD A, 20h ADD A, @R0 ADD A, R0 ADDC A, #20h ADDC A, 20h ADDC A, @R0 ADDC A, R0 SUBB A, #20h SUBB A, 20h SUBB A, @R0 SUBB A, R0 INC A INC 20h INC @R0 INC R0 DEC A DEC 20h DEC R0 DEC @R0 INC DPTR MUL AB DIV AB DA A ANL A, #20h ANL A, 20h ANL A, @R0 ANL A, R0 ANL 20h, A ANL 20h, #20h ORL A, #20h ORL A, 20h ORL A, @R0 ORL A, R0 ORL 20h, A ORL 20h, #20h XRL A, #20h XRL A, 20h XRL A, @R0 XRL A, R0 XRL 20h, A XRL 20h, #20h CLR A CPL A RL A RLC A RR A RRC A SWAP A MOV A, #20h MOV A, 20h MOV A, @R0 MOV A, R0 MOV R0, A MOV R0, #20h MOV R0, 20h MOV 20h, A MOV 20h, #20h MOV 20h, 21h MOV 20h, @R0 MOV 20h, R0 MOV @R0, A MOV @R0, #20h MOV @R0, 20h MOV DPTR, 00FFh MOVC A, @A+DPTR MOVC A, @A+PC MOVX A, @R0 MOVX A, @DPTR MOVX @R0, A MOVX @DPTR, A PUSH R0 POP R0 XCH A, R0 XCH A, 20H XCH A, @R0 XCHD A, @R0

24h 25h 26h-27h (R0-R1) 28h-2Fh (R0-R7) 34h 35h 36h-37h (R0-R1) 38h-3Fh (R0-R7) 94h 95h 96h-97h (R0-R1) 98h-9Fh (R0-R7) 04h 05h 06h-07h (R0-R1) 08h-0Fh (R0-R7) 14h 15h 16h-17h (R0-R7) 18h-1Fh (R0-R7) A3h A4h 84h D4h 54h 55h 56h-57h (R0-R1) 58h-5Fh (R0-R7) 52h 53h 44h 45h 46h-47h (R0-R1) 48h-4Fh (R0-R7) 42h 43h 64h 65h 66h-67h (R0-R1) 68h-6Fh (R0-R7) 62h 63h E4h F4h 23h 33h 03h 13h C4h 74h E5h E6h-E7h (R0-R1) E8h-Efh (R0-R7) F8h-FFh (R0-R7) 78h-7Fh (R0-R7) A8h-AFh (R0-R7) F5h 75h 85h 86h-87h (R0-R1) 88h-8Fh (R0-R7) F6h-F7h (R0-R1) 76h-77h (R0-R1) A6h-A7h (R0-R1) 90h 93h 83h E2h-E3h (R0-R1) E0 F2h-F3h (R0-R1) F0 C0h D0h C8h-CFh (R0-R1) C5h C6h-c7h (R0-R1) D6h-D7h (R0-R1)

2 2 1 1 2 2 1 1 2 2 1 1 1 2 1 1 1 2 1 1 1 1 1 1 2 2 1 1 2 3 2 2 1 1 2 3 2 2 1 1 2 3 1 1 1 1 1 1 1 2 2 1 1 1 2 2 2 3 3 2 2 1 2 2 3 1 1 1 1 1 1 2 2 1 2 1 1

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 4 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 2 2 2 2 1 1 2 2 2 2 2 2 2 2 2 2 1 1 1 1

x x x x x x x x x x x x 0 0 x x x -

x x x x x x x x x x x x -

x x x x x x x x x x x x x x -

Operaes de Transferncia de Dados

Operaes Lgicas

Instrues Aritmticas

Prof. Jos Pinto

Instrues 8051 - Resumo


Instruo Descrio Exemplo OpCode Byte CM

SDAC 12 Ano
Flags C AC OV

CLR bit CLR C SETB bit SETB C CPL bit CPL C ANL C, bit ANL C, /bit ORL C, bit ORL C, /bit MOV C, bit MOV bit , C ACALL endereo11 LCALL endereo16 RET RETI AJMP endereo11 LJMP endereo16 SJMP rel JMP @A + DPTR JZ rel JNZ rel CNJE A, #valor , rel CNJE A, endereo , rel CJNE @Ri , #valor , rel CJNE Rn , #valor , rel DJNZ Rn , rel DJNZ endereo , rel JC rel JNC rel JB bit, rel JNB bit, rel JBC bit, rel NOP Operandos Rn Ri #valor endereo endereo11 endereo16 rel bit A DPTR C PC

Zera o bit endereado Zera a flag CARRY (C0) Define o bit endereado Define o bit da flag CARRY (C1) Inverte (NOT) O bit endereado Inverte (NOT) a flag CARRY "E" entre bit endereado e CARRY "E" entre o complemento do bit endereado e CARRY "OU" entre bit endereado e CARRY "OU" entre o complemento do bit endereado e CARRY Move o bit endereado para CARRY Move CARRY para o bit endereado Chama subrotina numa faixa (pagina) de 2KB da atual posio Chama subrotina em qualquer posio de memria Retorna de uma subrotina Retorna de uma interrupo Salta para um endereo numa faixa de 2KB (Long JuMP) Salta para um endereo em qualquer posio de memria ( Short JuMP) Salta relativo Salta para o endereo obtido entre a soma do aculumador e DPTR Salta se o acumulador for zero Salta de o acumulador no for zero Compara e salta se o acumulador for diferente do valor imediato Compara e salta se o acumulador for diferente do valor da RAM Compara e salta se a RAM indireta for diferente do valor imediato Compara e salta se o valor do registo for diferente do valor imediato Decrementa o registo e salta se no for zero Decrementa o valor da RAM e salta se no for zero Salta se CARRY estiver definido Salta se CARRY no estiver definido Salta se o bit endereado no estiver definido Salta se o bit endereado estiver definido Salta se o bit estiver definido; antes de saltar limpa o bit. Nenhuma operao

CLR P2.0 CRL C SETB P2.0 SETB C CPL P2.0 CPL C ANL C, P2.0 ANL C, /P2.0 ORL C, P2.0 ORL C, /P2.0 MOV C, P2.0 MOV P2.0, C ACALL ROTINA LCALL ROTINA RET RETI AJMP MAIN LJMP MAIN SJMP $-3 JMP @A + DPTR JZ MAIN JNZ MAIN CJNE A, #20h, MAIN CJNE A, 20h, MAIN CJNE R0, #20h, MAIN CJNE R0, #20h, MAIN DJNZ R0, LOOP DJNZ 20h, LOOP JC ROTINA JNC ROTINA JB P2.0, ROTINA JNB P2.0, ROTINA JBC P2.0, ROTINA NOP

C2h C3h D2h D3h B2h B3h 82h B0h 72h A0h A2h 92h
11,31,51,71,91,B1,D1, F1 (h)

12h 22h 32h


01,21,41,61,81,A1,C1,E1 (h)

02h 80h 73h 60h 70h B4h B5h B6h-B7h (R0-R7) B8h-BFh (R0-R7) D8h-DFh (R0-R7) D5h 40h 50h 20h 30h 10h 00h

2 1 2 1 2 1 2 2 2 2 2 2 2 3 1 1 2 3 2 1 2 2 3 3 3 3 2 3 2 2 3 3 3 1

1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1

0 1 x x x x x x x x x x -

Instrues de salto

Instrues para variveis booleanas

Significado Registo R0 a R7 Endereamento indireto atravs de R0 e R1 Constante imediata Endereo direto de memria (8 bits) Endereo de 11 bits Endereo de 16 bits Offset de 8 bits em complemento para 2 (com sinal) usado nos saltos (-128 a +127) Endereo direto de 1 bit Acumulador Registo Data Pointer Flag CARRY (bit 7 do PSW) Program Counter

Prof. Jos Pinto