Baixe o app para aproveitar ainda mais
Prévia do material em texto
LINGUAGEM DE MONTAGEM – CCT0674-1001 Roteiro 02 - Linguagem Assembly - Desvio condicional Introdução à Programação AULA 01: Introdução à Lógica de ProgramaçãoLINGUAGEM DE MONTAGEM Objetivos • Compreender a sintaxe de desvio condicional em Assembly • Implementar utilizando a IDE MARS 4.5 • Resolver questão propostas sobre o tema Introdução à Programação AULA 01: Introdução à Lógica de ProgramaçãoLINGUAGEM DE MONTAGEM Introdução A particularidade que Assembly possui na hora de trabalhar com desvio condicional encontra-se na sua sintaxe, pois é necessário entender de que forma a linguagem utiliza esse recurso da programação para realizar seus desvios. Introdução à Programação AULA 01: Introdução à Lógica de ProgramaçãoLINGUAGEM DE MONTAGEM Disposição em Memória • Em um ambiente computacional, instruções e dados são armazenados em memória. • Cada instrução e dado possui um endereço associado. • Algumas instruções dependem desses endereços. Quais? • Em assembly, podemos utilizar rótulos para representar tais endereços. Introdução à Programação AULA 01: Introdução à Lógica de ProgramaçãoLINGUAGEM DE MONTAGEM Tipos de desvio condicional • beq (Branch equal) • bne (Branch if not equal) beq e bne são instruções conhecidas como desvios condicionais. Desvios condicionais são instruções que requerem a comparação de dois valores e a partir disso, realiza o desvio para um novo endereço. Introdução à Programação AULA 01: Introdução à Lógica de ProgramaçãoLINGUAGEM DE MONTAGEM Desvio condicional-Valores iguais • Em Assembly quando precisamos realizar algum tipo de desvio baseado em alguma condição utilizamos o beq (Branch equal) • Instrução utilizada quando desejamos comparar a igualdade de dois valores armazenados em registradores. Introdução à Programação AULA 01: Introdução à Lógica de ProgramaçãoLINGUAGEM DE MONTAGEM Desvio condicional- Valores iguais • Sintaxe: beq $r1, $r2, L1, Onde $r1, $r2 são os registradores cujos valores armazenados vão ser comparados. Se os valores são iguais, a sequência de execução pula para a instrução que possui o rótulo L1. Introdução à Programação AULA 01: Introdução à Lógica de ProgramaçãoLINGUAGEM DE MONTAGEM Desvio condicional-valores diferentes • A outra forma de estruturarmos um if-else é com a instrução bne (Branch if not equal). Essa instrução verifica se os registradores que estão operando são diferentes, caso sejam, a instrução realizará um salto para o rótulo relacionado. Introdução à Programação AULA 01: Introdução à Lógica de ProgramaçãoLINGUAGEM DE MONTAGEM Desvio condicional-valores diferentes Sintaxe: bne $r1, $r2, L1 Onde, $r1, $r2 são os registradores cujos valores armazenados vão ser comparados. Se os valores são diferentes, a sequência de execução pula para a instrução que possui o rótulo L1. Introdução à Programação AULA 01: Introdução à Lógica de ProgramaçãoLINGUAGEM DE MONTAGEM Desvio incondicional • O assembly do Mips também dá suporte a instrução de desvio incondicional. • Basicamente, um desvio incondicional é uma instrução que sempre diz que o processador deverá seguir o desvio. Introdução à Programação AULA 01: Introdução à Lógica de ProgramaçãoLINGUAGEM DE MONTAGEM Desvio incondicional • A instrução para isso é a instrução j (jump). Sintaxe: • j rotulo # pula para a instrução precedida por# rotulo Introdução à Programação AULA 01: Introdução à Lógica de ProgramaçãoLINGUAGEM DE MONTAGEM Convertendo em Assembly • Observe o código a seguir escrito em JAVA: Introdução à Programação AULA 01: Introdução à Lógica de ProgramaçãoLINGUAGEM DE MONTAGEM Convertendo em Assembly • Observe o código a seguir escrito em JAVA: Bne $s3, $s4, Else Introdução à Programação AULA 01: Introdução à Lógica de ProgramaçãoLINGUAGEM DE MONTAGEM Convertendo em Assembly • Observe o código a seguir escrito em JAVA: Bne $s3, $s4, Else add $s0, $s1, $s2 Introdução à Programação AULA 01: Introdução à Lógica de ProgramaçãoLINGUAGEM DE MONTAGEM Convertendo em Assembly • Observe o código a seguir escrito em JAVA: Bne $s3, $s4, Else add $s0, $s1, $s2 J Exit; Introdução à Programação AULA 01: Introdução à Lógica de ProgramaçãoLINGUAGEM DE MONTAGEM Convertendo em Assembly • Observe o código a seguir escrito em JAVA: Bne $s3, $s4, Else add $s0, $s1, $s2 J Exit; ELSE: sub $s0, $s1, $s2 Exit: Introdução à Programação AULA 01: Introdução à Lógica de ProgramaçãoLINGUAGEM DE MONTAGEM Convertendo em Assembly • Observe o código a seguir escrito em JAVA: Bne $t1, $t0, Else add $t2,$t1, $t0 li $v0,4 #carrega os dados para um registrador la $a0,resultado syscall j: Else: sub $t2,$t1, $t0 li $v0,4 #carrega os dados para um registrador la $a0,resultado1 syscall Exit: Conversão Introdução à Programação AULA 01: Introdução à Lógica de ProgramaçãoLINGUAGEM DE MONTAGEM Atividade I Implemente um algoritmo em Assembly para imprimir os meses a partir da informação de entrada do usuário(Ex. Caso o usuário informe o 1 deverá ser impresso Janeiro, caso seja 2, deverá ser impresso Fevereiro, e assim por diante). Utilize o desvio condicional BEQ. Introdução à Programação AULA 01: Introdução à Lógica de ProgramaçãoLINGUAGEM DE MONTAGEM Atividade II Implemente um algoritmo em Assembly para imprimir os dias da semana a partir da informação de entrada do usuário(Ex. Caso o usuário informe o 1 deverá ser impresso Domingo, caso seja 2, deverá ser impresso Segunda, e assim por diante). Utilize o desvio condicional BNE. Introdução à Programação AULA 01: Introdução à Lógica de ProgramaçãoLINGUAGEM DE MONTAGEM Atividade III Implemente um algoritmo em Assembly que imprima na tela um numero inteiro qualquer. Introdução à Programação AULA 01: Introdução à Lógica de ProgramaçãoLINGUAGEM DE MONTAGEM Atividade IV Implemente um algoritmo em Assembly que imprima na tela um numero float qualquer. Introdução à Programação AULA 01: Introdução à Lógica de ProgramaçãoLINGUAGEM DE MONTAGEM Atividade V Implemente um algoritmo em Assembly que imprima na tela um numero Double qualquer. Introdução à Programação AULA 01: Introdução à Lógica de ProgramaçãoLINGUAGEM DE MONTAGEM Atividade VI Implemente um algoritmo em Assembly que imprima na tela uma String ou Char. Introdução à Programação AULA 01: Introdução à Lógica de ProgramaçãoLINGUAGEM DE MONTAGEM Dica Introdução à Programação AULA 01: Introdução à Lógica de Programação Bibliografia Básica LINGUAGEM DE MONTAGEM GIMENEZ, Salvador Pinillos. Microcontroladores 8051: Teoria do hardware e do Software/Aplicações em controle digital/Laboratório e simulação [BV:PE]. 1 ed. São Paulo: Pearson Education do Brasil, 2002. Disponível em: https://plataforma.bvirtual.com.br/Acervo/Publicacao/471 MONTEIRO, Mario A. Introdução à organização de computadores [BV:MB]. 5 ed. Rio de Janeiro: LTC, 2017. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/978-85-216-1973- 4/recent STALLINGS, William. Arquitetura e Organização de Computadores: projeto para o desempenho [BV:PE]. 10 ed. São Paulo: Prentice-Hall, 2017. Disponível em: https://plataforma.bvirtual.com.br/Acervo/Publicacao/151479 Introdução à Programação AULA 01: Introdução à Lógica de Programação Bibliografia Complementar LINGUAGEM DE MONTAGEM ASCENCIO, A. F. G; CAMPOS, E. A. V. FUNDAMENTOS DA PROGRAMAÇÃO DE COMPUTADORES: Algoritmos , Pascal, C/C++ e Java [BV:PE]. 2 ed. São Paulo: Prentice-hall, 2007. Disponível em: https://plataforma.bvirtual.com.br/Acervo/Publicacao/417 BALIEIRO. Sistemas Operacionais [BV:RE]. 1 ed. Rio de Janeiro: SESES, 2015. Disponível em: http://api.repositorio.savaestacio.com.br/api/objetos/efetuaDownload/80fea820-1cb5- 4982-863f-25f09adbdd0c GUIMARÃES, Carlos Henrique. Sistemas de Numeração - Aplicação em Computadores Digitais [BV:PE]. 1 ed. Rio de Janeiro: Interciência, 2014. Disponível em: https://plataforma.bvirtual.com.br/Acervo/Publicacao/37688 POLLI, MarcoF.Organização de Computadores [BV:RE]. 1 ed. Rio de Janeiro: SESES, 2014. Disponível em: http://api.repositorio.savaestacio.com.br/api/objetos/efetuaDownload/e96bc69e-73ca- 4147-997d-14b601acb8d5 TANENBAUM, A.S.; AUSTIN, T.Organização Estruturada de Computadores [BV:PE]. 6 ed. São Paulo: Pearson, 2013. Disponível em: https://plataforma.bvirtual.com.br/Acervo/Publicacao/3825 Introdução à Programação AULA 01: Introdução à Lógica de Programação Créditos LINGUAGEM DE MONTAGEM Prof. André Luis M. Silva Adaptado por: Hilson Silva
Compartilhar