Você está na página 1de 6

SENAI Curso Microcontroladores 8051

INSTRUES DE DES I!
As instrues de desvio podem ser classificadas dentro de um dos cinco grupos abaixo: Instrues de chamadas de sub-rotina (CALL). Instrues de retorno de sub-rotina (RET, RETI). Instrues de desvios incondicionais (JMP). Instrues de desvios condicionais (JZ, JNZ, CJNE). Instrues de loops (DJNZ).

C"a#ada de su$%rotina
Temos duas instrues de chamada de sub-rotinas ou funes, LCALL e ACALL. O <ENDEREO> da instru o LCALL ! um endereo de "# bits da mem$ria de programa %& '(tes) e permite reali*ar chamadas de sub-rotinas em +ual+uer endereo dos #,-b de mem$ria de programa. O <ENDEREO> da instru o ACALL ! um endereo de "" bits da mem$ria de programa %. b(tes) e permite reali*ar chamadas de sub-rotinas apenas para mesma pagina de .-b da mem$ria de programa. /intaxe: LCALL <ENDEREO> ACALL <ENDEREO> FLAGS INSTRUO 01A00 A1A00 OPERANDO adr"# adr"" & . BYTES . . CICLOS CY AC OV

ACALL a !"" 1hamada curta de sub-rotina %"" bits). LCALL a !"# 1hamada longa de sub-rotina %"# bits).

Retorno de su$%rotina
23 duas instrues para o retorno de sub-rotina.

Unidade & So't(are do #icrocontrolador 8051 Instru)*es de des+io

SENAI Curso Microcontroladores 8051

A instru o RET fa* o retorno comum. A instru o RETI informa +ue a rotina de interrup o terminou, ! espec4fica para sub-rotinas de tratamento de interrup o. /intaxe: RET RETI FLAGS INSTRUO 56T 56TI RET 5etorno de sub-rotina. RETI 5etorno de sub-rotina de interrup o. OPERANDO " " BYTES . . CICLOS CY AC OV

Des+ios incondicionais
Os desvios ou saltos incondicionais s o assim chamados pois n o dependem de nenhuma verifica o de condies anteriores. 23 +uatro instrues de desvios incondicionais. 7ois desvios s o id8nticos 9s sub-rotinas. A instru o LJMP %do ingl8s long :ump, +ue corresponde, em portugu8s, a salto longo) ! uma instru o de desvio incondicional. O <ENDEREO> da instru o LJMP ! um endereo de "# bits da mem$ria de programa. ; poss4vel reali*ar desvios para +ual+uer endereo dos #,- de mem$ria de programa. /intaxes: LJMP<ENDEREO>
FLAGS

INSTRUO 0<=>

OPERANDO end"# &

BYTES .

CICLOS -

CY -

AC -

OV

LJMP $% "# 7esvio longo para endereo de "# bits. A instru o AJMP %do ingl8s absolute :ump, +ue corresponde, em portugu8s, a salto absoluto) ! uma instru o de desvio incondicional. O <ENDEREO> da instru o AJMP ! um endereo de "" bits da mem$ria de programa e ! poss4vel reali*ar desvios apenas para a mesma pagina de .?b da mem$ria de programa. /intaxes: AJMP <ENDEREO> FLAGS INSTRUO A<=> OPERANDO adr"" BYTES & CICLOS . CY AC OV ,

Unidade & So't(are do #icrocontrolador 8051 Instru)*es de des+io

SENAI Curso Microcontroladores 8051

