Anda di halaman 1dari 19

8051 Assembly Language

Disciplina: Microcontroladores
Prof. Remy Eskinazi, MSc

Modos de endereamento 8051 (1)

Imediato (Direto) - (Label ou Nmero) MOV PSW,05 ; M(PSW) R5 MOV A,04510 ; Acc M(4510) Constante Imediata (# Label ou Nmero) MOV R6,#14 ; R6 1410 MOV A,#0CAh ; Acc CA16 MOV DPTR,#loc ; DPTR Valor associado a loc Registrador (Rn) MOV R1,A MOV B,R3

; R1 ;B

Acc R3

2 Microcontroladores - Prof. Remy Eskinazi

Modos de endereamento 8051 (2)


Indireto por Registrador - @R0, @R1, @DPTR MOV @R0,#250 MOV A,@R1 MOVX @DPTR,A ; M(R0) 250 10 ;A M(R1) ; External data M(DPTR)

Indexado (Registrador Indireto) - @A+DPTR, @A+PC MOVC A,@A+DPTR ; A MOVC A,@A+PC ;A JMP @A+DPTR ; PC ROM(A+DPTR) ROM(A+PC) (A+DPTR)

Bit Nmero do bit, label.bit ou bit label MOV C,IE.0 MOV C,EX0 SETB 07Fh SETB 2F.7 ; cy bit 0 do IE reg. (EX0) ; identico ; Bit 7F 1 ; identico
3 Microcontroladores - Prof. Remy Eskinazi

Modos de endereamento 8051 (3)

Saltos e desvios (controle de programa)


Exemplos:
Salto Incodicional: JMP (Address16) AJMP (Address11) SJMP (Address8) LJMP (Address16) Salto condicional: JC (Address8) JNC (Address8) JB (Address8) JNB (Address8)
4 Microcontroladores - Prof. Remy Eskinazi

Exemplo de Programa Assembly

; ;

**** Programa Exemplo *** **** Objetivo: Explicar campos de um programa assembly 8051 **** equ 02h org 0h ;Reset sjmp inicio org 03 ; Int. Externa 0 sjmp ext0

Valor:

Inicio:

mov A, #0FFh mov R1, #valor DB 02h DB A ; ASCII do caractere A End ; Fim de programa p/ compilao 5 Microcontroladores - Prof. Remy Eskinazi

Instrues 8051

Tipos de instrues
Movimentao de Dados Aritmticas Lgicas Manipulao de Bit Controle de programa (Saltos e Desvios)

6 Microcontroladores - Prof. Remy Eskinazi

Instrues 8051 Movimentao de Dados

MOVE

MOV

A,

#n Direct R @Ri

A A A A

Immediate Direct Register Register Indirect

MOV

Rn,

#
Direct A

Rn Immediate

Direct Immediate

MOV

Direct,

# Direct R @R A #

MOV @Ri,

M(Ri)

Immediate

Direct Microcontroladores - Prof. Remy Eskinazi A

Instrues 8051 Movimentao de Dados

Move From Program Memory MOVC A, @A+DPTR A, @A+PC Move External Data RAM MOVX A, @R A, @DPTR MOVX @R, A @DPTR, A Others PUSH D POP D XCH A, R D @R

Acc Rom(A+DPTR) Acc Rom(A+PC)

SP SP+1, m(SP) D D m(SP), SP SP - 1 SWAP Acc Rn

8 Microcontroladores - Prof. Remy Eskinazi

Instrues 8051 Aritmticas

Add/Subtract ADD

A, # D R @R A, # D R @R A, # D R @R

Acc A+Immediate

ADDC

Acc A+Immediate+Carry

SUBB

Acc Acc-Immediate-Carry

9 Microcontroladores - Prof. Remy Eskinazi

Instrues 8051 Aritmticas

Inc/Dec INC

A D R @R DPTR A D R @R

Acc Acc+1

DEC

Acc Acc-1

Mul/Div MUL DIV

AB AB

B:A A B

Acc * B (unsigned) Quo ( A/B ) (unsigned) Rem( A/B )


10

Microcontroladores - Prof. Remy Eskinazi

Instrues 8051 Lgicas

AND,OR,XOR AND ORL XRL

A, # D R @R D, A D, #

Outras CLR CPL SWAP

A A A

Acc 0 Acc Acc Acc(7-4)

Acc(3-0)

11 Microcontroladores - Prof. Remy Eskinazi

Instrues 8051 Lgicas Rotaes RL

0 Acc

A
7

0 Acc

RLC

C 7

0 Acc

RR

A
7

0 Acc C

RRC

12 Microcontroladores - Prof. Remy Eskinazi

Instrues 8051 Manipulao de Bits

Clear/Set/Complement CLR C bit SETB C bit CPL C bit And, Or, Move ANL C, bit C, /bit ORL C, bit C, /bit MOV C, bit bit, C

Carry 0 bit 0

Carry Carry AND bit Carry Carry AND bit

13 Microcontroladores - Prof. Remy Eskinazi

Instrues 8051 Manipulao de Bits

Saltos JC JNC JB JNB JBC label label bit, label bit, label bit, label Jump if Carry set Jump if Carry clear Jump if bit set Jump if bit clear Jump if bit set, then clear bit

label = PC relative (+ 127)

14 Microcontroladores - Prof. Remy Eskinazi

Instrues 8051 Controle do Programa

Saltos AJMP LJMP SJMP JMP JZ JNZ label-A label-L label @A+DPTR label label Absolute Jump- 11 bits(2K) Long Jump - 16 bits (64K) Short Jump Jump Indirect PC (A+DPTR) Jump if zero Jump if not zero

Compara e Salta CJNE

A, #, label A, D, label R, #, label @R,#, label

Compare 1st op to 2nd op and jump to label if not Equal

15 Microcontroladores - Prof. Remy Eskinazi

Instrues 8051 Controle do Programa

Decrementa e Salta DJNZ

R, label D, label

Rn = Rn-1 , Jump if not zero

Subrotinas (Chamadas de Funes) ACALL label-A LCALL label-L RET RETI

Absolute Call - 11 bits (2K) Long Call - 16 bits (64K) Return from Subroutine Return from ISR: PC m(SP), SP SP-2

16 Microcontroladores - Prof. Remy Eskinazi

Programa Acha Zero Algoritmo

INCIO

DPTR ENDEREO INICIAL

Objetivo: Determinar se em um range de memria existe um byte 0

A M(DPTR)

A=0 ?

F0 1

N DPTR DPTR+1

FIM?

S RET

17 Microcontroladores - Prof. Remy Eskinazi

Programa Acha Zero Cdigo Fonte


; Programa Acha Zero ; Autores: Turma Dispositivos ; Descrio: O Programa faz a busca no range 0000h a 01FFh de um byte 0. ; Se existir, sinalizamos com flag F0=1 e samos do programa com DPTR=Posio ; do byte 0.

INICIO:

MOV DPTR, #0h CLR F0 REPETE: MOVX A, @DPTR CJNE A, #0h, CONTINUA ACHOU: SETB F0 SJMP FIM ; CONTINUA: INC DPTR MOV A, DPH CJNE A, #02h, REPETE FIM: RET END

; Inicia Ponteiro ; Limpa Flag F0 ; Poe o dado da posio indicada pelo DPTR no ; Acumulador ; Pula para CONTINUA se A=! 0 ; Sinaliza o encontro do valor zero com F0=1 ; Se no encontrou byte zero, aponta para proxima posicao ; ; Se DPTR<0200h pula para REPETE ; FIM ; Fim de Arquivo p/ compilao 18

Microcontroladores - Prof. Remy Eskinazi

INICIO

Ponteiro <-- pos. inicial ( DPTR <-- 0 )

Programa Acha Maior


Ent.: DPTR = End. Inicial

B <-- 0

Acc <-- (Ponteiro) (Acc <-- ( DPTR ))

Subrotina AchaMaior

Acc > B ?

Sada.: Acc = Maior valor DPTR = End. Maior dado Preserva dado e end. ( B <-- Acc ) ( R1R0 <-- DPTR )

Prxima posio (DPTR <-- DPTR + 1)

Acc <-- DPh

DPh = 01H ?

S Acc <-- B DPTR <-- R1R0

19
RET

Microcontroladores - Prof. Remy Eskinazi

Anda mungkin juga menyukai