Buscar

Roteiro 02 - Linguagem Assembly - Desvio condicional

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

Continue navegando