Teoria 3

Propaganda
Faculdade de Engenharia de Ilha Solteira – Departamento de Engenharia Elétrica
ELE 1078 - Microprocessadores I
3 - Fluxograma e Instruções de Desvio do 8085
É um tipo de diagrama de blocos, com visualização através de símbolos específicos, utilizado na
estruturação de programas complexos. O uso de um fluxograma facilita a tarefa do programador e permite
a identificação, de maneira rápida, da função de um determinado programa. Sua elaboração deve ser, na
media do possível, independente da linguagem de programação. A seguir são apresentados os principais
símbolos utilizados na elaboração de fluxogramas.
Representa o início, fim ou
interrupção de um programa
Resolução de um problema,
tarefa ou processamento
Tarefa ou processamento
repetitivo (subrotina)
Ponto de teste ou tomada de decisão
(desvios)
Entrada de dados via teclado
Entrada/Saída genérica
Saída via impressora
1
Ligação com outra parte do
fluxograma
Os símbolos apresentados são suficientes para a elaboração de fluxogramas dentro dos
objetivos do curso. Entretanto, deve-se verificar com mais atenção a elaboração de relatórios
técnicos e/ou científicos.
Para se ter uma idéia do uso de fluxogramas, considere o exemplo seguinte:
Exemplo: Elaborar o fluxograma de um programa que lê dois números via teclado, subtrai o
segundo do primeiro e calcula a raiz quadrada do resultado. Se a subtração gerar um número
negativo o resultado deve ser zero.
22
Faculdade de Engenharia de Ilha Solteira – Departamento de Engenharia Elétrica
ELE 1078 - Microprocessadores I
Início
Lê dois
números
Início
(A e B)
(R = A - B)
NÃO
R >= ZERO ?
SIM
R= 0
R = sqrt(R)
FIM
O blocos de comparação/teste são implementados através de instruções de comparação
em conjunto com instruções de saltos condicionais. Há também a possibilidade de desvios
usando instruções de chamada de subrotinas (“CALL”).
3.1 – Instruções de Desvio (Salto) do 8085
53 - JMP endereço → Desvio incondicional do programa para o endereço especificado.
(PC) ← endereço (Exemplo: JMP 2050h)
J xx endereço → Desvia o fluxo do programa do programa para o endereço especificado de
acordo com os flags, definindo assim um desvio CONDICIONADO.
Se a condição especificada é verdadeira, o PC é carregado com o endereço especificado. Em
caso contrário, o programa continua com a execução da próxima instrução (após Jxx).
As condições que podem ser especificadas definem as seguintes instruções de salto no 8085:
54 - JNZ endereço→ Desvia se o flag Z = 0 (resultado não-nulo no acumulador).
55 - JZ endereço → Desvia se o flag Z = 1 (resultado NULO no acumulador).
56 - JNC endereço → Desvia se o flag CY = 0 (não houve carry – resultado de 8 bits)
57 - JC endereço → Desvia se o flag CY =1 (carry → mais de 8 bits - OVERFLOW)
58 - JPO endereço → Desvia se o flag P= 0 (Paridade ímpar – Número de “1” ímpar).
59 - JPE endereço → Desvia se o flag P =1 (Paridade Par – Número de “1” PAR).
12
Faculdade de Engenharia de Ilha Solteira – Departamento de Engenharia Elétrica
ELE 1078 - Microprocessadores I
60 - JP endereço → Desvia se o o flag S = 0 (resultado com bit7=0).
61 - JM endereço → Desvia se o flag S = 1 ( resultado com bit7 =1).
Outra instrução que permite desvio é:
62 - PCHL → Transfere o conteúdo do par HL para o PC:
PC ← (HL) , ou seja, PCH ← (H) e PCL ← (L)
O conteúdo do registrador H é movido para os oito bits mais significativos do PC e o conteúdo
do registrador L é movido para os oito bits menos significativos PC.
C – Estrutura de um Programa em Linguagem Assembly
A linguagem “assembly” permite a substituição dos códigos de máquina por
“mnemônicos”, mas não é tudo. Os compiladores de linguagem “assembly” permitem a
elaboração de programas bem estruturados, inclusive com o uso de comentários. De maneira
simplificada, os campos básicos da linguagem “assembly” podem ser visualizados no exemplo
seguinte:
Endereço (H) Label
Instrução Operando
Op. Code
Comentário
LXI
H, 2050
21 50 20
Carrega HL com 2050
MVI
A, 00
3E 00
Carrega A com ZERO
MOV
B, M
46
Carrega B com [(HL)]
2006
ADD
B
80
Soma A com B
2007
MOV
M, A
77
Salva A em [(HL)]
2008
JNC
CARREGA
D2 05 20
Desvia se CY=0;
RST
1
CF
Fim do programa
2000
INICIO:
2003
2005
200B
CARREGA:
FIM:
No exemplo anterior dois pontos são destacados: primeiro, não há necessidade da
definição dos endereços de retorno (Ex. CARREGA), pois o compilador os armazena
automaticamente; segundo, pode-se adicionar comentário linha a linha, facilitando a
documentação do programa. Outras facilidades existem nos modernos compiladores “assembly”,
como a definição do endereço inicial, a criação de tabelas indexadas, etc.
13
Download