AJMP $% "" 7esvio curto para endereo de "" bits. A instru o SJMP %do ingl8s short :ump, +ue corresponde, em portugu8s, a salto curto) ! uma instru o de desvio incondicional. O <ENDEREO> da instru o SJMP ! um valor de @ bits correspondente ao deslocamento relativo dese:ado em rela o ao atual endereo de execu o %registro de fun o especial >1). ; poss4vel reali*ar desvios relativos de -".@ a A".@ posies na mem$ria de programa, pois o deslocamento ! dado em complemento de dois. /intaxes: SJMP <ENDEREO> FLAGS INSTRUO SJMP SJMP !$& 7esvio relativo curto. A instru o JMP 'A(DPTR ! uma instru o de desvio incondicional. O desvio da instru o e feito pela soma do valor do A11 com o valor de DPTR, sendo um desvio indexado. /intaxe: JMP 'A(DPTR FLAGS INSTRUO <=> OPERANDO BaA7>T5 BYTES & CICLOS . CY AC OV OPERANDO rel BYTES & CICLOS . CY AC OV -

JMP ' A ( DPTR 7esvio indireto para a posi o de mem$ria endereada pelo acumulador mais o registrador 7>T5.

Des+ios condicionais
Os desvios ou saltos condicionais dependem da verifica o de bits de controle. As instrues JNZ %do ingl8s :ump if accumulator not *ero, +ue corresponde, em portugu8s, saltar se o acumulador n o for de *ero) e JZ %do ingl8s :ump if accumulator *ero, +ue corresponde, em portugu8s, saltar se o acumulador for de *ero) s o instrues de desvio condicional. Os desvios s o feitos com os valores do acumulador. /e o conteCdo do Acumulador for *ero JZ fa* o salto. /e o conteCdo do Acumulador for diferente de *ero JNZ fa* o salto. O <ENDEREO> das instrues ! sempre um valor de @ bits correspondente ao deslocamento do desvio relativo dese:ado em rela o ao atual endereo de execu o %registro de fun o especial >1). 6sta instru o fa* desvios de -".@ a A".D posies na mem$ria de programa, pois o deslocamento ! dado em complemento de dois. A condi o do desvio ! dada pela instru o utili*ada.
Unidade & So't(are do #icrocontrolador 8051 Instru)*es de des+io &

SENAI Curso Microcontroladores 8051

/intaxe: JNZ <ENDEREO> JZ <ENDEREO>


FLAGS

INSTRUO <EF <F

OPERANDO rel

BYTES . .

CICLOS . .

CY -

AC -

OV -

