Você está na página 1de 7

CENTRO FEDERAL DE EDUCAO TECNOLGICA

DE MINAS GERAIS

ENGENHARIA ELTRICA
LABORATRIO DE SISTEMAS MICROPROCESSADOS
PROF. JOEL AUGUSTO DOS SANTOS






RELATRIO DE ATIVIDADES TCNICAS (RAT)
OPERAES DE DECISO E USO DOS FLAGS




caro Veloso Soares
Lucas Martins de Faria
Thiago Lucas de Oliveira




Belo Horizonte
2013
CENTRO FEDERAL DE EDUCAO TECNOLGICA
DE MINAS GERAIS

ENGENHARIA ELTRICA
LABORATRIO DE SISTEMAS MICROPROCESSADOS
PROF. JOEL AUGUSTO DOS SANTOS






RELATRIO DE ATIVIDADES TCNICAS (RAT)
OPERAES DE DECISO E USO DOS FLAGS




Relatrio de Atividade Tcnica
apresentado disciplina de
Laboratrio de Sistemas
Microprocessados.





Belo Horizonte
2013

1. QUESTES PROPOSTAS
1 Determinar se uma palavra localizada a partir do endereo 0200H
corresponde ou no a um palndromo. O fim da palavra sempre indicado pelo
terminador $. O programa dever gerar um sinalizador de sada no registrador
R10 a partir do resultado da anlise:
R10 =FFH -> a palavra um palndromo;
R10=00H -> a palavra no um palndromo.
Palndromos so palavras ou frases que podem ser lidas da esquerda para a
direita ou da direita para a esquerda. A palavra palindrmica mais extensa do
nosso idioma o superlativo de omisso, OMISSSSIMO. So outros exemplos:
arara, osso, radar, rodador.
#include "msp430.h" ; #define controlled
include file
NAME main ; module name
PUBLIC main ; make the main label
vissible
; outside this module
ORG 0FFFEh
DC16 init ; set reset vector to
'init' label
RSEG CSTACK ; pre-declaration of
segment
RSEG CODE ; place program in
'CODE' segment
init: MOV #SFE(CSTACK), SP ; set up stack
main: NOP ; main program
MOV.W #WDTPW+WDTHOLD,&WDTCTL ; Stop watchdog timer
MOV.W #0200H,R4 ;R4 tem o mesmo
endereo de 0200
MOV.W R4,R5 ;R5 uma copia de R4
INICIO:
CMP.B #0x24,0(R5) ;compara uma posiao de
memoria com o $
JZ PROGRAMA ;se a posiao apontada
por R5 for igual a posio de $,
;comea o codigo
PROGRAMA
INC R5 ;se for diferente de 0,
0(R5) aponta para a proxima posio
JMP INICIO ;volta para o INICIO

PROGRAMA:
DEC R5 ;retorna uma posio
MOV.W #0000H,R10 ;palavra nao
palindrome
INICIO2:

CMP.B 0(R4),0(R5) ;compara ao pares os
valores presentes nos endereos
JNZ PROGRAMA2 ;se for diferente de
zero vai para PROGRAMA2,se nao continua
MOV.W #00FFH,R10 ;numero palindroma
CMP.B R4,R5 ;para palindromo com
quantidades de numeros pares
JN PROGRAMA2 ;se for negativo pula
para o final,ou seja, se o endereo de...
;R5>R4 para o
processamento e palindromo, se nao, continua
MOV.W #00FFH,R10 ;numero palindromo
CMP.B R4,R5 ;para palindromo com
quantidades de numeros impares
JZ PROGRAMA2 ;se for zero pula para
PROGRAMA2
INC R4 ;inclementa o endereo
de R4
DEC R5 ;decrementa o enderep
de R%

JMP INICIO2
PROGRAMA2:
JMP $ ; jump to current
location '$'
; (endless loop)
END

2 Ordenar um conjunto de nmeros localizados a partir do endereo 0200H
de memria. Os nmeros devem ocupar o mesmo espaamento de memria
aps a ordenao. O programa deve verificar um sinalizador de entrada no
registrador R8.
R8=00H -> ordenar em ordem crescente;
R8=FFH-> ordenar em ordem decrescente.
R4 contm a quantidade de nmeros a serem ordenados.
#include "msp430.h" ; #define controlled include file

NAME main ; module name

PUBLIC main ; make the main label vissible
; outside this module
ORG 0FFFEh
DC16 init ; set reset vector to 'init' label

