Programação em Linguagem Assembly (Saltos e Subrotinas)
|
|
- Oswaldo Elias Brás Aires
- 5 Há anos
- Visualizações:
Transcrição
1 Programação em Linguagem Assembly (Saltos e Subrotinas) João Paulo Sousa jpsousa@fe.up.pt Setembro 2005 Conteúdo 1 Objectivos 2 2 Introdução 2 3 Ciclos e estruturas de controlo Ciclos for() Ciclos enquanto() Ciclos repetir() Estruturas if then else Estruturas de escolha múltipla Chamada e retorno de subrotinas 6 5 Problemas 7 1
2 1 Objectivos Consolidação de conhecimentos sobre programação em linguagem assembly da família 51. Familiarização com as instruções de salto e chamada de subrotinas. Utilização da stack e do stack pointer. 2 Introdução Ao contrário do que se passa nas linguagens de alto nível, a linguagem assembly não dispõe mecanismos próprios que conduzam a programar de modo estruturado. Felizmente é fácil implementar algumas estruturas de controlo existentes em linguagens de alto nível recorrendo a instruções de salto. Estude com cuidado os exemplos apresentados e as considerações que os acompanham bem como um dos livros recomendados [2, secção 2.4] e depois resolva os problemas propostos. 3 Ciclos e estruturas de controlo 3.1 Ciclos for() A maneira mais fácil de controlar a execução de determinado grupo de instruções um número de vezes conhecido é utilizar a instrução DJNZ (decrement and jump if not zero) que admite como operando um registo (djnz Rn,rel8) ou uma variável definida em memória (djnz direct,rel8). Repare-se no seguinte exemplo: 2 ; Inicializaç~ao de variáveis em memória 4 ; for(i=0;i<20;i++) { 5 ; temp[i]=0 6 ; } 7 ; tmed=0; 8 ;==================================================================== SIZE equ 20 ; Tamanho do vector dseg at 40h ; Segmento (absoluto) de dados temp: ds SIZE ; Vector temperaturas tmed: ds 1 ; Temperatura média cseg at 0000h ; Segmento (absoluto) de código mov r0,#temp ; Endereço inicial do vector 0002 E4 18 clr a F10 19 mov r7,#size ; Tamanho do vector 0005 F6 20 next: ; Inicializa (limpa) posiç~ao apontada inc r0 ; Aponta posiç~ao seguinte 0007 DFFC 22 djnz r7,next ; Salta se R7 for diferente de zero 0009 F6 23 ; Inicializa (limpa) tmed end 1. O segmento de dados começa no endereço 40h (linha 12) e a variável temp ocupa 20 (14h) bytes (linhas 13 e 10), logo é lógico que o endereço da variável tmed (linha 14) seja 54h. 2. O registo R0 funciona como apontador para o vector temp e deve ser inicialmente carregado com o endereço da primeira posição do vector (linha 17). 3. O inicio do ciclo de limpeza do vector temp é assinalado com a etiqueta next (linha 20). Fora do ciclo (linha 19) o registo R7, que funciona como contador, é inicializado com o número de posições do vector. 2
3 4. A instrução djnz, de decremento, comparação e salto, é codificada em dois bytes: no primeiro está o código da instrução e no segundo a distância entre o endereço da próxima instrução e o endereço destino, neste caso, quatro bytes para trás. Esta distância, que pode tomar valores de 128 a +127, é expressa num byte em complemento para dois, o que justifica a representação FCh (= 4) que se pode constatar na listagem. 5. No fim do ciclo o apontador aponta uma posição além da última do vector temp, ou seja, aponta justamente para a variável tmed pelo que (linha 23) basta escrever lá o valor zero. 3.2 Ciclos enquanto() Um ciclo deste tipo caracteriza-se por ter o teste de controlo logo no início pelo que o conjunto de instruções que encerra pode nunca ser executado. O exemplo seguinte introduz a instrução de salto condicional jz (jump if accumulator is zero) e o salto incondicional jmp: 2 ; Ciclo enquanto 4 ; while(cont!=0) { 5 ; cont-- 6 ; } 7 ; cont=100; 8 ;==================================================================== dseg at 40h ; Segmento (absoluto) de dados cont: ds 1 ; Contador cseg at 0000h ; Segmento (absoluto) de código E next: mov a,cont ; Teste da jz done ; condiç~ao de fecho do ciclo dec cont F8 18 jmp next ; Volta ao início do ciclo done: mov cont,#100 ; Atribuiç~ao final end 1. O teste de controlo do ciclo é feito no início de cada iteração (linhas 15 e 16) de modo que se inicialmente a variável cont for nula, o ciclo não se realiza nenhuma vez. 2. O salto na linha 18 é essencial para garantir a repetição do teste no início de cada iteração. A propósito deste salto convém esclarecer que jmp não é uma instrução no sentido estrito da palavra, mas sim uma instrução virtual, própria do assemblador da Keil, que este transforma automaticamente numa de três instruções reais: sjmp (short jump), ajmp (absolute jump) ou ljmp (long jump) consoante a distância ao destino especificada no salto em questão. Aqui, a codificação resultante (80h, linha 18) corresponde, como seria de esperar atendendo à distância, à da instrução sjmp. 3. Mais uma vez a codificação das instruções de salto utilizadas neste exemplo é feita em dois bytes: o primeiro corresponde ao código da instrução propriamente dita e o segundo à distância entre o endereço da próxima instrução e o endereço destino. No primeiro salto (linha 16) essa distância é de quatro bytes para a frente e no segundo é de oito bytes para trás (a que corresponde, em complemento para dois, a representação F8h). 3.3 Ciclos repetir() Um ciclo deste tipo caracteriza-se por ter o teste de controlo no fim de cada iteração pelo que o conjunto de instruções que encerra é sempre executado pelo menos uma vez. Repare-se no seguinte exemplo que 3
4 introduz a instrução jnz (jump if accumulator is not zero): 2 ; Ciclo repetir 4 ; do { 5 ; cont-- 6 ; } while(cont!=0); 7 ; cont=100; 8 ;==================================================================== dseg at 40h ; Segmento (absoluto) de dados cont: ds 1 ; Contador cseg at 0000h ; Segmento (absoluto) de código next1: dec cont 0002 E mov a,cont ; Teste da FA 17 jnz next1 ; condiç~ao de fecho do ciclo mov cont,#100 ; Atribuiç~ao final ; ou ent~ao, de forma ainda mais resumida D540FD 23 next2: djnz cont,next2 ; Decrementa, testa e repete 000C mov cont,#100 ; Atribuiç~ao final end 1. O teste de controlo do ciclo é feito no fim de cada iteração (linhas 16 e 17) por isso, ainda que a variável cont seja inicialmente nula, realiza-se sempre pelo menos uma iteração do ciclo. Neste exemplo concreto esse caso particular daria até origem a que se efectuassem 256 iterações já que, após a primeira, a variável cont passaria de zero para 255 e o ciclo só pararia quando cont voltasse a zero novamente. 2. A instrução djnz (linha 23) permite, neste caso particular, uma codificação alternativa muito eficiente. 3.4 Estruturas if then else As instruções de salto permitem uma implementação confortável deste tipo de estruturas nos programas escritos em assembly. O exemplo seguinte introduz as instruções ljmp (long jump) e cjne (compare and jump if not equal). 2 ; Teste de valores de 16 bits e de valores n~ao nulos 4 ; if(val==0) { 5 ; state++; 6 ; cont=maxcont; 7 ; } 8 ; else { 9 ; if(state==12) 10 ; state--; 11 ; } 12 ;==================================================================== 13 3A98 14 MAXCONT equ dseg at 40h val: ds 2 ; Ocupa 2 bytes cont: ds 2 ; Ocupa 2 bytes state: ds 1 ; Ocupa apenas 1 byte cseg at 0000h 0000 E mov a,val ; Pega no MSB e 4
5 orl a,val+1 ; conjuga com o LSB A 24 jz zero ; Salta se LSB=MSB= C 26 mov a,# B5440D 27 cjne a,state,done ; Compara state com 12, salta se diferente 000B dec state ; Faz state-- 000D ljmp done zero: inc state ; Faz state A 32 mov cont,#high(maxcont) ; Guarda MSB de MAXCONT mov cont+1,#low(maxcont) ; Guarda LSB de MAXCONT done: end 1. Repare-se na declaração da variável val (linha 17): uma vez que ocupa dois bytes o teste efectuado (linhas 22, 23 e 24) deve incluir ambos. 2. Nas linhas 32 e 33 foram utilizados dois operadores suportados pelo assemblador da Keil (high e low) que calculam, respectivamente, a metade mais significativa e menos significativa de um valor de 16 bits. 3. A instrução de salto incondicional ljmp (linha 29) não era aqui estritamente necessária pois, atendendo ao endereço destino do salto, bastaria utilizar a instrução sjmp. Ela está aqui por causa da sua tradução em código máquina: dos três bytes gerados o primeiro (02h) é o código da instrução propriamente dita enquanto que os dois seguintes (0018h) representam o endereço destino e não a distância do salto. Poderia ter sido utilizada a instrução virtual genérica jmp que teria neste caso como tradução os códigos da instrução sjmp. 3.5 Estruturas de escolha múltipla A instrução de comparação cjne permite também implementar estruturas de escolha múltipla semelhantes às que existem em linguagens de alto nível. Repare-se no exemplo seguinte: 1 ;=============================================================== 2 ; Escolha múltipla 4 ; switch (op) { 5 ; case 1: pin=10;break; 6 ; case 2: pin=50;break; 7 ; case 3: pin=250;break; 8 ; default: pin=0; 9 ; } 10 ;=============================================================== dseg at 40h op: ds pin: ds cseg at 0000h 0000 E mov a,op 0002 B cjne a,#1,not1 ; Compara com A 19 mov a,# F 20 sjmp done 0009 B Not1: cjne a,#2,not2 ; Compara com 2 000C mov a,#50 000E sjmp done 0010 B Not2: cjne a,#3,not Compara com FA 25 mov a,# sjmp done 0017 E4 27 Not3: clr a ; Default F done: mov pin,a end 5
6 1. A comparação (linhas 18, 21 e 24) não estraga o registo acumulador pelo que (linha 17) basta carregá-lo uma vez. 2. Novamente se nota nos códigos da instrução de comparação e salto (linhas 18, 21 e 24) a distância entre o endereço da próxima instrução e o endereço destino do salto, quatro bytes nos três casos deste exemplo. 3. A instrução mov final (linha 28) completa a execução. É sempre executada qualquer que seja a escolha feita. 4 Chamada e retorno de subrotinas As instruções de chamada de subrotinas 1 contribuem decisivamente para garantir uma boa estrutura dos programas, ao permitirem dividir uma tarefa complexa em tarefas mais simples, cada uma executada por uma rotina que em devido tempo será chamada. O exemplo seguinte apresenta as instruções de chamada lcall e acall, a instrução de retorno ret e a instrução nop (no operation). 2 ; Atraso configurável 4 ; delay(n) { 5 ; for(i=n;i<0;i--); 6 ; } 7 ; 8 ; delay(50); 9 ; delay(100); 10 ;==================================================================== cseg at 0000h F32 13 mov r7,# lcall delay ; delay(50) F64 15 mov r7,# acall delay ; delay(100) FE 17 stop: sjmp stop cseg at 0080h delay: nop ; N~ao faz nada nop ; a n~ao ser gastar algum tempo 0082 DFFC 22 djnz r7,delay ; Repete R7 vezes ret end 1. A codificação da instrução lcall (linha 14) é bastante mais simples e directa do que a da instrução acall (linha 16). Naquela aparece de forma evidente o endereço destino enquanto nesta parte do endereço é incorporada no código da instrução [1, páginas 17 e 36]. 2. Poderia ter sido utilizada a instrução virtual genérica call para substituir as instruções lcall e acall. Atendendo à proximidade da rotina, a instrução virtual seria traduzida, em ambos os casos, como se tratasse de uma instrução acall. 3. A instrução de salto (linha 17) é necessária para encravar o programa, caso contrário depois de executada a instrução da linha 16, a subrotina seria novamente executada mas no fim a stack ficaria corrompida por ter sido executado um ret sem previamente ter sido executado um acall ou lcall. 1 Os termos rotina e subrotina serão usados indistintamente para especificar um conjunto de instruções que executam uma tarefa específica no contexto da resolução de um problema mais abrangente. 6
7 5 Problemas Apresentam-se de seguida alguns problemas que requerem a utilização de instruções de salto e chamada de subrotinas. 1. Escreva um programa que calcule t = (a) são todos inferiores a 13, (b) são todos inferiores a i=0 y[i] supondo que os elementos do vector: Declare as variáveis num segmento de dados absoluto com início em 40h. 2. Traduza à mão, para código máquina, as duas soluções do problema anterior. 3. Escreva uma rotina que calcule a soma (efectuada sem considerar eventuais transportes) dos conteúdos de uma zona de memória com 32 bytes de comprimento e início apontado pelo registo R0. O resultado deve ficar no acumulador. Escreva um programa que chame essa rotina para somar os conteúdos da zona de memória com início no endereço 30h. 4. Escreva uma rotina que calcule o valor mínimo de uma zona de memória com início apontado pelo registo R0 e comprimento indicado no registo R7. No fim o mínimo deve ficar em R7. 5. Escreva a rotina testval que testa se o valor contido no acumulador é positivo, nulo ou negativo e incrementa, respectivamente, as variáveis np, nz e nn. 6. Considere o vector vv[ ], com 50 elementos de um byte cada, representados em complemento para dois. Com base na rotina desenvolvida no problema anterior escreva um programa que comece por fazer np = nz = nn = 0 e de seguida conte quantos elementos positivos, nulos e negativos existem no vector. Declare o vector e as variáveis num segmento de dados absoluto com início em 60h. 7. Escreva um programa que implemente na variável cont definida num segmento de dados absoluto com início em 30h um contador BCD (binary coded decimal) de dois dígitos. Considere os seguintes casos: (a) contagem crescente: 0, 1, 2,..., 99, 0, 1,..., (b) contagem decrescente: 99, 98,..., 2, 1, 0, 99, 98,.... Sugestão: consulte o manual de programação [1, página 27] para perceber como funciona a instrução da (decimal adjust) e utilize-a. 8. Suponha já existente a rotina upcase que converte para maiúscula a letra minúscula contida no acumulador devolvendo o resultado da conversão também no acumulador. (a) Escreva um programa que, recorrendo a essa rotina, converta para maiúsculas um texto com início apontado por R0 e cujo fim é indicado pelo código 0. (b) Escreva a rotina upcase. 9. Apresente duas rotinas diferentes (cjne, movc) para converter o valor contido no acumulador de acordo com a tabela 1. O resultado deve vir no acumulador. O valor É convertido em Tabela 1: Conversão de valores 7
8 10. Suponha já existente a rotina countbits que conta o número de bits a um da posição de memória apontada por R0, devolvendo o resultado no acumulador. (a) Escreva um programa que, recorrendo a essa rotina, conte o número de bits a um de uma zona de memória com início apontado pelo registo R0 e comprimento indicado no registo R7. O resultado deve ficar na variável nbits, declarada num segmento de dados absoluto. (b) Escreva a rotina countbits. Referências [1] Philips semiconductors; 80C51 family programmer s guide and instruction set; Setembro de [2] Yeralan, Senser and Ahluwalia, Ashutosh; Programming and Interfacing the 8051 Microcontroller; Addison Wesley, 1995; ISBN
Assembly Saltos e Subrotinas
Aula 6 Assembly Saltos e Subrotinas 6.1 Objectivos......................... 1 6.2 Introdução........................ 1 6.3 Ciclos e outras estruturas de controlo........ 2 6.3.1 Ciclos..........................
Leia maisProf. Adilson Gonzaga
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. Prof. Adilson Gonzaga 1 As ordens ou comandos
Leia maisProgramação de Microprocessadores. Programação de Microprocessadores SEL-433 APLICAÇÕES DE MICROPROCESSADORES I
SEL-433 APLICAÇÕES DE MICROPROCESSADORES I Programação de Microprocessadores 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
Leia maisAs 5 partes fundamentais. Linguagem de Programação Pinagem Características Elétricas Ambiente de Desenvolvimento Integrado - IDE
SEL-433 APLICAÇÕES DE MICROPROCESSADORES I Como conhecer/estudar um Microprocessador/Microcontrolador As 5 partes fundamentais Programação de Microprocessadores Prof: Evandro L. L. Rodrigues Arquitetura
Leia mais7. PROGRAMANDO O MICROCONTROLADOR. Microcontroladores - Prof: Demantova
7. PROGRAMANDO O MICROCONTROLADOR 1 7. PROGRAMANDO O MICROCONTROLADOR: Hardware parte física do circuito eletrônico CPU onde está localizado o microcontrolador. Dentro do microcontrolador existe um conjunto
Leia mais1. Instruções de Desvio
1. Instruções de Desvio Def.: Estas instruções permitem que, de forma condicional ou não, seja feito um desvio na seqüência de uma programa. O desvio é efetuado fazendo com que o valor carregado no PC
Leia mais5 Programação modular em Linguagem Assembly
5 Programação modular em Linguagem Assembly (Família 51) jpsousa@fe.up.pt Conteúdo 1 Objectivos 1 2 Introdução 1 Nomes externos 2 4 Problemas 4 5 Soluções 6 1 Objectivos Consolidação de conhecimentos sobre
Leia maisCONJUNTO DE INSTRUÇÕES
CONJUNTO DE INSTRUÇÕES Rn - Registrador R0 R7 do banco de registradores selecionado. direto - 8-bits de endereço da posição da RAM de dados Podem ser referentes tanto à RAM interna (0 7F) como ao espaço
Leia maisFaculdade de Engenharia. Microprocessadores. Apoio às Aulas Práticas
Faculdade de Engenharia Microprocessadores Apoio às Aulas Práticas 4 a Edição, Setembro 2005 Departamento de Engenharia Electrotécnica e de Computadores Primeiros Passos na Programação em Linguagem Assembly
Leia maisSistemas Microprocessados. sato<at>utfpr<dot>edu<dot>br
Sistemas Microprocessados satoutfpredubr http://pessoal.utfpr.edu.br/sato/ Assembly do 805 satoutfpredubr Sobre o material Essas transparências foram baseadas em materiais elaborados
Leia maisFamiliarização com o ambiente de desenvolvimento da Keil Software. (uvision 51 e dscope 51)
Familiarização com o ambiente de desenvolvimento da Keil Software (uvision 51 e dscope 51) jpsousa@fe.up.pt Setembro 2005 Conteúdo 1 Objectivos 2 2 Introdução 2 3 O ambiente de desenvolvimento da Keil
Leia maisSEL-614 MICROPROCESSADORES E APLICAÇÕES. Adilson Gonzaga
SEL-614 MICROPROCESSADORES E APLICAÇÕES Prof: Adilson Gonzaga HISTÓRICO Microprocessador Circuito integrado ( chip ) capaz de executar instruções. 1971 Intel Corporation lançou no mercado o microprocessador
Leia maisAssembly Sintaxe do Assembly. Instruções que afectam Flags. Aplicações de Microprocessadores 2006/2007
Assembly 8051 Aplicações de Microprocessadores 2006/2007 Sintaxe do Assembly [Label] Op-code [Operando] [Comentário] tabela: movc a,@a+dptr ; vai à tabela buscar o seu correspondente ASCII 2 2 Instruções
Leia maisContador crescente e decrescente...
Contador crescente e decrescente... Hardware Quatro LEDS (P1.7 a P1.4) Um interruptor (P1.0) LEDS e interruptor activos a zero f x = 12MHz P1 VCC Problema Visualizar nos LEDs uma contagem cíclica entre
Leia maisConjunto de Instruções do 8051
Apêndice B Conjunto de Instruções do 8051 A.G. e E.T.M. / 2001 (revisão) O 8051 apresenta 111 tipos de instruções, sendo 49 de um byte, 45 de dois bytes e 17 de três bytes. Levando-se em contas as variações
Leia maisFORMATO DO PROGRAMA FONTE
FORMATO DO PROGRAMA FONTE As declarações do programa fonte são constituídas pelos seguintes campos: 1) Campo do Rótulo: o primeiro caractere deve ser alfabético
Leia maisLaboratório de Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás Laboratório de Microprocessadores e Microcontroladores Experimento 4: Motor de Passo e Display LCD Alunos: Matrícula:
Leia maisMicrocontroladores. Conjunto de Instruções do Prof. Guilherme Peron Prof. Heitor Lopes Prof. Ronnier Rohrich Prof. Rubão
Microcontroladores do 805 Prof. Guilherme Peron Prof. Heitor Lopes Prof. Ronnier Rohrich Prof. Rubão Introdução Os microcontroladores: Têm instruções limitadas Precisam tratar os dados da forma correta
Leia maisLaboratório de Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás Laboratório de Microprocessadores e Microcontroladores Experimento 3: Temporizadores e Display LCD Alunos: Matrícula:
Leia maisNeander - características
NEANDER x RAMSES (Ou porque da necessidade de upgrade :-) Texto original: ftp://ftp.inf.ufrgs.br/pub/inf108/ramses-instrucoes.ppt Neander - características Largura de dados e endereços de 8 bits Dados
Leia maisLaboratório de Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás Laboratório de Microprocessadores e Microcontroladores Experimento 3: Temporizadores e Display LCD Alunos: Matrícula:
Leia maisNEANDERWIN. Algumas características do processador Neander são:
NEANDERWIN O NeanderWin é um simulador da máquina Neander, definida no livro do Raul F. Weber (UFRGS), Fundamentos de Arquitetura de Computadores, Ed. Sagra Luzzatto. A máquina original foi estendida aqui
Leia maisLaboratório de Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás Laboratório de Microprocessadores e Microcontroladores Experimento 3: Temporizadores e Display LCD Alunos: Matrícula:
Leia maisEEC2104 Microprocessadores
EEC2104 Microprocessadores Edição 2005/2006 Sistemas de interrupções Interrupção... Acontecimento assíncrono, inesperado para um processador Resulta na invocação automática de uma subrotina desencadeada
Leia maisEstudar os passos que devem ser feitos (ponto de partida até o objetivo)
Erros básicos Falta de conhecimento sobre o microcontrolador e assembly Falta de planejamento na hora de desenvolver o programa Estudar os passos que devem ser feitos (ponto de partida até o objetivo)
Leia maisSímbolos e abreviaturas utilizadas na descrição das instruções
Símbolos e abreviaturas utilizadas na descrição das instruções acumulador registo A addr endereço de 16 bits data quantidade de 8 bits data 16 quantidade de 16 bits byte 2 segundo byte da instrução byte
Leia maisPARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR
PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR Introdução Instruções são representadas em linguagem de máquina (binário) E x i s t e m l i n g u a g e n
Leia maisInterrupção. Prof. Adilson Gonzaga
Interrupção Prof. Adilson Gonzaga Estrutura de Programação Assembly Programa Principal Chamada de Sub-rotina1 Programa Principal Chamada de Sub-rotina2 Sub-rotina1 Subrotina2 Programa Principal Chamada
Leia maisProfessor: Dr. Rogério Rodrigues de Vargas.
UNIVERSIDADE ESTADUAL DE SANTA CRUZ DEPARTAMENTO DE CIÊNCIAS EXATAS E TECNOLÓGICAS Bacharelado em Ciência da Computação Software Básico Linguagem de Programação Assembly: Uma introdução no Linux/i386 (AT&T)
Leia maisConjunto de Instruções (ISA) I
Conjunto de Instruções (ISA) I José Costa Introdução à Arquitetura de Computadores Departamento de Engenharia Informática (DEI) Instituto Superior Técnico 2013-10-16 José Costa (DEI/IST) Conjunto de Instruções
Leia maisAula 14 Funcionamento de Processadores (Visão específica)
Aula 14 Funcionamento de Processadores (Visão específica) Com base nas aulas de Prof. José Delgado (autorizado) Anderson L. S. Moreira anderson.moreira@recife.ifpe.edu.br http://dase.ifpe.edu.br/~alsm
Leia maisLinguagem de Montagem do NeanderX
Universidade Estácio de Sá Curso de Informática Arquitetura de Computadores Linguagem de Montagem do NeanderX 11.5.2006 Geração Programa Executável Linguagens de Programação As linguagens de programação
Leia maismov R1,10H ; Carrega o dado do endereço 10H em R1 mov R1,#10H ; Carrega 10H em R1
--------------------------------------------------------------- Programa: primeiro.asm Move dado da acumulador para o registro B e vice-versa. Autor: Vargas Data:16:52 16/02/01 ---------------------------------------------------------------
Leia maisTÉCNICO DE INFORMÁTICA - SISTEMAS
782 - Programação em C/C++ - estrutura básica e conceitos fundamentais Linguagens de programação Linguagem de programação são conjuntos de palavras formais, utilizadas na escrita de programas, para enunciar
Leia maisFamília 8051 (introdução) 2011/1
Família 8051 (introdução) 2011/1 Refresh Microprocessador vs. microcontrolador. Periféricos built-in. Single-chip computer 2 Objetivos Histórico Modelos da família original Principais características Diagrama
Leia maisção de Computadores I
Universidade Federal de Pelotas Instituto de Física e Matemática Departamento de Informática Bacharelado em Ciência da Computação Arquitetura e Organizaçã ção de Computadores I Aula 2 1. Projeto da Arquitetura
Leia maisTópicos: 1 - Modos de endereçamento do Pilha e instruções de Pilha. 3 - Instruções que usam pilha: - instrução CALL - instrução RET
Tópicos: 1 - Modos de endereçamento do 8051 2 - Pilha e instruções de Pilha 3 - Instruções que usam pilha: - instrução CALL - instrução RET 4 - Interrupção 1 - Modos de Endereçamento do 8051 Os modos de
Leia maisEXERCÍCIOS RESOLVIDOS
EXERCÍCIOS RESOLVIDOS Modos de endereçamento direto ; inclui no programa assembly o arquivo (REG51.inc) ORG 0000H ; o programa inicia na linha 0000H da EPROM MOV A,#01010101B ; carrego no ACC por binário
Leia maisEx.: Rotinas de tempo
Ex.: Rotinas de tempo ORG 0000h PORTA EQU P1 VBASE EQU 0800h Inicio: mov a,# 0ffh volta: mov PORTA,a cpl a ljmp volta end Microcontroladores - Prof: Demantova 1 Ex.: Rotinas de tempo ORG 0000h PORTA EQU
Leia maisMICROPROCESSADORES E MICROCONTROLADORES PROVA 2 UMA SOLUÇÃO POSSÍVEL. Obs.: Todas as questões têm valor 2,0. Boa prova e Feliz Natal e Ano Novo!!!!
MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 Aluno: Matrícula: UMA SOLUÇÃO POSSÍVEL Obs.: Todas as questões têm valor 2,0. Boa prova e Feliz Natal e Ano Novo!!!! 1. Escreva um pequeno, em assembly do
Leia maisOrganização de Computadores
Organização de Computadores Aula 25 Conjunto de Instruções: Características e Funções Rodrigo Hausen 10 de novembro de 2011 http://cuco.pro.br/ach2034 1/92 Apresentação 1. Bases Teóricas 2. Organização
Leia maisRevisão da Linguagem C Prof. Evandro L. L. Rodrigues
SEL0433 Aplicação de Microprocessadores I Revisão da Linguagem C Prof. Evandro L. L. Rodrigues Estrutura de um programa C Diretivas de pré processamento Declaração de variáveis globais Declaração de protótipos
Leia maisSEBENTA INTRODUÇÃO Á ALGORITMIA
SEBENTA INTRODUÇÃO Á ALGORITMIA O desenvolvimento de programas para computador está sempre baseado na tarefa de programar um computador para seja resolvido um problema ou executada uma função e assim dar
Leia maisArquitectura de Computadores 2011/2012 2º Semestre 1º Teste - Repescagem - 27/06/2012
Arquitectura de Computadores 2011/2012 2º Semestre 1º Teste - Repescagem - 27/06/2012 Número: Nome: INSTRUÇÕES: - A duração da prova é de 2 horas. - Preencha imediatamente o seu número e nome de forma
Leia mais7. A pilha e subrotinas
Cap7.1 7. A pilha e subrotinas 7.1 Organização da Pilha (stack) Stack: estrutura de dados de uma dimensão organizada em algum trecho (segmento) da Memória; o primeiro item adicionado é o último a ser removido
Leia maisTempos de execução, programação modular e processamento de interrupções
Tempos de execução, programação modular e processamento de interrupções jpsousa@feuppt Conteúdo 1 Objectivos 2 2 Introdução 2 3 Ciclos-máquina 2 31 Cálculo do tempo de execução 3 32 Ajuste do tempo de
Leia maisProgramação I Estruturas de Repetição
Programação I Estruturas de Repetição Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br Expressões compactas Frequentemente existe a necessidade de escrever expressões da forma:
Leia maisMicroprocessadores I ELE Aula 7 Conjunto de Instruções do Microprocessador 8085 Desvios
Microprocessadores I ELE 1078 Aula 7 Conjunto de Instruções do Microprocessador 8085 Desvios Grupos de Instruções do 8085 As instruções no 8085 são distribuídas em 5 grupos: 1. Grupo de transferência da
Leia maisSEL 0415 INTROD. À ORGANIZAÇÃO DE COMPUTADORES
SEL 0415 Aula 11 Microcontrolador 8051 Parte 3 SEL 0415 INTROD. À ORGANIZAÇÃO DE COMPUTADORES Prof. Dr. Marcelo A. C. Vieira SEL 415 INTERRUPÇÃO Estrutura de Interrupção do 8051 n 5 Fontes [ 2 Externas
Leia maisSistemas Microprocessados
Sistemas Microprocessados satoutfpredubr http://pessoal.utfpr.edu.br/sato/ Assembly do ATmega8 satoutfpredubr Sobre o material Essas transparências foram baseadas no manual
Leia maisORGANIZAÇÃO DE COMPUTADORES
Organização de Computadores ORGANIZAÇÃO DE COMPUTADORES Curso: Tecnologia em Gestão da Tecnologia da Informação Ano: 2011 Instrução Precisam ser entendidas pelo processador Precisam ser decodificadas e
Leia maisLaboratório de Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás Laboratório de Microprocessadores e Microcontroladores Experimento 2: Interrupções Externas e Relés Alunos: Matrícula:
Leia maisMemória de dados interna
Memória de dados interna A MD interna na família 51 proporciona 128 bytes ou 256 bytes de MD interna (conforme a versão do componente) Os endereços 0 a 7FH incluem os bancos de registos R0 a R7, posições
Leia maisVariáveis primitivas e Controle de fluxo
Variáveis primitivas e Controle de fluxo Material baseado na apostila FJ-11: Java e Orientação a Objetos do curso Caelum, Ensino e Inovação, disponível para download em http://www.caelum.com.br/apostilas/
Leia maisMicroprocessadores I ELE Conjunto de Instruções do Microprocessador 8085 Aula 9 - PILHA E SUBROTINAS -
Microprocessadores I ELE 1078 Conjunto de Instruções do Microprocessador 8085 Aula 9 - PILHA E SUBROTINAS - 9.1 - Grupos de Instruções As instruções no 8085 são distribuídas em 5 grupos: 1. Grupo de transferência
Leia maisGrupo I (5 valores) CD AB
Grupo I (5 valores) Ministério da Ciência, Tecnologia e Ensino Superior 1. [2] Considere o seguinte mapa de Karnaugh da função F(A,B,C,D). Simplifique a função de modo a obter uma soma de produtos, e um
Leia maisProf. Adilson Gonzaga
Prof. Adilson Gonzaga Temporização da CPU Todos os Microcontroladores da família MCS-51 têm um oscilador interno. Para uso deste oscilador deve-se conectar um cristal entre os pinos Xtal1 e Xtal2 da CPU.
Leia maisLaboratório de Microprocessadores e Microcontroladores. Experimento 6:
Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás Laboratório de Microprocessadores e Microcontroladores Experimento 6: Conversor Analógico/Digital e Conversor Digital/Analógico
Leia maisAula 10 Microcontrolador Intel 8051 Parte 2
SEL 0415 Aula 10 Microcontrolador Intel 8051 Parte 2 SEL 0415 INTROD À ORGANIZAÇÃO DE COMPUTADORES Prof Dr Marcelo A C Vieira SEL 415 Mapeamento das memórias internas Memória de dados interna (RAM) n 8051
Leia maisEstruturas de controlo do C if-else statement
Análise do Instruction Set Architecture (3) Alteração do fluxo de execução de instruções Estrutura do tema ISA do IA-32 1. Desenvolvimento de programas no IA-32 em Linux 2. Acesso a operandos e operações
Leia maisLaboratório de Microprocessadores e Microcontroladores. Experimento 6: Conversor Analógico/Digital e Conversor Digital/Analógico
Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás Laboratório de Microprocessadores e Microcontroladores Experimento 6: Conversor Analógico/Digital e Conversor Digital/Analógico
Leia maisLaboratório de Microprocessadores e Microcontroladores. Experimento 6: Conversor Analógico/Digital e Conversor Digital/Analógico
Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás Laboratório de Microprocessadores e Microcontroladores Experimento 6: Conversor Analógico/Digital e Conversor Digital/Analógico
Leia maisConjunto de Instruções (ISA) II
Conjunto de Instruções (ISA) II José Costa Introdução à Arquitetura de Computadores Departamento de Engenharia Informática (DEI) Instituto Superior Técnico 2013-10-18 José Costa (DEI/IST) Conjunto de Instruções
Leia maisAJProença, Sistemas de Computação, UMinho, 2017/18 1. Componentes (físicos) a analisar: a unidade de processamento / o processador:
Introdução aos Sistemas de Computação (4) Estrutura do tema ISC 1. Representação de informação num computador 2. Organização e estrutura interna dum computador 3. Execução de programas num computador 4.
Leia maisPorta série no dscope...
Porta série no dscope... Interface série - 22 Comunicação multiprocessador Porta série nos modos 2 ou 3 Bit 8 utilizado para distinguir dois tipos de tramas (0=dados, 1=endereços) Funcionamento de SM2
Leia maisOprojeto apresenta três níveis de dificuldade: fácil, médio e difícil. No modo fácil tem-se uma
Jogo de Memória (Memorex v. 3.0) José Wilson Lima Nerys Universidade Federal de Goiás jwlnerys@gmail.com Abstract No presente projeto uma sequência de Leds é criada pelo microcontrolador, e deve ser repetida
Leia maisEstruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.
1 Estruturas da linguagem C 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. Identificadores Os identificadores seguem a duas regras: 1. Devem ser começados por letras
Leia maisEsta pseudomáquina foi criada em homenagem ao homem de Neandertal, o antecessor do homo sapiens.
Documentação Neander C O Neander C O computador hipotético Neander Características Modos de endereçamento Conjunto de instruções Obtendo o Neander C Compilando o Neander C Executando o Neander C Programando
Leia maisIntrodução ao PIC. Guilherme Luiz Moritz 1. 6 de novembro de DAELT - Universidade Tecnológica Federal do Paraná
Guilherme Luiz Moritz 1 1 DAELT - Universidade Tecnológica Federal do Paraná 6 de novembro de 2013 Características do PIC Arquitetura Harvard RISC, 35 instruções 8 a 84 pinos Mais de 180 modelos Vários
Leia maisCPU. CPU Unidade Central de Processamento. Função: leitura, escrita e processamento de dados
CPU CPU Unidade Central de Processamento Função: leitura, escrita e processamento de dados Constituída por: dispositivos que gerem a entrada (leitura) e saída (escrita) de dados; registos (memórias auxiliares)
Leia maisIntrodução à Arquitetura de Computadores
LICENCIATURA EM ENGENHARIA INFORMÁTICA E DE COMPUTADORES Introdução à Arquitetura de Computadores Tutorial do P3 Referência 2014 / 2015 INSTITUTO SUPERIOR TÉCNICO Paulo Lopes, José Costa 2014/2015 2 1.
Leia maisMicrocontrolador Assembly UTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
Assembly 8051 Num sistema microprocessado, geralmente, não existe um sistema operacional; O programa desenvolvido pelo programador deve cuidar tanto da lógica do programa, bem como da configuração e acesso
Leia maisLaboratório de Microprocessadores e Microcontroladores. Experimento 7:
Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás Laboratório de Microprocessadores e Microcontroladores Experimento 7: Conversor Analógico/Digital e Conversor Digital/Analógico
Leia maisMICROPROCESSADORES E MICROCONTROLADORES PROVA 2 - RESPOSTA ESPERADA
MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 - RESPOSTA ESPERADA 1. Escreva as instruções para as configurações pedidas. Valor: 2,0 a) Habilita as interrupções externas zero e um e a interrupção do
Leia maisAssembly Primeiros Passos
Aula 5 Assembly Primeiros Passos 5.1 Objectivos......................... 1 5.2 Introdução........................ 2 5.3 Programação em linguagem assembly........ 3 5.4 Modelo de programação................
Leia maisProva de Arquitectura de Computadores (21010) Data: 5 de Fevereiro de 2009
Ministério da Ciência, Tecnologia e Ensino Superior Curso:... Prova de Arquitectura de Computadores (21010) Data: 5 de Fevereiro de 2009 Nome:... Nº de Estudante:... B. I. nº... Assinatura do Vigilante:...
Leia maisIntrodução da memória de programa
Introdução da memória de programa clock dados load_ir instrução IR CE 1xx 001 0 emória RO endereco Contém instruções (2 bytes) Q enable Contador de Programa (PC) inc_pc Unidade de Controlo OPR B FLGS R
Leia maisTipos Primitivos, estruturas de iteração e decisão.
Tipos Primitivos, estruturas de iteração e decisão. André Luis Meneses Silva andreluis.ms@gmail.com http://br.geocities.com/programacao2ufs/ Agenda Tipos Primitivos de Dados Variáveis e Constantes es Comandos
Leia maisIntrodução ao Fortran 90-4
Introdução ao Fortran 90-4 Departamento de Física UFPel Controles de Fluxo de Execução Definição Estruturas (ou blocos) de programação que permitem controlar o fluxo de execução de um programa, além da
Leia maisEEC2104 Microprocessadores
EEC2104 Microprocessadores Edição 2005/2006 Contadores / Temporizadores Contadores/temporizadores em geral... Hardware para contagem de impulsos Externos Internos (derivados do relógio interno) Contagem
Leia maisO estudo da arquitectura de computadores efectua-se com recurso à Abstracção
ARQUITECTURA DE COMPUTADORES O estudo da arquitectura de computadores efectua-se com recurso à Abstracção Podemos ver um computador de várias formas. Para um utilizador normalmente o computador é a aplicação
Leia maisLaboratório de Programação II
Laboratório de Programação II Aula 02 Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br http://www.diemesleno.com.br Na aula passada vimos... Na aula passada vimos... 01 Introdução à linguagem C;
Leia maisSSC304 Introdução à Programação Para Engenharias
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação Introdução à Para Engenharias Algoritmos e Lógica de GE4 Bio GE4Bio Grupo de Estudos em
Leia maisTemporização Interrupções. Prof: Evandro L. L. Rodrigues. Rotinas de Atraso
Temporização Interrupções Prof: Evandro L. L. Rodrigues Rotinas de Atraso Temporização da CPU Todos os Microcontroladores da família MCS-51 têm um oscilador interno. Para uso deste oscilador deve-se conectar
Leia maisCAPÍTULO 4 CONJUNTO DE INSTRUÇÕES
CAPÍTULO 4 CONJUNTO DE INSTRUÇÕES 4.1. INTRODUÇÃO Todos os membros da família MCS-51 executam o mesmo conjunto de instruções. As instruções são otimizadas para aplicações de controle de 8 bits. Elas permitem
Leia maisLINGUAGEM C: COMANDOS DE REPETIÇÃO
LINGUAGEM C: COMANDOS DE REPETIÇÃO Prof. André Backes ESTRUTURAS DE REPETIÇÃO Uma estrutura de repetição permite que uma sequência de comandos seja executada repetidamente, enquanto determinadas condições
Leia maisEngenharia Electrotécnica/ Engenharia Informática Microprocessadores e Aplicações
Conversão de Binário para BCD A conversão de um número binário para BCD depende do valor a ser convertido: caso a: 0 a 99 (2 algarismos BCD) caso b: 0 a 255 (1 byte) caso c: 0 a 999 (3 algarismos BCD)
Leia maisAlgoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição
Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição 1 Comando while Deseja-se calcular o valor de: 1 + 2 + 3 +... + N. Observação: não sabemos, a priori, quantos termos
Leia maisNEANDERWIN - Resumo operacional
NEANDERWIN - Resumo operacional Sumário Listagem geral das instruções... 2 NOP... 2 LDI imed... 2 STA ender... 2 LDA ender... 3 ADD ender... 3 SUB ender... 3 OR ender... 4 AND ender... 4 NOT... 4 JMP ender...
Leia maisIntrodução ao Fortran 90-3
Introdução ao Fortran 90-3 Departamento de Física UFPel Controles de Fluxo de Execução Definição Estruturas (ou blocos) de programação que permitem controlar o fluxo de execução de um programa, além da
Leia maisArquitectura de Computadores
Arquitectura de Computadores Ano Lectivo de 2008/2009 2 o Semestre 1 o Teste 20 de Abril de 2009 Duração: 1h30+0h30 - O teste é sem consulta, apenas tem disponível o anexo que lhe deverá ter sido entregue
Leia maisLaboratório de Microprocessadores e Microcontroladores
Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás Laboratório de Microprocessadores e Microcontroladores Experimento 2: Teclado e Rotação de LEDs Alunos: Matrícula:
Leia maisNOTAS DE AULA 06 MICROCONTROLADOR 8051
NOTAS DE AULA 06 MICROCONTROLADOR 8051 SUMÁRIO DO VOLUME NOTAS DE AULA 06 1 INTRODUÇÃO AOS MICROCONTROLADORES 2 PROGRAMANDO EM LINGUAGEM ASSEMBLY - 8051 3 INSTRUÇÕES: JUMPS, LOOPS E CALL 4 DESCRIÇÃO DOS
Leia maisK&R: Capitulo 2 IAED, 2012/2013
Elementos da Linguagem C K&R: Capitulo 2 Elementos da Linguagem C Identificadores Tipos Constantes Declarações Operadores aritméticos, lógicos e relacionais Conversões de tipos Operadores de incremento
Leia maisPROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@gmail.com
Leia maisInformática I. Aula 9. Aula 9-17/05/2006 1
Informática I Aula 9 http://www.ic.uff.br/~bianca/informatica1/ Aula 9-17/05/2006 1 Ementa Histórico dos Computadores Noções de Hardware e Software Microprocessadores Sistemas Numéricos e Representação
Leia maisAlgoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas. Aula Tópico 2
Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas Aula Tópico 2 1 Problema 3 Exibir o maior número inteiro que pode ser representado no computador. 2 Qual o maior número inteiro? Para o compilador
Leia maisExercícios resolvidos (aula de 4 de Maio) Resolução:
Exercícios resolvidos (aula de 4 de Maio) 1. Um microprocessador gera endereços de memória de 14 bits. Desenhe um mapa de memória dos seus endereços de memória fronteira especificados em hexadecimal. Uma
Leia mais