






Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Pilha e Subrotinas - microprocessador 8085
Tipologia: Notas de estudo
1 / 11
Esta página não é visível na pré-visualização
Não perca as partes importantes!







CPE end16 → Chama uma subrotina a partir do endereço especificado se o FLAG P=1. CP end16 → Chama uma subrotina a partir do endereço especificado se o FLAG S=0. CM end16 → Chama uma subrotina a partir do endereço especificado se o FLAG S=1. RET → indica o retorno de uma subrotina de maneira incondicional; Rccc → indica o retorno de uma subrotina, condicionada à ccc ser verdadeira; RNZ end16 → retorna da subrotina se o FLAG Z=0. RZ end16 → retorna da subrotina se o FLAG Z=1. RNC end16 → retorna da subrotina se o FLAG CY=0.
RPO end16 → retorna da subrotina se o FLAG P=0. RPE end16 → retorna da subrotina se o FLAG P=1. RP end16 → retorna da subrotina se o FLAG S=0. RM end16 → retorna da subrotina se o FLAG S=1.
(Tabela 2.1. - Subtroina Delay) Observação : Menor atraso: DE = 0001H Maior atraso: DE = 0000H
-UPDDT – Apresenta um dado de 8 bits no campo de dados do display; Subrotina UPDDT Endereço 036EH Entrada A Função Mostrar dado (8 bits) no display Saída Não tem Registradores afetados Todos (Tabela 2.2. Subrotina UPDDT)
Endereço Mnemônico OP CODE Comentários 2000H LXI SP 20B0H 31 B0 20 Define a pilha a partir do endereço 20B0H 2003H LXI D 2000H 11 00 20 Carrega o par DE com 2000H 2006H MVI A 00H 3E 00 Carrega o A com 00H 2008H PUSH PSW F5 Salva na pilha o valor de A e F 2009H PUSH D D5 Salva na pilha o valor do par DE 200AH CALL UPDDT CD 6E 03 Chama a subrotina UPDDT 200DH POP D D1 Recupera o valor do par DE 200EH PUSH D D5 Salva o par DE na pilha 200FH CALL DELAY CD F1 05 Chama a subrotina delay 2013H POP D D1 Recupera o valor do par DE 2014H POP PSW F1 Recupera o valor de A e F 2015H INR A 3C Incrementa A 2016H JMP 2008H C3 08 20 Retorna para o endereço 2008H (Tabela 4.1 – Exercício 4.1.) Comentários :O Programa irá repetir a contagem indefinidamente pois a instrução de 'jump' incondicional SEMPRE voltará para o endereço 2008H. Note que para aumentar ou diminuir a velocidade da contagem , basta apenas mudar o valor armazenado no par DE.
Endereço Mnemônico OP CODE Comentários 2000H LXI SP 20B0H 31 B0 20 Define a pilha a partir do endereço 20B0H 2003H MVI A 00H 3E 00 Carrega A com 00H 2005H PUSH PSW F5 Guarda na pilha A e F 2006H CALL UPDDT CD 6E 03 Chama a subrotina UPDDT 2009H LXI D 2000H 11 00 20 Carrega o par DE com 2000H 200CH CALL DELAY CD F1 05 Chama a subrotina DELAY 200FH POP PSW F1 Recupera os valores de A e F 2010H INR A 3C Incrementa A
2011H ORA A B7 Operação OR : A com A 2012H DAA 27 Converte o valor em decimal 2013H JMP 2005H C3 05 20 Volta para o endereço 2005H (tabela 4.2. - Execício 4.2.) Comentários : Como no anterior vc pode aumentar ou diminuir a velocidade de execução mudando apenas o valor carregado no par DE.
Endereço Mnemônico OP CODE Comentários 2000H LXI SP 20B0H 31 B0 20 Define a pilha a partir do endereço 20B0H 2003H MVI A 99H 3E 99 Carrega o A com 99H 2005H PUSH PSW F5 Guarda na pilha o valor de A e F 2006H CALL UPDDT CD 6E 03 Chama a subrotina UPDDT 2009H LXI D FFFFH 11 FF FF Carrega o valor FFFFH no par DE 200CH CALL DELAY CD F1 05 Chama a subrotina DELAY 200FH LXI D 7E7DH 11 7D 7E Carrega o valor 7E7DH no par DE 2012H CALL DELAY CD F1 05 Chama a subrotina DELAY 2015H POP PSW F1 Recupera o valor de A e F 2016H CPI 00H FE 00 Compara o valor no A com 00H 2018H JZ 2003H CA 03 20 Caso Z=1 vai para 2003H, senão continua 201BH DCR A 3D Decrementa A 201CH MOV B,A 47 Move o valor de A para B 201DH ANI 0FH E6 0F Operação valor em A 'and' 0FH 201FH CPI 0FH FE 0F Compara o valor da operação com 0FH 2021H MOV A,B 78 Move o valor de B para A 2022H JNZ 2005H C2 05 20 Se Z=0 vai para 2005H,senão continua 2024H SUI 06H D6 06 Subtrai o valor de A por 06H 2027H JMP 2005H C3 05 20 Volta incondicionalmente para 2005H (tabela 4.3. - exercício 4.3) Comentários : Para obter o delay de 1 segundo são utilizados duas chamadas consecutivas a subrotina DELAY , uma com o par DE carregado com o valor FFFFH e outra com 7E7DH.
A pilha é necessária quando o programa envolve subrotinas , que facilitam muito a programação e tornam o programa mais dinânico e inteligente. SEMPRE quando subrotinas forem utilizadas , deve-se definir a faixa de memória onde a pilha irá trabalhar , isso é de extrema importância. Para trabalhar com uma subrotina , os parâmetros que serão utilizados com entrada devem ser conhecidos , assim como os registradores afetados , a saída caso haja , assim utilizar a subrotina de maneira adequada.