RSEG CSTACK ; pre-declaration of segment
RSEG CODE ; place program in 'CODE' segment

init: MOV #SFE(CSTACK), SP ; set up stack

main: NOP ; main program
MOV.W #WDTPW+WDTHOLD,&WDTCTL ; Stop watchdog timer

MOV #0x00, R8 ; teste da ordem decrescente (modificar
para testar decrescente)

INICIO:
MOV.B #0x0000, R9 ; sinaliza se houve inverso na
sequencia
MOV.W #0FH,R4 ; Quantidade de nmeros (exemplo, 5
nmeros)
MOV.W #0200H,R5 ; incio do ciclo em R5
MOV.W #0200H,R6 ;
ADD.W R4,R6 ; final do ciclo em R6
MOV.W R5,R10
INC R10 ; R10 ir correr desde o endereo de R5 at o
final em R6
PROGRAMA:
CMP #0x00, R8 ; verifica se ordem crescente ou
decrescente
JZ COMPMENOR
CMP.B 0(R10),0(R5)
JL INVERSAO ; se o valor do endereo R10 for MAIOR que
o do endereo R5, ocorre inverso os valores
JMP SALTO

COMPMENOR:
CMP.B 0(R5),0(R10)
JL INVERSAO ; se o valor do endereo R10 for MENOR que
o do endereo R5, ocorre inverso dos valores nos endereos
SALTO:
INC R5
INC R10
CMP R5,R6 ;verifica se chegou no ltimo endereo
JZ verificaFINAL
JMP PROGRAMA
INVERSAO:
MOV.B 0(R5),R11 ;R11 um registrador intermedirio
MOV.B 0(R10),0(R5)
MOV.B R11,0(R10)
MOV.B #0x00FF, R12 ;houve inverso
JMP SALTO

verificaFINAL:
CMP.B #0x00,R12 ; caso no tenha ocorrido inverso na
varredura, durante a verificao , acaba o programa
JZ FIM
JMP INICIO
FIM:
JMP $

END

3 Desenvolver uma rotina que converta uma frase escrita em minscula em
maiscula.
Parmetros da rotina:
Incio da frase: endereo 0200H
Terminador da frase: caractere $
Obs: consultar a tabela ASCII para a resoluo da proposta.

Nessa questo, devemos fazer uma varredura nos dados (comparao),
partindo de #0x200 at onde se encontra do $ (#0x24). Feito isso cada dado
armazenado nas posies de #0x200 at a anterior a $ dever ser subtrado
por um fator de 20 em decimais, esse fator realiza a converso do caractere
minsculo em maisculo.
#include "msp430.h" ; #define controlled include file

NAME main ; module name
PUBLIC main ; make the main label vissible
; outside this module
ORG 0FFFEh
DC16 init ; set reset vector to 'init' label

RSEG CSTACK ; pre-declaration of segment
RSEG CODE ; place program in 'CODE' segment
init: MOV #SFE(CSTACK), SP ; set up stack
main: NOP ; main program
MOV.W #WDTPW+WDTHOLD,&WDTCTL ; Stop watchdog timer
MOV.W #0200H,R4 ;mover o endereo 0200H para R4
MOV.W R4,R5 ;move o endereo de R4 para R5
INICIO:
CMP.B #0x24,0(R5) ;compara o dado em R5 com #0x24
JZ PROGRAMA ;se igual, salta para PROGRAMA
;se diferente:
INC R5 ;incrementa R5
JMP INICIO ;reexecuta o loop INICIO

PROGRAMA:
DEC R5 ;decrementa R5

INICIO2:
SUB.B #32,0(R4) ;subtrai o dado em R4 de #32 (20)
INC R4 ;incrementa R4
CMP.B R4,R5 ;compara R4 com R5 bit-a-bit
JN PROGRAMA2 ;se negativo (N=1), salta para PROGRAMA2
JMP INICIO2;se positivo (N=0), reexecuta o loop INICIO2
PROGRAMA2:
JMP $ ; jump to current location '$'
; (endless loop)
END

REFERNCIAS BIBLIOGRFICAS
PEREIRA, F. Microcontroladores MSP430 Teoria e Prtica. rica.
2005.
SILVA, Rosngela Ftima da, et al. Laboratrio de Sistemas
Microprocessados. CEFET-MG. 2013.

Você também pode gostar