prof. adilson gonzaga - uspiris.sel.eesc.usp.br/sel433a/aula3.pdf · teste de bits jb bit,rel testa...
TRANSCRIPT
![Page 1: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/1.jpg)
Microprocessadores são ‘Máquinas de Estado Seqüenciais Síncronas’ que operam mediante a execução de uma seqüência de códigos binários armazenados em memória.
1
Prof. Adilson Gonzaga
![Page 2: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/2.jpg)
• As ordens ou comandos compreendidos por um determinado Microprocessador, são INSTRUÇÕES seqüencialmente armazenadas na Memória.
• Ao conjunto de Instruções compreendidos por um determinado Microprocessador dá“INSTRUCTION SET”.
•que é em geral, diferente do INSTRUCTION SET de outro Microprocessador de fabricantes diferentes.
• Ao conjunto de Instruções compreendidos por um determinado Microprocessador dá-se o nome de “INSTRUCTION SET”.
• Cada Microprocessador tem seu próprio INSTRUCTION SET que é em geral, diferente do INSTRUCTION SET de outro Microprocessador de fabricantes diferentes.
2
![Page 3: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/3.jpg)
• Uma sequencia de Instruções do INSTRUCTION SET, armazenadas na memória e que realiza alguma operação, recebe o nome de PROGRAMA.
• Cada Instrução do Microprocessador é um código binário formada em geral por um ou mais Bytes.
•associado um Mnemônico para facilitar a compreensão da função que a Instrução executa.
•dá
• Cada Instrução do Microprocessador é um código binário formada em geral por um ou mais Bytes.
• A cada código binário equivalente a uma Instrução está associado um Mnemônico para facilitar a compreensão da função que a Instrução executa.
• Ao conjunto de Instruções e seus Mnemônicos equivalentes dá-se o nome de LINGUAGEM ASSEMBLY.
3
![Page 4: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/4.jpg)
4
• Para a documentação lógica de um Programa em Assembly utiliza
•INSTRUCTION SET do Microprocessador.
• Para a documentação lógica de um Programa em Assembly utiliza-se um Fluxograma ou Diagrama de Blocos.
• Cada bloco do Fluxograma equivale a um sub-conjunto do INSTRUCTION SET do Microprocessador.
• O Fluxograma é uma forma de se implementar logicamente um programa, antes que o mesmo seja codificado na Linguagem do Microprocessador.
• O Fluxograma é uma forma de se implementar logicamente um programa, antes que o mesmo seja codificado na Linguagem Assembly do Microprocessador.
![Page 5: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/5.jpg)
5
• Bloco de Processo
• Equivalem às Instruções que realizam alguma operação do tipo: - Movimento de Dados - Operação Aritmética - Operação Lógica
Execute
• Linhas de Fluxo do Programa • Mostram a sequencia de execução das Instruções.
• Cada Bloco do Fluxograma possui apenas uma linha de Fluxo de Entrada e uma ou duas de saída
![Page 6: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/6.jpg)
6
• Bloco de Decisão
X = 0?
V
F
• Equivale às Instruções que decidem sobre o Fluxo do Programa.
•for Verdadeira(V) o programa continua abaixo, se for Falsa(F) o programa muda o fluxo.
• Equivale às Instruções que decidem sobre o Fluxo do Programa.
• Se a função dentro do bloco for Verdadeira(V) o programa continua abaixo, se for Falsa(F) o programa muda o fluxo.
![Page 7: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/7.jpg)
7
• Processo Pré-definido
• Equivale às Instruções que mandam executar uma Sub rotina armazenada em outro lugar da Memória.
•termina, o fluxo continua normalmente.
• Equivale às Instruções que mandam executar uma Sub-rotina armazenada em outro lugar da Memória.
• Observe que quando a sub-rotina termina, o fluxo do programa continua normalmente.
![Page 8: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/8.jpg)
8
Início
FIM
• Bloco de Início de Programa • Bloco de Fim de Programa
• O Bloco de Início de Programa não equivale a uma Instrução específica do INSTRUCTION SET.
• O Bloco de Início de Programa não equivale a uma Instrução específica do INSTRUCTION SET.
• O Bloco de FIM equivale a uma instrução que termina o Programa. É chamado de FIM LÓGICO do Programa.
• O Bloco de FIM equivale a uma instrução que termina o Programa. É chamado de FIM LÓGICO do Programa.
![Page 9: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/9.jpg)
9
Início
Ler o dado da Memória
Dado = 0?
Parar
V
F
• O programa ao lado deve Ler um Dado da memória, verificar se é igual a zero. Se não for zero, continua em LOOP. Se for zero paro programa.
• O programa ao lado deve Ler um Dado da memória, verificar se é igual a zero. Se não for zero, continua em LOOP. Se for zero para o programa.
![Page 10: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/10.jpg)
10
• Para Codificar um Programa escrito através de um Fluxograma, deve-se escolher o Microprocessador, ou seja, conhecer seu Conjunto de Instruções.
• Os Microcontroladores da família MCS-51 serão os dispositivos a serem aplicados nesta disciplina.• Os Microcontroladores da família MCS-51 serão os dispositivos a serem aplicados nesta disciplina.
![Page 11: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/11.jpg)
11
Execute
• Instruções equivalentes ao Bloco de Processo
ADD A, Rn SUBB A, direct
• Instruções Aritméticas
INC A
DA A
DEC A
![Page 12: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/12.jpg)
12
• Instruções equivalentes ao Bloco de Processo
Execute
• Instruções Lógicas
ANL A, Rn ORL A, direct
XRL A, #data
CLR A CPL A
RL A SWAP A
![Page 13: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/13.jpg)
13
Execute
• Instruções equivalentes ao Bloco de Processo
• Instruções de Transferência de Dados
MOV A, Rn
MOVX A,@DPTR
MOVC A, @A+DPTR
PUSH direct POP direct
XCH A, Rn
![Page 14: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/14.jpg)
14
X = 0?
V
F
• Instruções equivalentes ao Bloco de Decisão
JZ rel JNZ rel
CJNE A, direct, rel
JC rel JNC rel
JB bit, rel JNB bit, rel
DJNZ Rn, rel
• Instruções de Desvio
![Page 15: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/15.jpg)
15
• Instruções equivalentes ao Bloco de Processo Pré-definido
LCALL addr16
• Instruções de Sub-Rotina
ACALL addr11
RET
RETI
![Page 16: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/16.jpg)
16
• Instruções equivalentes a Mudança de Fluxo
• Instruções de Saltos
LJMP addr16 AJMP addr11
SJMP rel
JMP @A+DPTR
![Page 17: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/17.jpg)
17
1. Endereçamento Imediato 1. Endereçamento Imediato
• Identificado através do sinal # • Identificado através do sinal #
• Opera sobre o dado localizado na própria instrução
• Exemplo: ADD A,#30h
O dado 30h é somado ao Registrador A
![Page 18: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/18.jpg)
18
ADD A,#30h
00
Registrador A
ADD A,#30h
Registrador A
30h 00 + 30h
1. Endereçamento Imediato 1. Endereçamento Imediato
![Page 19: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/19.jpg)
19
20
00
Memória Registrador A
ADD A,#30h
Programa
Registrador A
30
Operação
00 30 +
ADD A,#30h
30
Endereço
(hexa)
Conteúdo
(hexa)
1. Endereçamento Imediato 1. Endereçamento Imediato
![Page 20: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/20.jpg)
20
• Opera sobre o dado cujo endereço está na instrução • Opera sobre o dado cujo endereço está na instrução
• Exemplo: ADD A,30h
O dado armazenado no endereço 30h é somado ao Registrador A
2. Endereçamento Direto 2. Endereçamento Direto
![Page 21: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/21.jpg)
21
ADD A,30h
Registrador A
00
Conteúdo do Endereço 30h
20
ADD A,30h
20 00 + 20
Registrador A
2. Endereçamento Direto 2. Endereçamento Direto
![Page 22: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/22.jpg)
22
00
Memória Registrador A
ADD A,30h
Programa
Registrador A
20
Operação
00 20 +
ADD A,30h
20 30
Endereço
(hexa)
Conteúdo
(hexa)
2. Endereçamento Direto 2. Endereçamento Direto
![Page 23: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/23.jpg)
23
• Opera sobre o dado cujo endereço está armazenado em um Registrador apontado na instrução
• Exemplo: ADD A,@R0
• Identificado através do sinal @ • Identificado através do sinal @
O dado armazenado no endereço apontado pelo Registrador R0 é somado ao Registrador A
3. Endereçamento Indireto 3. Endereçamento Indireto
![Page 24: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/24.jpg)
24
ADD A,@R0
Registrador A
00
Conteúdo do Endereço 30h
20
ADD A,@R0
00 + 20
Registrador R0
30h
20
Registrador A
3. Endereçamento Indireto 3. Endereçamento Indireto
![Page 25: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/25.jpg)
25
00
Memória Registrador A
ADD A,@R0
Programa
Registrador A
20
Operação
00 20 +
ADD A,@R0
20 30
Endereço
(hexa)
Conteúdo
(hexa)
Registrador R0
30h
3. Endereçamento Indireto 3. Endereçamento Indireto
![Page 26: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/26.jpg)
26
Início
Ler o dado da Memória
Dado = 0?
Parar
V
F
ORG 0
LOOP:
MOV A,30H
CJNE A,#00,LOOP
AQUI: SJMP AQUI
![Page 27: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/27.jpg)
27
ORG 0
LOOP: MOV A,30H
CJNE A,#00,LOOP
AQUI: SJMP AQUI
Mnemônicos (Programa Assembly)
Código Compilado (Opcode)
COMPILADOR
![Page 28: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/28.jpg)
28
Memória de Programa
E5
30
B4
00
FB
80
00
01
02
03
04
05
Endereço Conteúdo
06 FE
![Page 29: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/29.jpg)
Exemplo:
Campo do Rótulo (Label)Campo do Rótulo (Label)
29
![Page 30: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/30.jpg)
Exemplo:
Campo da Operação (Mnemônicos)
Campo da Operação (Mnemônicos)
30
![Page 31: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/31.jpg)
Exemplo:
Campo do OperandoCampo do Operando
31
![Page 32: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/32.jpg)
Exemplo:
Campo do ComentárioCampo do Comentário
32
![Page 33: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/33.jpg)
Exemplo:
33
![Page 34: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/34.jpg)
34
![Page 35: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/35.jpg)
35
![Page 36: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/36.jpg)
São utilizadas para complementar as informações que permitam a montagem efetiva do programa.
• Indicar o Endereço Inicial do Programa.
• Reservar área de Dados
• Definir equivalência entre valores
• Etc…
36
![Page 37: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/37.jpg)
Principais Diretivas:
37
![Page 38: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/38.jpg)
Principais Diretivas:
Armazena na posição 0010h da Memória de Programa, o Byte 05h e na posição seguinte (0011h) o Byte CFh
Exemplo:
38
![Page 39: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/39.jpg)
Principais Diretivas:
39
![Page 40: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/40.jpg)
Principais Diretivas:
40
![Page 41: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/41.jpg)
Principais Diretivas:
• O literal só pode receber um único valor.
• O valor pode ser um valor numérico ou uma expressão.
• Atribui um valor a um literal.
• Uma vez declarado o valor do literal este não poderá ser redefinido.
4) Diretiva EQU ---- (Equate) Igual literal EQU valor
Exemplo:
Controle Controle
Exemplo:
ORG 0
Controle EQU 10h ; atribui 10h ao literal Controle
MOV A, #Controle ; Acumulador = 10h
41
![Page 42: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/42.jpg)
42
![Page 43: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/43.jpg)
43
![Page 44: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/44.jpg)
44
![Page 45: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/45.jpg)
CONTROLE DE FLUXO DE PROGRAMACONTROLE DE FLUXO DE PROGRAMA
A instrução CJNE (compare e salte se não for igual) faz o flag de carrymaior que o conteúdo do registrador em questão (A,
A instrução CJNE (compare e salte se não for igual) faz o flag de carry = 1 depois da execução, se o dado em comparação for maior que o conteúdo do registrador em questão (A, Rn ou @Ri).
CJNE A,direct,rel CJNE A,#data,rel CJNE Rn,#data,rel CJNE @Ri,#data,rel
Comparação de Bytes
45
![Page 46: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/46.jpg)
CONTROLE DE FLUXO DE PROGRAMACONTROLE DE FLUXO DE PROGRAMA
CJNE A,Valor,Test ;Desvie se A < Valor. Test: JC LT
CJNE A,Valor,Test ;Desvie se A >= Valor. Test: JNC GTE
CJNE A,Valor,Test ;Desvie se A > Valor. SJMP Else Test: JNC GT Else: -----
CJNE A,Valor,Test ;Desvie se A <= Valor. SJMP LTE Test: JC LTE
46
![Page 47: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/47.jpg)
47
Teste de Bits
JB bit,rel
Testa o bit e salta para o endereço rel se bit=1
ORG 0 SAI:
ORG 0 JB P1.0,SAI SJMP CONT SAI: ------
![Page 48: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/48.jpg)
48
Teste de Bits
ORG 0 SAI:
ORG 0 JNB P1.0,SAI SJMP CONT SAI: ------
JNB bit,rel
Testa o bit e salta para o endereço rel se bit=0
![Page 49: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/49.jpg)
49
Teste de Bits
ORG 0 SAI:
ORG 0 JBC P1.0,SAI SJMP CONT SAI: ------
JBC bit,rel
Testa o bit , salta para o endereço rel se bit=1 e complementa o bit
![Page 50: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/50.jpg)
DADOS ARMAZENADOS NA MEMÓRIA DE DADOS ARMAZENADOS NA MEMÓRIA DE PROGRAMAPROGRAMA
Dados são armazenados na Memória de Programa somente usando as gravação do programa.
Dados são armazenados na Memória de Programa somente usando as Psudo-Instruções DB ou DW, durante a fase de gravação do programa.
MOVC A, @A+DPTR
MOVC A, @A+PC
Existem duas instruções apenas que permitem ler estes dados armazenados na Memória de ProgramaExistem duas instruções apenas que permitem ler estes dados armazenados na Memória de Programa
50
![Page 51: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/51.jpg)
EXEMPLO:EXEMPLO:
Somar dois dados armazenados na Memória de Programa.
51
![Page 52: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/52.jpg)
Estrutura de Programação Assembly Estrutura de Programação Assembly
Programa Principal
Programa Principal
Chamada de Sub-rotina1
Chamada de Sub-rotina2
Programa Principal
Chamada de Sub-rotina3
Programa Principal
Sub-rotina1
Sub-rotina2
Sub-rotina3
![Page 53: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/53.jpg)
•É um procedimento estabelecido pelo programador que executa alguma tarefa específica.
• Cada chamada de dentro do Programa Principal causa um desvio automático para o endereço da sub-rotina chamada.
• Ao terminar a execução da sub-rotina o Contador de Programa (PC) retorna a execução para a próxima instrução dentro do Programa Principal, após a instrução de chamada.
• Ao terminar a execução da sub-rotina o Contador de Programa (PC) retorna a execução para a próxima instrução dentro do Programa Principal, após a instrução de chamada.
• O endereço de retorno da Sub-rotina é armazenado na Pilha no endereço apontado pelo • O endereço de retorno da Sub-rotina é armazenado na Pilha no endereço apontado pelo Stack Pointer (SP).
![Page 54: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/54.jpg)
Exemplo: Exemplo:
ACALL muda a execução do programa para o endereço da sub-rotina DELAY
RET retorna a execução do programa para a próxima instrução abaixo da chamada ACALL
O endereço de retorno (posição da instrução MOV A#00) é armazenado na Pilha definida por SP e recuperado pela instrução RET
O endereço de retorno (posição da instrução MOV A#00) é armazenado na Pilha definida por SP e recuperado pela instrução RET
$
![Page 55: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/55.jpg)
Sub-rotinas re-entrantes
• De dentro de uma Sub-rotina pode ser chamada outra sub-rotina.• De dentro de uma Sub-rotina pode ser chamada outra sub-rotina.
Exemplo: A cada chamada um endereço de retorno é armazenado na Pilha. A cada retorno o endereço é removido da Pilha.
A cada chamada um endereço de retorno é armazenado na Pilha. A cada retorno o endereço é removido da Pilha.
$
![Page 56: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/56.jpg)
ERROS COMUNS!!!!!!! ERROS COMUNS!!!!!!!
????? $
Saltar com JUMP para dentro de Sub-rotinas.
Conseqüência: O PC será carregado com o último valor armazenado na PILHA (???). O programa se perderá.
![Page 57: Prof. Adilson Gonzaga - USPiris.sel.eesc.usp.br/sel433a/Aula3.pdf · Teste de Bits JB bit,rel Testa o bit e salta para o endereço rel se bit=1 ORG 0 SAI: JB P1.0,SAI SJMP CONT -----](https://reader033.vdocuments.com.br/reader033/viewer/2022042407/5f2224c36344a62f31517d1d/html5/thumbnails/57.jpg)
ERROS COMUNS!!!!!!! ERROS COMUNS!!!!!!!
Saltar de Sub-rotinas com JUMP para dentro de Programas.
Conseqüência: Estouro da PILHA Conseqüência: Estouro da PILHA