JZ !$& 7esvia para o endereo GrelH se o acumulador for igual a *ero. JNZ !$& 7esvia para o endereo GrelH se o acumulador for diferente de *ero. A instru o CJNE %do ingl8s compare and :ump if not e+ual, +ue corresponde, em portugu8s, comparar e saltar se n o for igual) reali*a uma compara o entre . operandos e, caso n o se:am iguais, efetua um desvio ou salto na execu o do programa. A instru o CJNE pode ser utili*ada para controle de loops ou para teste condicional de b(tes, na forma de Gmaior +ueH ou Gmenor +ueH, pois existe a indica o de maior ou menor atrav!s do bit de 1A55I, locali*ado no >/J. O <OPERANDO "> pode ser o acumulador, um registro do banco de registros em uso ou um ponteiro, o <OPERANDO )> pode ser um endereo da mem$ria de dados interna ou uma constante e o <ENDERECOK ! sempre um valor @ bits correspondente ao deslocamentos do desvio relativo dese:ado, a ser efetuado no caso do <OPERANDO "> e do <OPERANDO )> serem diferentesL o deslocamentos ! dado em complemento de dois. Todos os desvios da instru o CJNE s o relativos e por isso t8m um alcance de ".D b(tes para frente ou ".@ b(tes para tr3s. /intaxe: CJNE <OPERANDO ">, <OPERANDO )>, <ENDEREO> FLAGS INSTRUO 1<E6 OPERANDO A, direto, rel A, Mdata, rel 5n, Mdata, rel B5i, Mdata, rel BYTES . & & & CICLOS . . . . CY AC OV -

CJNE A, *!$+,, !$& 1ompara o conteCdo do acumulador com o conteCdo do endereo GdiretoHe desvia para o endereoGrelH se for diferente. CJNE A, - a ,, !$& 1ompara o conteCdo do acumulador com o dado e desvia para o endereoGrelHse for diferente. CJNE R%, - a ,, !$l 1ompara o conteCdo do registrador 5n com o dado e desvia para o endereo GrelH se for diferente. CJNE ' R*, - a ,, !$& 1ompara o conteCdo do registrador 5i com o dado e desvia para o endereo GrelH se for diferente.
Unidade & So't(are do #icrocontrolador 8051 Instru)*es de des+io -

SENAI Curso Microcontroladores 8051

.oo/s
A instru o DJNZ %do ingl8s decrement register and :ump if not *ero, +ue corresponde, em portugu8s, decrementar registrador e saltar se n o for *ero) reali*a um decremento e, caso o resultado se:a diferente de *ero, efetua um desvio na execu o do programa. 23 duas instrues +ue repetem partes do programa. 1omo fa*em uso de um registro como contador ou um b(te da 5A= interna podem reali*ar .N# repeties. Tem um alcance de ".D b(tes para frente ou ".@ b(tes para tr3s. O <OPERANDO> pode ser um registro do banco de registro em uso ou endereo da mem$ria de dados interna ou uma constante. O <ENDEREO> ! sempre um valor de @ bits correspondente ao deslocamento do desvio relativo dese:ado, a ser efetuado no caso <OPERANDO> ser diferente de *ero. O deslocamento ! dado em complemento de dois. /intaxe: DJNZ <OPERANDO>, <ENDEREO> FLAGS INSTRUO 7<EF OPERANDO 5n, rel direto, rel BYTES . . CICLOS . . CY AC OV -

DJNZ R%, !$& 7ecrementa o registrador 5n e desvia para o endereo GrelH se o resultado for diferente de *ero. DJNZ *!$+,, !$& 7ecrementa o endereo GdiretoH e desvia para o endereo GrelH se o resultado for diferente de *ero.

N0o o/era)0o
23 uma instru o de n o opera o +ue n o fa* nada. A instru o NOP %do ingl8s no operation, +ue corresponde, em portugu8s, a n o opera o) ocupa os ciclos de m3+uina da 1>O e serve para reservar espaos na mem$ria de programa +uando se trabalha com 6>5O=. /intaxe: NOP FLAGS INSTRUO EO> NOP E o fa* nada. OPERANDO BYTES " CICLOS " CY AC OV -

Instru)*es 1ue a'eta# o re2istrador 'la2s 34S56


Os registros de flags %sinali*adores da 1>O) do @PN" fa*em parte do registrador >rogram /tatus Jord %>/J). 6ste b(te est3 locali*ado no espao /Q5, cont!m alguns bits de status +ue refletem o estado de manipula o da informa o e controle de operaes da 1>O.
Unidade & So't(are do #icrocontrolador 8051 Instru)*es de des+io 5

SENAI Curso Microcontroladores 8051

O >/J cont!m os flags 1arr( %1I), Auxiliar( 1arr( %A1) para operaes '17 %do ingl8s binar( coded decimal +ue corresponde, em portugu8s, a c$digo bin3rio e+uivalente ao decimal), OverfloR %OS), >aridade %>), dois bits de sele o de banco de registradores %5/P e 5/") e dois bits de status definidos pelo usu3rio. Os registros de flags guardam as condies de execu o das instrues. Os flags s o fundamentais, pois s o o Cnico mecanismo +ue o programador dispe para desvios de processamento e implementa o dos algor4tmos. O =1@PN" possui instrues +ue afetam o conteCdo do registrador de flags %>/J). Observe na tabela a seguir como o conteCdo do registrador de flags ! afetado %>/J). Fero %P) indica +ue flag est3 resetado, um%") indica +ue est3 setado, T significa +ue ser3 setado ou resetado e G-G indica +ue a flag n o ! alterada. F&a./ INSTRUO 0MNEMONICOS A77 A771 /O'' =O0 7IS 7A 551 501 /6T' 1 105 1 1>0 1 AE0 1,bit AE0 1, Ubit O50 1, bit O50 1, Ubit =OS 1,bit 1<E6 C T T T P P T T T " P T T T T T T T OV T T T T T AC T T T -

Unidade & So't(are do #icrocontrolador 8051 Instru)*es de des+io

Você também pode gostar