Você está na página 1de 77

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS

o
Departamento de Ensino do 2 grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Laboratrio de
Sistemas
Microprocessados
Parte I
AUTORES:
1 verso
Prof. Hrcules M. Carvalho
Prof. Joel Augusto dos Santos
Prof. Jos Jonas da Silva Maia
Prof. Marcos Antnio da Silva Pinto
2 verso 2001
Prof. John Kennedy Schettino de Souza
Prof. Marcos Antnio da Silva Pinto
Prof. Paulo Srgio Roque
3 verso 2003/ 4 verso 2004
Prof. John Kennedy Schettino de Souza
Prof. Marcos Antnio da Silva Pinto
Profa. Rosngela Ftima da Silva
5verso 2010
Profa. Rosngela Ftima da Silva
6 verso 2012
Prof. Marcos Antonio da Silva Pinto
Profa. Rosngela Ftima da Silva
7 verso 2013
Prof. John Kennedy Schettino de Souza
Prof. Marcos Antonio da Silva Pinto
Profa. Rosngela Ftima da Silva

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

NDICE
Introduo

02

Aula Prtica 01
 Ambiente de programao da IAR Systems

04

Aula Prtica 02
 Instrues de carga e transferncia de 8 bits

18

Aula Prtica 03
 Instrues de carga e transferncia de 16 bits

22

Aula Prtica 04
 Operaes lgicas e aritmticas

26

Aula Prtica 05
 Codificao de programa a partir de um fluxograma

30

Aula Prtica 06
 Instrues de desvio

34

Aula Prtica 07
 Subrotinas

38

Aula Prtica 08
 Programas

43

Aula Prtica 09
 Dispositivo de sada

45

Apndice A Tabela ASCII

50

Apndice B Conjunto de Instrues

52

Referncias Bibliogrficas

78

CEFET-MG

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

INTRODUO
Carssimos alunos,
Como se pode observar na capa desta apostila,
apostila existem
em vrias verses
verses. Isto
significa que estamos, cada vez mais, tentando melhorar o material que voc utiliza.
Parte destas verses devido a mudanas da tecnologia. Mas o que nos move o
desejo de que
ue esta apostila seja a melhor possvel,, portanto gostaramos que vo
voc
prestasse muita ateno em tudo que a partir
partir deste momento vamos oferecer e nos
ajude nesta misso. Talvez assim consigamos atingir nossos objetivos.
Esta apostila tem como p
pblico alvo estudantes da rea de sistemas digitais de
cursos tcnicos (2 grau) e de cursos
rsos superiores. Esta se destina a disciplinas com
durao de dois semestress (60 horas aula) com vistas a fornecer roteiros de aulas
prticas para o aprendizado das estruturas internas da famlia de microcontroladores
MSP 430 fabricado pela Texas Instruments.
Ins
A primeira aula (prtica 1) um tutorial
para a familiarizao com o ambiente de programao da IAR Systems (empresa
que desenvolveu o software).
software) As prticas dois at oito se destinam ao aprendizado
da programao Assembly,
ssembly, uso do conjunto de instrues
instrues do microcontrolador,
estruturas de repetio e sub
sub-rotina, sendo usado o ambiente de programao em
modo simulao. Da prtica nove em diante so utilizados as portas de entrada e
sada do microcontrolador e passa-se
passa
a usar o ambiente de programa
programao em modo
de emulao,, sendo ento necessrio o hardware do MSP430.
MSP430
Este material tem foco na linguagem Assembly, que adequada para o estudo
do hardware de sistemas digitais.
digitais Isto significa que necessrio que se conhea o
hardware do processador para program-lo. Desta forma o desenvolvimento deste
material pr supe o conhecimento concomitante do hardware utilizado.
No mais, desejo a todos um bom aproveitamento.
Atenciosamente,
Rosngela Ftima da Silva e Marcos A. S. Pinto

CEFET-MG

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Prtica 1 - Ambiente
integrado
desenvolvimento da IAR Systems

de

OBJETIVO
 Introduzir o ambiente integrado de desenvolvimento da IAR Systems
(IDE - Integrated Development Environment
Environment)
 Construo de programas
1.1 - INTRODUO
O desenvolvimento de programas em linguagem Assembly
ssembly exige no apenas o
conhecimento de um ambiente de programao, mas tambm do processador em
questo. A Texas Instruments desenvolveu a famlia de microcontrolador
microcontroladores MSP430.
Cada membro desta famlia possui em seu chip alm de um microprocessador,
outros
utros dispositivos acoplados como memria de programa, memria de dados e
vrios dispositivos perifricos
perifricos, que o objeto do nosso estudo. A IAR System a
responsvel pelo desenvolvimento
desenvolviment do software que ser utilizado ao longo deste
curso.
O processo de criao de um programa em Assembly
ssembly muito parecido com o
processo de criao de programas em linguagem C, Observe a seqncia na Figura
1, apresentada a seguir:

Edio

Montagem

Linkedio

Depurao

Figura 1 - Procedimento para criao de um programa.


programa

A edio consiste na digitao


digitao, de todos os mnemnicos pertencentes ao
programa, utilizando um editor de texto tipo ASCII. Neste estgio o programa est
em linguagem Assembly
ssembly e conhecido como cdigo fonte.
A montagem a traduo do texto digitado (mnemnicos) para o respectivo
cdigo de mquina da CPU. Caso seja obtido sucesso nesta etapa ser gerado o
cdigo objeto. Caso haja erros, eles
e
sero
o relatados pelo programa montador. O
usurio dever ento corrigi
corrigi-los na edio e novamente fazer a montagem
montagem. Este
procedimento dever ser repetido at que no haja mais erros.
A linkedio faz a ligao das
d referncias (subrotinas
nas e variveis) entre vrios
cdigos objetos. Isto ocorre quando construmos programas
program s muito grandes que por
questo de projeto importante que o programa seja construdo em partes
separadas.
A depurao a etapa final do desenvolvimento do programa, se
servindo para
reparar defeitos de lgica. Esta etapa pode ser realizada de duas formas diferentes:
simulao ou emulao. No modo simulao o programa desenvolvido simulado,
bastando
o para isto apenas o computador. Porm no modo emulao, necessrio
CEFET-MG

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

alm do computador, o hardware do microcontrolador, pois neste caso o programa


realmente roda na mquina na qual ele foi projetado (no microcontrolador). Desta
forma a depurao muito mais precisa e efetiva, podendo ajudar a detectar
inclusive defeitos de conexo
nexo entre terminais do microcontrolador e dispositivos
externos.
Cada etapa acima mencionada realizada por um software especfico. Porm
o ambiente de desenvolvimento oferecido pela IAR Systems proporciona um
ambiente integrado para desenvolvimento de programas em linguagem Assembly, C
e C++, contendo os quatro softwares na mesma ferramenta. Desta forma o usurio
poder editar, montar, linkeditar
linked
e depurar seu programa no mesmo ambiente,
utilizando apenas um clique do mouse para trocar de tarefa. Mas necessrio criar
um workspace e um projeto antes de executar os passos mencionados
mencionados.
1.2 -

ATIVIDADES

1.2.1. - Explorando o IDE - ambiente integrado de desenvolvimento da IAR


Systems
Para abrir o programa IAR Embedded Workbench,, v ao boto Iniciar e
selecione as seguintes opes, sequencialmente: Todos os programas
programas, IAR
System, IAR Embedded Workbench kickstart, IAR Embedded Workbench,
Workbench
conforme se pode observar na Figura 2,, apresentada a seguir, ou cli
clique no cone
correspondente

na rea de trabalho.

Figura 2 - Janela de trabalho do Windows.

Quando clicar sobre a opo IAR Embedded Workbench, aparecer


aparecer a janela
de abertura do Embedded Workbench (Figura 3).

CEFET-MG

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Figura 3 - Janela de Incio do Embedded Workbench.


Workbench

Caso
aso esteja iniciando a tarefa de desenvolvimento do programa
programa, naturalmente
deve-se escolher a opo File no menu principal (lado superior esquerdo da tela)
tela e
nesta aba escolher a opo New sub opo Worspace, conforme a Figura 4.

Figura 4 - Opes apresentadas pela janela Embedded Workbench Startup.

Esta
a opo abre uma nova janela, que permite criar uma nova
a rea de trabalh
trabalho
(Figura 5). Uma rea de trabalho uma regio lgica destinada insero de
diversos projetos que apresentam aplicaes correlatas. Em nossas aulas prticas
estaremos escrevendo um nico projeto para cada rea de trabalho.
CEFET-MG

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Figura 5 Janela do novo workspace.

Um projeto rene um ou mais cdigos fontes do sistema que estamos


desenvolvendo e tambm importante para definies das caractersticas do
processador utilizao no projeto. Ao longo da montagem do projeto estes detalhes
ficaro mais claros. Para criar um novo projeto, selecione na barra do menu principal
a opo Project e em seguida a sub opo Creat New Project... (Figura
Figura 6).

Figura 6 Janela para criar um novo projeto.

Ser ento apresentada uma nova janela que permite escolher o tipo de
projeto. Como j foi dito,, iniciaremos os nossos estudos pela linguagem Assembly.
Portanto deve-se abrir a opo asm e selecionar o item asm (Figura 7
7).

CEFET-MG

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Figura 7 - Janela para a escolha do tipo de projeto.

Uma vez determinado o tipo de projeto a ser criado, o prximo passo salva
salvalo. Quando se salva um arquivo, naturalmente deve-se que escolher uma pasta. V
a Documentos, l existe uma pasta para a sua turma. Caso no exista, faa a
gentileza de cri-la.
la. Dentro desta pasta crie a sua pasta, de preferncia
preferncia com o seu
nome. Assim voc saber
r onde esto os seus arquivos. Agora crie uma nova
pasta, ela pode se chamar,
chamar por exemplo, AULA_01. Cada projeto que
criarmos, ter uma pasta exclusiva para ele.

Ateno:
 Todos os seus arquivos devem estar dentro de uma nica pasta com
o seu nome.
 Crie uma pasta exclusiva para cada projeto,, ou seja, para cada novo
programa que voc vai implementar.
A janela Salvar como,
como, que surgiu na tela, lhe d a opo de escolher o nome
do projeto. Observe, neste caso, foi salvo na pasta AULA_01 o projeto com o nome
PRJ_01, Figura 8.

CEFET-MG

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Figura 8 - Janela Salvar como.

Enfim, surgiu na tela o editor de texto, Figura 9, onde se pode digitar o


programa.

Figura 9 - Janela com workspace e o editor de texto.

A janela apresentada anteriormente possui duas partes bsicas: a janela


Workspace,, que contm o projeto recm-criado,, bem como os arquivos
pertencentes a ele e a janela asm.43*, que contm o cdigo fonte.

CEFET-MG

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Agora digite
igite o seguinte cdigo a partir da linha onde est escrito ;Insira o seu
programa aqui (Figura 9).
MOV.B

#0xAA,R4

;IMEDIATO > REGISTRO

MOV.B

R4,R5

;REGISTRO > REGISTRO

MOV.B

R5,&0x200

;REGISTRO > MEMRIA

MOV.B

&0x200, &0x201

;MEMRIA > MEMRIA

MOV.B

&0x201
&0x201,R6

;MEMRIA > REGISTRO

Uma vez digitado o programa necessrio salv


salv-lo.
lo. V ao menu principal e
selecione a opo File e em seguida Save Workspace. Surgir janela Save
Workspace As, Figura 10.

Figura 10 - Janela para salvar o Workspace.

Escolha um nome para o workspace e salve. Neste caso foi escolhido o nome
no
AREA_01.
Agora hora de verificar se o cdigo digitado est correto e tra
transform-lo em
cdigo de mquina utilizando os processos de montagem e linkedio.
linkedio Entretanto,
para que tenhamos sucesso necessrio selecionar para qual componente da
famlia MSP430 estamos escrevendo o programa. Marque na janela Workspace o
nome do projeto que est sendo construdo (Aula_01 Debug). Selecione no menu
principal a opo Project>Options (Alt F7).
Na Figura 12 selecione a aba General Options e verifique se o MSP
selecionado o 430F149 na caixa de opo Device. Caso contrrio clique no cone
a direita do MSP selecionado, para que sejam listados todos os MSPs suportados
pela verso atual do ambiente IAR instalado. Em seguida seleciona o MSP430F149.
Com o modelo de MSP selecionado clique na aba Debugger ((Figura 13) e
confira se na caixa de dilogo Driver est selecionado o modo simulao.
CEFET-MG

10

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Figura 11 - Preparao para seleo do tipo de MSP430.

Figura 12 - Janela de configurao do MSP.

CEFET-MG

11

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Figura 13 - Selecionado modo simulao.

Com o MSP selecionado podemos executar os processos de montagem e


linkedio. No
o menu principal selecione a opo Project e clique sobre Make ou
pressione a tecla F7, ou ainda pode-se
pode
clicar no cone Make
que aparece na
linha logo abaixo do menu principal.
principal Com os processos de montagem e linkedio
concludos,, o seu ambiente de trabalho deve estar
star com a aparncia da Figura 14.

Figura 14 - Janela do Workspace,


Workspace, do editor de texto e mensagens do linkeditor.
CEFET-MG

12

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Observe que na parte inferior da tela apareceram algumas informaes


referentes ao processo de montagem
m
do programa, aba Messages. Neste caso no
foram encontrados erros de sintaxe (Total
(
number of errors: 0)) e nem avisos de
alerta (Total numberr of warnings: 0). As warnnigs ao contrrio dos erros sintaxe no
impedem a execuo do programa,
programa apenas indica a possibilidade da ocorrncia de
falha na execuo do programa.
Se houver algum erro no seu programa, uma mensagem de erro aparecer
nesta aba, descrevendo resumidamente o erro.
erro. Se voc der um duplo clique sobre a
mensagem, o cursor ser imediatamente movido para o ponto onde se encontra o
erro. Aps corrigir o erro, basta clicar novamente sobre o cone
ou pressionar a
tecla F7 para que o processo de montagem ocorra novamente. Quando no houver
mais erros o programa poder ser executado.
Agora resta simular a execuo do programa. Em outras palavras, fazer de
conta que o programa est sendo executado. Isso porque o simulador u
um
programa que nos permite rodar um cdigo escrito para um processador, indicando
o que aconteceria caso ele existisse de fato.
fato. Para carregar o programa no ambiente
de simulao, v ao menu principal, selecione a opo Project e clique sobre
Download and Debug,, ou pressione as teclas CTRL + D,, ou ento clique sobre o
cone
, disponvel na barra de ferramentas do Embedded Workbench. Um novo
ambiente, o modo depurao, disponibilizado, veja a Figura 15:

Figura 15 - Ambiente de depurao.

Observe a janela adicional de Disassembly que foi aberta no lado direito da


tela. Nela est exibido o contedo da memria de programa do processador, no
formato hexadecimal intercalado com o cdigo-fonte
cdigo
original.

CEFET-MG

13

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Uma nova barra de ferramentas


ferramentas,, a barra de depurao, tambm foi adicionada.
Essa barra
rra disponibiliza vrios botes para o usurio interagir com o programa em
simulao, permitindo a execuo do programa de forma: contnua e passo a passo
com possibilidade de rein
incio, parada e etc. Os botes
otes da barra de ferramenta de
depurao esto apresentados
sentados na Figura 17.
possvel acrescentar novas janelas neste ambiente.
ambiente. V ao menu principal,
clique sobre o boto View e observe a lista de opes. Selecione a opo Register
e repita este procedimento selecionando a opo Memory. Em seguida feche as
janelas Dissambly e Messages.
Messages. Aps estas alteraes a tela de depurao ficar
como apresentado na Figura 16. As janelas Register e Memory,, geralmente, so as
mais utilizadas
adas em nossas aplicaes
aplicaes.

Figura 16 - Ambiente para depurao com as janelas Register e Memory


Memory.

Observe na Figura 16 que na janela de depurao (asm.s43) existe uma tarja


verde sobre uma linha
a de cdigo.
cdigo a indicao da prxima linha de
e programa a ser
executada. Agora basta voc escolher uma das opes de execuo do programa
na barra de ferramentas (Figura
Figura 17) e verificar
erificar a simulao do mesmo.
mesmo

CEFET-MG

14

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Reset - Reinicia
einicia o programa.
programa
Break - Pra
ra a execuo do programa
programa.
xecuta a prxima instruo, se for uma chamada de
Step Over - Execut
sub-rotina,, ela inteiramente executada em nico passo e o ccursor
retorna para a instruo aps a chamada.
chamada
Step Into - Executa
xecuta a prxima instruo. Se for uma chamada de
sub-rotina,
rotina, entra na sub-rotina.
su
Step Out - Executa o programa at o trmino da sub-rotina
rotina atual
Next Statement - Pula para o prximo comando, o atual
executado sem a visualizao do depurador
Run to Cursor - Executa o programa at o ponto em que encontra
o cursor
Go - Executa o programa at um ponto de parada (breakpoint) ou o
trmino do programa
Toggle Breakpoint - Cria/apaga um ponto de parada (breakpoint)
Stop Debugging - Sada do modo de depurao
Figura 17 - Botes da barra de ferramentas de depurao.

CEFET-MG

15

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Ateno:
 As opes de execuo de programas presentes na barra de
ferramentas de depurao,
depurao mostradas na Figura 17,, podem ser acessadas
atravs da seleo do boto Debug no menu principal.

1.2.2. Teste todos os botes


botes da barra de ferramentas de depurao
depurao.

Dica:
Dica:
 Se voc no observar diferenas
diferena entre alguns deles, fique ligado,
pois apenas uma questo de tempo.
 NO se esquea de salvar os seus arquivos no seu pen drive, ao
final de todas as aulas.
aulas

CEFET-MG

16

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Pontos de checagem
Criar projeto.
No possvel carregar um
programa no MSP sem que se tenha
criado um arquivo projeto.. Os passos
para criao do projeto esto
descritos na prtica01.

Passos
Abrir um Workspace.
Criar uma nova pasta para cada novo
projeto.
Salvar arquivo.
Definir modelo do MSP.
Definir para modo simulao.

Editar e compilar programa.


Todo programa passa pelas fases de
edio do cdigo fonte e pela
traduo no respectivo cdigo de
mquina.
Carregar programa no simulador.

Editar o programa.
Montar o programa.
Identificar erros de sintaxe indicados pela
montagem.
Corrigir erros.
Carregar programa no simulador e em caso
de falhas:
Verificar de modelo do MSP foi selecionado
corretamente.
Verificar se o IAR est em modo simulao.
Executar o programa com a opo Go ( ).
Verificar se a lgica programada foi
realizada corretamente.

Para a execuo do programa


necessrio entrar no modo
simulao do IAR.
Rodar programa no simulador.
Aps a execuo do programa devedeve
se verificar se o mesmo est
realizando o que projetado.
Investigar erros de funcionamento
do programa no simulador.
A realizao das etapas anteri
anteriores
no garante a inexistncia de erros
lgicos.

Rodar o programa passo a passo ((Figura


17).
Inserir break points para avaliar se o
programa est sendo executado
corretamente at um determinado ponto.
Inserir janelas auxiliares para avaliao do
contedo das variveis utilizadas no
programa (Figura 16).

Ateno:
 O seu desenvolvimento no processo de depurao de programa to
importante quanto o prprio processo de construo de um novo
programa.
 Desta forma fundamental conhecer os recursos de depurao de
programa que a ferramenta de desenvolvimento lhe oferece.

CEFET-MG

17

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Prtica 2 - Instrues
transferncia de 8 bits

de

carga

OBJETIVO
 Estudar as instrues
nstrues de carga e transferncia de 8 bits
 Familiarizao
zao com os registros de uso geral do MSP430
2.1 -

INTRODUO

Na aula anterior, voc executou a maioria das instrues de transferncia de


oito bits existentes no conjunto de instrues do MSP430.
MSP
. E tambm aprendeu a
elaborar seus programas usando o ambiente de programao da IAR System.
Vamos agora
ra aproveitar o projeto elaborado na aula anterior e estudar mais
atentamente as instrues de carga
carg e transferncia de oito bits.
COMO CARREGAR UM PROJETO
PROJ
J EXISTENTE
Basta abrir o ambiente de programao da IAR System e clicar sobre o bot
boto
File no menu principal, opo Open, sub-opo Workspace.. Aparecer uma janela
contendo a rvore de diretrios, onde se deve localizar a pasta que contm o
Workspace desejado (Figura
Figura 18). Ateno o Workspace tem extenso
extenso.eww
Talvez, voc no se lembre de como abrir o IAR System. Ento consulte o item
1.2 da apostila onde descrito este procedimento.

Figura 18 - Janela para abrir o Workspace.

CEFET-MG

18

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

INSTRUES DE CARGA E TRANSFERNCIA DE 8 BITS


Estas instrues movem o contedo do operando fonte para o operando
destino. Sintaxe: instruo fonte, destino
destino, exemplo: MOV R4, R15.
Todos os registros do MSP so de dezesseis bits ().. Mas possvel carregar,
transferir e executar operaes lgicas e aritmticas com apenas oito bits. Neste
caso, basta acrescentar o sufixo .B

na instruo, exemplo: MOV.B. Se voc omitir


esse detalhe ou colocar o sufixo .W, a instruo realizada ser de dezesseis bits:
MOV.W ou apenas MOV.
Contador de programa
Apontador de Pilha
Registro de status
Gerador de constante
Gerador de constante
Registro de uso geral
.
.
Registro de uso geral

(PC)
(SP)
(SR)
(CG1)
(CG2)

R0
R1
R2
R2
R3
R4
.
.
R15

Tabela 1 - Registros da CPU do MSP430.

Ateno:
 O MSP possui
ossui 12 registros de uso geral: R4 a R15. Eles podem ser
usados em suas aplicaes habituais: transferncia de dados, operaes
lgicas, aritmticas, jumps e etc. Eles armazenam dados ou endereos
endereos.
 As operaes de 8 bits com destino em registro so executadas
apenas com a parte menos significativa dos registros,, sendo a parte mais
significativa zerada.
 Operaes de 8 bits com destino em memria altera apenas o
endereo especificado. Porm operaes de 16 bits em memria deve
devem ter
endereo par, sendo o byte menos significativo enviado para o endere
endereo
especificado (par) e o byte mais significativo ocupa o endereo seguinte.

CEFET-MG

19

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

2.2 -

ATIVIDADE
ATIVIDADES

2.2.1. Execute passo a passo o programa da aula anterior e preencha a Tabela


2.
Instrues

MOV.B 0AAH,R4

MOV.B R4,R5

MOV.B R5,&200H

MOV.B &200H,&201H

MOV.B &201H, R6

Reg/Mem
R4
R5
R6
(200H)
(201H)

Tabela 2 - Contedo corrente de registros e posies de memria


memria.

Dica:
Dica:
 Para executar o programa passo a passo, entre no
o modo
m
simulao
( ) e pressione a tecla F10 ou o cone
para executar cada linha do
programa.. Consulte a Figura 17.
 Para ver os registros, vv
ao menu principal, clique sobre o boto
View e selecione a opo Register.
 Para ver a memria, clique sobre boto View no menu principal e
selecione a opo Memory.
Memory Na janela da memria, na aba Go to digite o
endereo desejado: 0x200 e tecle enter.
2.2.2. Abra uma nova pasta (Aula_02) e construa um novo projeto para testar as
seguintes instrues:
MOV.B

#0AAH,R4

;IMEDIATO > REGISTRO

MOV.B

#0BBH,R5

;IMEDIATO > REGISTRO

MOV.B

R4,R6

;REGISTRO > REGISTRO

MOV.B

R5,R4

;REGISTRO > REGISTRO

MOV.B

R6,R5

;REGISTRO > REGISTRO

O que ocorreu com os valores carregados nos registros R4 e R5?

Porque foi usado o registro R6?

CEFET-MG

20

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

2.2.3. Construa
onstrua um novo projeto para testar as seguintes instrues:

MOV.W

#0x200, R4

;Modo imediato

MOV.W

#0x201, R5

;Modo imediato

MOV.B

#0xCC, &0x200

;Modo imediato

MOV.B

#0xDD, &0x201

;Modo imediato

MOV.B

0(R4), R6

;Modo indexado

MOV.B

0(R5), 0(R4)

;Modo indexado

MOV.B

R6, 0(R5)

;Modo indexado

MOV.B

@R5, R10

;Modo indireto

Qual a diferena entre as seguintes instrues:


a) MOV.B R5,R4

b) MOV.B 0(R4
R4), R6

MOV.B 0(R5),0(R4)
e

MOV.B @R4, R6

O que foi armazenado nos registros R4 e R5, dados ou endereos?


endereos

O que ocorreu com o contedo das posies de memria 0x200 e 0x201?

Explique o funcionamento do programa.

2.2.4. Elabore um programa que troque entre si o contedo da posio de


memrias 200H e do registrador R5. Teste o programa.

CEFET-MG

21

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Prtica 3 - Instrues
transferncia de 16 bits

de

carga

OBJETIVO
 Estudar as instrues
nstrues de carga e transferncia de 16 bits
 Aplicao de registros especiais de 16 bits
3.1.

INTRODUO

Voc j estudou todas as instrues de carga e transferncia


ncia de 8 bits. Isto
significa que voc j conhece as instrues de carga
ga e transferncia de 16 bits, u
uma
vez que a nica diferena o nmero de bits transferidos. Agora, temos
emos que prestar
muita ateno em alguns registros que so utilizados apenas em op
operaes de 16
bits: o contador de programa (PC) e o ponteiro da pilha (SP).
INSTRUES
ES DE CARGA E TRANSFERNCIA DE 16 BITS
O Contador de Programa (PC) e o Ponteiro da Pilha (SP) armazenam apenas
endereos de posio de memria,
memria, portanto eles so utilizados em operaes de 16
bits. Esses registros (Tabela
Tabela 1) so controlados pela prpria CPU durante a
execuo de programas.. O mximo que podemos fazer inicializ-los.
los.
Na verso do IAR System que estamos usando, quando criamos um novo
projeto surge o editor de texto com algumas linhas de cdigos. Observe as duas
linhas seguintes:
ORG

0FFFEh

DC16

init

;set reset vector to


o 'init' label

Elas inicializam o Program Counter (PC) para voc. Observe que ao carregar o
programa no ambiente de simulao o PC sempre est com o valor de 0x1100
0x1100.
Observe tambm que aps a execuo de cada instruo, ele automaticamente
incrementado.
O Stack Pointer (SP) inicializado pela seguinte linha de cdigo:
init:

MOV

#SFE(CSTACK), SP ;set up stack

Agora est um pouquinho mais claro, pois a instruo MOV voc conhece e SP
representa o registro Ponteiro da P
Pilha. Esse registro automaticamente
incrementado
crementado ou decrementado, em situaes bem determinadas
rminadas que sero vistas
no decorrer deste curso.
CEFET-MG

22

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

3.2.

ATIVIDADE
ATIVIDADES

3.2.1. Abra uma nova pasta (Aula_03) e construa um novo projeto para testar as
seguintes instrues:
;Nmero da instruo
MOV.W

#0x1234
1234,R7

;1

MOV.W

#0x5678
5678,R8

;2

PUSH

R7

;3

PUSH

R8

;4

MOV.W

#0x00,R7

;5

MOV.W

#0x00,R8

;6

POP

R8

;7

POP

R7

;8

Execute o programa e preencha as


a colunas da Tabela 3 aps ter executado as
referidas instrues:
INSTRUES/

REG. e PILHA
PC
SP
R7
R8
R9
(09FFH)
(09FEH)
(09FDH)
(09FCH)

Tabela 3 - Contedo corrente de registros.

Descreva o que ocorreu com PC aps a execuo de cada instruo


instruo.

O que ocorreu com o SP e com a pilha quando foram executadas as


instrues PUSH?

CEFET-MG

23

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Descreva o que ocorreu quando foram executadas as instrues POP.

3.2.2. Construa
onstrua um novo projeto para testar as seguintes instrues:
; Nmero da instruo
MOV.W

#0
#0AAAAH,R10

;1

MOV.W

#0
#0BBBBH,R11

;2

PUSH

R10

;3

PUSH

R11

;4

POP

R10

;5

POP

R11

;6

Execute o programa e preencha as colunas da Tabela 4 aps ter executado as


referidas instrues:
INSTRUES/

REG. e PILHA
PC
SP
R10
R11
(09FFH)
(09FEH)
(09FDH)
(09FCH)

Tabela 4 - Contedo corrente de registros e memria.

Explique o que o programa faz

CEFET-MG

24

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

3.2.3. Construa
onstrua um novo projeto para testar as seguintes instrues:
; Nmero da instruo
MOV

#0xBBBB,R4

;1 - IMEDIATO > REGISTRO

MOV

R4,R5

;2 - REGISTRO > REGISTRO

MOV

R5,&0x200
,&0x200

;3 - REGISTRO > MEMRIA

MOV

&0x200, &0x202

;4 - MEMRIA > MEMRIA

MOV

&0x202
&0x202,R6

;5 - MEMRIA > REGISTRO

MOV

#0x202
202,R7

;6 - IMEDIATO > REGISTRO

MOV

0(R7),R8

;7 - MEMRIA > REGISTRO

Execute o programa e preencha as colunas da Tabela 5 aps ter executado as


referidas instrues:
INSTRUES/

REG. e PILHA
PC
R4
R5
R6
R7
R8
(0200H)
(0202H)

Tabela 5 - Contedo corrente de registros e memria.

Qual a diferena entre as seguintes instrues:

CEFET-MG

MOV

&0x202,R6

MOV

#0x202,R6

25

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Prtica 4 -

Operaes lgicas e aritmticas

OBJETIVO
 Estudar as instrues lgicas e aritmticas
 Anlise do registro de status do MSP
 Manipulao de nmeros binrios e hexadecimal
4.1.

INTRODUO

A CPU contm a Unidade Lgica e Aritmtica. Essa,, como o prpr


prprio nome diz,
responsvel pela realizao das operaes lgicas e aritmticas. Ela geralmente
utiliza os registros de propsito gerais e posies de memria como operandos d
das
operaes aritmticas (soma e subtrao) e lgicas (and, or, xor, etc)..
A maioria das operae
operaes lgicas e aritmticas afeta os flags
flags. Por isto
importante consultar o conjunto de instrues para saber como e quando os flags
so afetados. Os flags so bits que sinalizam o resultado das
d operaes lgicas ou
aritmticas. Eles so usados pela CPU para tomada de deciso (operaes de jump
condicional). Os flags existentes no MSP encontram-se localizados no Registro de
Status (SR) ocupando os seguintes bits:
bits
 C Carry (bit 0) sinaliza a ocorrncia de vai um nas operaes de
soma ou um pedido de emprstimo nas operaes de subtrao e
resetado em caso contrrio. Para a operao de soma caso ocorra vai o
flag C ligado, j para operao de subtrao caso haja vem um o flag
C desligado. Em algumas instrues lgicas (and e xor)
xor), ser setado
se o resultado
esultado for diferente de zero e resetado em caso contrrio.
 Z Zero (bit 1) ser setado caso o resultado de uma opera
operao seja
zero e resetado em caso contrrio.
contrrio
 N Negative (bit 2) ser setado se o resultado
ado de uma operao for
negativo e resetado
setado se positivo.
 V Overflow (bit 8) ser setado se no resultado de uma operao
aritmtica houver um estouro de capacidade da varivel sinalizada (erro
de sinal) e resetado em caso contrrio.

Dica:
Dica:
 necessrio consultar o conjunto de instrues do MSP para verificar
quais os flags que atuam aps a execuo de cada instruo e como
eles so afetados.
CEFET-MG

26

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

4.2.

ATIVIDADES

4.2.1. Resolva manualmente as seguintes operaes aritmticas anote o


resultado da operao e os
o respectivos flags na Tabela 6:
Instruo

Operao

Resultado

79 -79

57H + 4B H

160H AND 54F9H

45H 56H

8FH + 64H
Tabela 6 - Operaes lgicas e aritmticas.

4.2.2. Escreva em assembly o cdigo para testar as instrues apresentadas no


item anterior. Considere no cdigo de seu programa que as instrues so
operaes de BYTE exceto a instruo 3 que deve ser tratada como
WORD. Execute o programa e aproveite para verificar se os flags
sinalizados por voc esto corretos.
4.2.3. Analise o cdigo apresentado a seguir:
MOV.B

&0x200,R4

MOV.B

&0x201,R5

ADD.B

R4,R5

MOV.B

&0x200,R6

MOV.B

&0x201,R7

CLRC
DADD.B

CEFET-MG

R7,R6

27

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Digite no editor de texto do IAR System o programa.


Armazene nas posies de memria 200H e 201H os valores 35H e 47H
respectivamente.

Dica:
 Para inserir um contedo em um espao de memria RAM, siga os
seguintes passos:
a.

V ao ambiente de depurao.

b.

Acrescente a janela Memory.

c.
Clique com o boto esquerdo do mouse sobre a seta da
caixa de texto onde est escrito Memory e selecione RAM
RAM.
d.
Marque com o boto esquerdo do mouse a posio de
memria que voc deseja modificar e escreva o valor desejado por
cima.

Execute o programa e explique os valores contidos nos registros R5 e R6.

Explique a presena da instruo CLRC no programa.

Repita os itens 2 e 3 para os valores 49H e 67H.

4.2.4. Analise o cdigo apresentado a seguir:

MOV.W

#202H,R4

MOV.B

0(R4),R5

INC.W

R4

MOV.B

0(R4),R6

INC.W

R4

MOV.B

0(R4),R7

MOV.B

R5,R15

AND.B

R6,R15

INV.B

R15

XOR.B

R7,R15

INC.W

R4

MOV.B

R15,0(R4)

Digite no editor de texto do IAR System o programa.

CEFET-MG

28

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Armazene nas posies de memria 202H, 203H e 204H os valores CCH, BBH
e AAH respectivamente.

Execute o programa e anote os resultados na Tabela 7 obtidos aps executar


as seguintes instrues:
Instruo

R15

Anlise do resultado

AND.B R6,R15
INV.B

R15

XOR.B R7,R15
Tabela 7 - Operaes lgicas.

Represente atravs de um circuito lgico seu funcionamento.

4.2.5. Observe o circuito lgico da Figura 19.

Figura 19 Circuito lgico.

Faa um programa que simule o diagrama apresentado.

Teste o seu programa fazendo A = B1H e B = 83H.

CEFET-MG

29

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Prtica 5 - Codificao de
partir de um fluxograma

programa

OBJETIVO

Verificar a implementao de um programa em Assembly a partir de
um fluxograma;

5.1.

Estudar uma tomada de deciso em Assembly e

Desvio condicional e incondicional.

INTRODUO

Um programa nada mais do que uma lista de instrues que a CPU deve
executar na sequncia
ncia em que ela foi escrita. Porm a capacidade de tomada de
deciso oferecida
ecida pela CPU uma poderosa ferramenta que proporciona a escrita
de programas mais inteligentes. A tomada de deciso permite a realizao de
estruturas de repetio (loop), que reduz drasticamente as dimenses do programa.
Uma tomada de deciso obtida atravs da consulta de um dos flags
flags, pois eles so
os indicadores do estado corrente do programa. Dependendo do estado deste flag o
programa
a segue um caminho ou outro. Ela representada em um fluxograma por
um losango que permite que o programa siga por um de dois caminhos possveis
possveis,
como pode ser observado na Figura 20.
O fluxograma de uma rotina que faz a transferncia (cpia) de dados de um
bloco de memria para outro apresentada pela Figura 20, a seguir:
INCIO

DEFINIR O ENDEREO DO BLOCO DE ORIGEM


DEFINIR O ENDEREO DO BLOCO DE DESTINO
DEFINIR O TAMANHO DO BLOCO

TRANSFERIR UM BYTE
ATUALIZAR O ENDEREO DO BLOCO DE ORIGEM
ATUALIZAR O ENDEREO DO BLOCO DE DESTINO
ATUALIZAR O NMERO DE BYTES RESTANTES

TODOS OS
BYTES FORAM
TRANSFERIDOS?

V
FIM

Figura 20 Fluxograma de transferncia de dados.

Como se pode observar,


observar o fluxograma independe da linguagem de
programao e tambm no apresenta nenhum vnculo com a CPU utilizada. O
CEFET-MG

30

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

fluxograma revela apenas o procedimento, ou seja, revela o que ser feito e no


como ser feito.
O programa a seguir mostra a codificao do fluxograma da Figura 20,
considerando o bloco de origem armazenado a partir do endereo 200H e o de
destino a partir do endereo 220H sendo o tamanho dos blocos de 16 bytes.
PROGRAMA EM ASSEMBLY
;*********************************************************************************************************
;*********************************************************************************************************
; Descrio:: Este programa transfere dados de um bloco de memria para outro
outro.
;*********************************************************************************************************
#include "msp430.h"

; #define controlled include file

NAME

main

; module name

PUBLIC

main

; make the main label visible


; outside this module

init:

ORG

0FFFEh

DC16

init

; set reset vector to 'init' label

RSEG

CSTACK

; pre-declaration
declaration of segment

RSEG

CODE

; place program in 'CODE' segment

MOV

#SFE(CSTACK), SP

; set up stack

main: NOP

; main program

MOV.W

#WDTPW+WDTHOLD,&WDTCTL

; Stop watchdog timer

MOV.W

#200H,R4

; Apontador do bloco 1

MOV.W

#220H,R5

; Apontador do bloco 2

MOV.B

#10H,R6

; Tamanho do bloco

0(R4),0(R5)

; Transferir o dado

INC.W

R4

; Atualizar apontadores

INC.W

R5

DEC.B

R6

JNZ

volta

JMP

volta MOV.B

; Atualizar tamanho
; jump to current location '$'
; (endless loop)

END

CEFET-MG

31

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

5.2.

ATIVIDADES

5.2.1. Teste do programa proposto.


Digite no editor de texto do IAR System o programa apresentado
anteriormente.

Armazene os valores 00, 01, 02, ...0F nos endereos 200H


200 a 20F
20FH

Execute o programa
prog
e observe atravs do espao de memria
compreendido entre 220
2 H a 22FH se o programa foi executado.

Dica:
 Para executar o programa,
programa totalmente, acione a tecla F5 ou o cone
e em seguida clique sobre o cone

para parar. Consulte a Figura 17.

Reinicie o programa clicando no cone


e o execute passo a passo at
a instruo DEC.B R6 inclusive. Justifique os valores encontrados no
registro R6 e no flag Z.
Z

Saia do modo de depurao e troque


t
no editor a instruo
MOV.B #10H,R6
#10
por
MOV.B #01H,R6.
#01

Faa a montagem e o carregamento do programa no ambiente de depurao e


repita o item 5.4.

Saia novamente
ovamente do modo de depurao e desfaa a troca, substituindo
MOV.B #01H,R6
#01
por
MOV.B #10H,R6.
#10

Troque a instruo
JNZ volta por
JZ volta

Armazene
rmazene o valor AA nos endereos 200H
200 a 20FH e execute o programa.

CEFET-MG

32

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Dica:
 Se voc quiser inserir o mesmo valor em um bloco de memria
RAM, siga os seguintes passos:
1.

V ao ambiente de depurao.

2.

Acrescente a janela Memory.

3.
Clique com o boto esquerdo do mouse sobre a seta da caixa
de texto onde est escrito Memory e selecione RAM.
4.
Clique com o boto direito do mouse sobre uma posio de
memria qualquer e selecione Memory Fill... Aparecer a Janela Fill.
5.
Preencha os seguintes campos: Start address,
address Length e
Value.. No nosso caso use respectivamente os seguintes valores 0x200,
0x10 e 0xAA.

Observe os blocos de memria e verifique se o programa foi executado.

Justifique sua resposta.


respost

5.2.2. Faa o fluxograma e o programa em assembly que troque o contedo de


dois blocos de memria. O endereo inicial do bloco 1 (200H),
), o endereo do
bloco 2 (220H)) e o tamanho do bloco (20H).
(20

CEFET-MG

33

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Prtica 6 -

Estudo de instrues de desvio

OBJETIVO
 Estudar as instrues de tomadas de deciso (jump
(
condicional) e
 Estudar os jumps relativo e absoluto.
6.1.

INTRODUO

As instrues lgicas e aritmticas afetam os flags.. Isto significa que logo aps
a execuo de qualquer uma delas possvel tomar
tom decises. As instrues que
usamos, neste caso so os jumps condicionais: JZ, JNZ, JC, JNC, JN, JGE e JL
JL.
Jumps relativos so
o aqueles que desviam o programa para um endere
endereo
calculado
culado a partir da posio atual do PC (Program Counter). Alm
m da instruo
JMP, todos os jumps condicionais do saltos relativos ao apontador de programa.
Estes saltos relativos so ditos curtos, pois a extenso do salto est limitada a faixa
de -511 a +512 words.
A instruo BR (Branch
Branch) desvia o programa
ma para qualquer uma das 64k
posies de memria endereveis e por isto dito salto incondicional longo
longo. Ela
salta para o destino, portanto um jump absoluto.
O fluxograma de uma rotina que faz a transferncia (cpia) de dados de um
bloco de memria para
ra outro apresentada pela Figura 21, a seguir:

CEFET-MG

34

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

COMPARA

APT_1  BLOCO1
APT_2  BLOCO2
APT_RESULT  BLOCO3
CONT  10

(APT_1) =
(APT_2)

(APT_2) <
(APT_1)

V
(APT_RESULT)
0

(APT_RESULT)
1

(APT_RESULT)
2

APT_1 ++
APT_2 ++
APT_RESULT ++
CONT --

CONT = 0

Figura 21 Fluxograma de comparao de dados.

CEFET-MG

35

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

;*********************************************************************************************************
; Descrio:
;*********************************************************************************************************
#include "msp430.h"
; #define controlled include file
NAME
main
; module name
PUBLIC
main
; make the main label visible outside this module
ORG
0200h
APT1 DB
0,1,2,3,4,5,6,7,8,9
ORG
0210h
APT2 DB
0,2,1,3,5,6,9,7,8,4
ORG
0220h
APT3 DB
30H,30H,30H,30H,30H,30H,30H,30H,30H,30H
ORG
DC16

0FFFEh
init

; set reset vector to 'init' label

RSEG
RSEG

CSTACK
CODE

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

#SFE(CSTACK), SP

; set up stack
; main program
; Stop watchdog timer

init: MOV
main: NOP
MOV.W
MOV.W
MOV.W
MOV.W
MOV.B
volta CMP.B
JZ
JNC
MOV.B
cont INC.W
INC.W
INC.W
DEC.B
JNZ
JMP
igual
MOV.B
BR
menor
MOV.B
JMP
END

CEFET-MG

#WDTPW+WDTHOLD,&WDTCTL
#APT1,R4
#APT2,R5
#APT3,R6
#10,R7
0(R4),0(R5)
igual
menor
#02,0(R6)
R4
R5
R6
R7
volta
$

; (endless loop)

#00,0(R6)
#cont
#01,0(R6)
cont

36

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

6.2.

ATIVIDADES

6.2.1. Teste do programa proposto.

Abra um novo projeto no IAR System, crie um arquivo e digite


digite no editor de
texto o programa de comparao de dados.

Execute o programa e verifique seu funcionamento.

Reinicie o programa e execute


execute-o passo a passo at a instruo JZ igual e
justifique os valores
alores dos flags C, Z, N e V.

Troque a instruo
JMP cont por
BR #cont
e execute o programa.

Qual a diferena observada entre as duas instrues apresentadas?


apresentadas

6.2.2. Altere o programa proposto de tal forma que seja armazenado em cada
posio do bloco apontado por APT_RESULT o maior valor entre os dois
dados comparados.

CEFET-MG

37

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Prtica 7 -

Estudo de subrotina

OBJETIVO
 Utilizao e chamada de sub-rotina;
 Aplicao da pilha e
 Passagem de parmetros.
7.1.

INTRODUO

Considere uma operao como a diviso, para a qual o MSP no dispe de


uma nica instruo capaz de execut
execut-la. Torna-se
se necessrio implementar um
grupo de instrues, que denominamos rotina, para realiz-la.
realiz
Portanto, para esse
caso especificamente, teremos a rotina de diviso.
Dentro de um programa pode ser necessrio executar a operao de diviso
diversas vezes. O que nos obriga a copiar a rotina de diviso diversas vez
vezes dentro
do programa, provocando um gasto excessivo de memria. Uma forma mais
eficiente de resolver esse problema fazer uma nica cpia desse programa e
cham-lo
lo todas as vezes que for necessrio, observe a Figura 22.

Figura 22 Subrotina.

Um programa implementado desta forma chamado de sub


sub-rotina. O
programa principal responsvel por chamar a sub-rotina
rotina atravs da instruo
CALL.. Essa instruo carrega no PC o endereo inicial da sub-rotina,
rotina, fazendo mudar
a seqncia de execuo do programa. E guarda na pilha o endereo de volta, o
CEFET-MG

38

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

que garante o retorno


o seq
sequncia interrompida. Essa operao denominada
chamada de sub-rotina.
A sub-rotina
rotina executada at a sua ltima instruo, que obrigatoriamente a
instruo de retorno de sub-rotina
sub
- RET.. Esta instruo retira da pilha o endereo de
volta ao programa, armazenado
armazenado-o no PC.
7.2.

ATIVIDADES

7.2.1. Analise e verifique se o fluxograma apresentado na Figura 23 e o


programa em assembly apresentando aps ao fluxograma correspondem a
um programa com um mdulo principal que chama uma sub-rotina
rotina que recebe
em R4 o valor do dividendo e em R5 o divisor e retorna em R6::

-1
1 se divisor = 0 ou se o divisor > dividendo

Caso contrrio o resultado da diviso (parte inteira)

PRINCIPAL

DIVIDENDO
DIVISOR

DIVISO

15

SALVAR CONTEXTO

DIVISO

QUOC

DIVIDENDO = 0?

DIVISOR = 0?

N
DIVISOR >
DIVIDENDO

N
DIVIDENDO

DIVIDENDO - DIVISOR

DIVIDENDO < 0?

QUOC

-1

N
QUOC

QUOC + 1

RESTAURAR CONTEXTO

RETORNA

Figura 23 Fluxogramas: principal e subrotina de diviso.


CEFET-MG

39

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Programa da diviso relativo ao fluxograma proposto


propost na Figura 23.
23
#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
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
#15,R4
; determinar o dividendo
MOV.W
#3,R5
; determinar o divisor
CALL
#DIVISAO
JMP
$
; endless loop
;*********************************************************************************************************
;Sub:rotina: DIVISAO
;Descrio: Executa da diviso entre dois nmeros no sinalizados
;Entrada:
dividendo R4
;
divisor R5
;Sada:
R6 - quociente = -1 se divisor = 0 ou se divisor >dividendo ou
;
R6 = resultado da diviso
;*********************************************************************************************************
DIVISAO
PUSH
R4
; dividendo
PUSH
R5
; divisor
MOV.W
#00,R6
TST
R4
; verificar de dividendo =0
JZ
fim
; verificar de divisor =0
TST
R5
JZ
menos_1
CMP.W
R5,R4
; verificar se divisor > dividendo
JNC
menos_1
volta SUB.W
R5,R4
; efetuar a diviso
JNC
fim
INC.W
R6
JMP
volta
menos_1
MOV.W
#0FFFFH,R6
fim
POP
R5
; restaurar contexto
POP
R4
RET
END
CEFET-MG

40

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Modifique
odifique o programa anterior de forma que a sub-rotina
sub rotina alm de devolver o
resultado em R6, devolva o resto da diviso em R7. Teste o programa.

7.2.2. Faa o fluxograma e o programa em assembly que constitudo por um


mdulo principal
ncipal e uma sub
sub-rotina que receba duas strings apontadas por R4
e R5 e faa a concatenao das duas strings, sendo a string inicial apontada
por R4. A string concatenada dever ser retornada na posio de memria
indicada por R6. O fim da string ser indicado pelo delimitador $.

CEFET-MG

41

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Prtica 8 -

Ex ccios de programao
Exerccios

OBJETIVO
 Elaborar fluxogramas e os respectivos programas em assembly
8.1.

INTRODUO

A nica maneira de aprender praticando.. Naturalmente, cometeremos


enganos, mas podemos minimiz-los
minimiz
nos habituando a resolver
olver os problemas da
maneira correta. O primeiro passo elaborar o fluxograma e s depois elaboramos o
programa em assembly.
8.2.

ATIVIDADES

8.2.1. Faa o fluxograma e o programa em assembly que constitudo por um


mdulo principal e uma sub-rotina
s
que recebe uma string atravs da posio
de memria indicada por R4 e retorne a string escrita em ordem inversa na
mesma posio de memria. O tamanho
taman da string est definido em R5.
8.2.2. Faa o fluxograma e o programa que constitudo por um mdulo
principal e uma sub--rotia que desloque circularmente
mente uma string. A sub
sub-rotina
recebe em R4 o endereo inicial,
inicial em R5 o tamanho da string e circula os seus
caracteres de uma posio da direita para a esquerda, conforme figura
apresentada a seguir:
Endereo (h)

0200
200 0201 0202 0203 0204 0205 0206
06 0207

Posio

Posio

Posio

.
.
.

Posio

a) Imagine que as letras estivessem sendo deslocadas em um letreiro


luminoso. O que voc acrescentaria neste programa para que um pedestre
percebesse o deslocamento dos caracteres?
CEFET-MG

42

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

b) Acrescente no seu programa as modificaes do item anterior e execute o


programa usando o comando Go (F5). Pare o programa usando o comando Break.
8.2.3. Faa o fluxograma e o programa que constitudo por um mdulo
principal, uma sub-rotina
rotina que atualiza as horas de um relgio digital e uma
sub-rotina
rotina de tempo. O relgio digital representado na memria a partir do
endereo 0300H,
00H, utilizando dois bytes para as horas,
horas, dois bytes para os
minutos e dois bytes para os segundos. As horas minutos e segundos sero
separados por dois pontos, conforme figura a seguir:
Endereo(h) 0300
Posio

03
301
H

0302

0303

0304

0305

03
306
S

0307
S

Dicas:
 Cada posio de memria deve conter o cdigo ASCII do digito
corrente.
 A base de tempo, que nos relgios so de 1 segundo, dever ser
acelerada para possibilitar o acompanhamento e execuo do programa.

CEFET-MG

43

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Prtica 9 -

Dispositivo de sada

OBJETIVO
 Acionar LEDs com temporizao de software
9.1.

INTRODUO

At agora apenas simulamos os nossos programas. Isto foi conveniente porque os


programas executados usavam apenas os dispositivos internos do microcontrolador,
registros da CPU e espao de memria. Agora imagine que voc queira acionar um
dispositivo externo, como um led, e no possa v-lo
v piscando...
Acionar leds, displays, chaves, teclados, motor de passo e etc, requer que os
programas sejam carregados na memria do prprio microcontrolador. Isto significa
que sero executados,, de fato.
fato E poderemos acompanhar o andamento da
execuo atravs do IAR System.
Nesta aula veremos como configurar um projeto para que o cdigo fonte seja
carregado no microcontrolador,
controlador, relembrar como configurar as portas, para que
possamos us-las e acionar os leds.
PROGRAMAO DE PORTAS
Como vocs sabem existe um conjunto de registros para a configurao de cada bit
das portas. Nesta prtica necessitaremos apenas os seguintes registros:
1. Registro de Seleo

BIT = 0 => pino associado s portas


BIT = 1 => pino associados aos mdulos perifricos

CEFET-MG

44

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

2. Registro de Direo

BIT = 0 => pino da porta programado como entrada


BIT = 1 => pino da porta programado como sada
3. Registro de Sada

4. Registro de Entrada

CONFIGURANDO UM PROJETO PARA EMULAO


O primeiro passo criar um novo projeto, fazendo tudo como antes. O segundo
configur-lo:
lo: v ao menu principal e selecione Project e em seguida clique em
Options,, aparecer a janela Options for node PROJ, Figura 24.

Figura 24 Janela de Opes de Projeto (Debugger).

Observe que foram selecionados a categoria (Category) Debugger e o driver


(Driver) FET Debugger.. Essas opes de projeto permitem a emulao do
programa, ou seja, que voc verifique na tela do seu computador o que est
CEFET-MG

45

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

ocorrendo, de fato, no microcontrolador. Em seguida necessrio que voc escolha


a interface pela qual o seu programa ser transferido para
para o microcontrolador, Figura
25.

Figura 25 Janela de Opes de Projeto (FET Debugger).

HARDWARE ACIONADO
Os leds presentes no kit didtico apresentam a configurao
configurao apresentada na Figura
26. Para que o led seja ligado ou desligado basta colocar o nvel lgico 0 ou 1
1,
respectivamente, no terminal L0.

Figura 26 Esquema de ligao de leds no kit didtico.

FLUXOGRAMAS

A Figura 27 apresenta o fluxograma principal e o fluxograma da subrotina


PISCA_LED no qual um led pisca na freqncia estabelecida pela rotina de
temporizao e o nmero de vezes
vez determinado pelo contador.

CEFET-MG

46

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

ACIONA_LED

CONFIGURAR I/O

PISCA_LED

Figura 27 Fluxogramas para o acionamento de led.

CEFET-MG

47

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

PROGRAMA EM ASSEMBLY
;*********************************************************************************************************
;*********************************************************************************************************
; Descrio: Este programa aciona
ciona LED
;*********************************************************************************************************
#include "msp430.h"

init:

NAME

main

; module name

PUBLIC

main

ORG
DC16

0FFFEh
init

; make the main label vissible


; outside this module

RSEG
RSEG

CSTACK
CODE

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

MOV

#SFE(CSTACK),
(CSTACK), SP

; set up stack

#WDTPW+WDTHOLD,&WDTCTL
#0xFF,P1DIR

; main program
; Stop watchdog timer
; programar todos os bits da porta 1
; como sada

main: NOP
MOV.W
BIS.B
repete

; #define controlled include file

CALL
JMP

; set reset vector to 'init' label

#PISCA_LED
repete

;*********************************************************************************************************
;Subrotina: PISCA_LED
;Descrio: Faz o led presente no BIT 0 da porta P1 piscar 3 vezes, em
;
um intervalo de tempo definido pela rotina TEMPO_PISCA
;Entrada:
;Sada:
;*********************************************************************************************************
;*********************************************************************************************************
PISCA_LED

pisca

PUSH
MOV.B

R4
#3,R4

; salvar contexto
; definir o nmero de piscadas do led

BIS.B
CALL
BIC.B
CALL
DEC.B
JNZ
POP
RET

#1,P1OUT
#TEMPO_PISCA
#1,P1OUT
#TEMPO_PISCA
R4
pisca
R4

; ligar o led

CEFET-MG

; desligar o led
; atualizar o contador

48

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

;*********************************************************************************************************
;Subrotina: TEMPO_PISCA
;Descrio:: Intervalo de tempo gasto pela CPU, para acionamento do led
;Entrada: ;Sada: 3+3+1+K1(1+K2
;Clculo de tempo:: 3+3+1+K1(1+K2(1+2)+1+2)+2+2+3
;*********************************************************************************************************
K1
K2

EQU
EQU

1
1

TEMPO_PISCA
; ciclos de instruo
PUSH
R5
;3
PUSH
R6
;3
MOV
#K1,R6
;1
cont_ext
MOV
#K2,R5
;1
cont_int
;1
DEC
R5
JNZ
cont_int
;2
DEC
R6
;1
JNZ
cont_ext
;2
POP
R6
;2
POP
R5
;2
RET
;3
;*********************************************************************************************************
;*********************************************************************************************************
END

9.2.

ATIVIDADES

9.2.1. Teste do programa proposto

Execute o programa e verifique se o led piscou.


piscou

Faa o fluxograma
ma da subrotina de tempo e calcule as constants K1 e K2
para que o led permanea aceso e apagado cerca de 1 segundo
segundo,
considerando a freqncia do oscilador 750KHz.
750KHz

9.2.2. Faa um novo fluxograma e o programa em assembly para a subrotina


PISCA_LED, em que o led permanea aceso o dobro do tempo de apagado.
9.2.3. Ligue quatro LEDs respectivamente nas portas P1.0 a P1.3. A partir desta
montagem faa o fluxograma e o programa em assembly que garante o
piscamento dos LEDs de forma sequencial. O tempo de durao do
acendimento de cada LED de 1s.

CEFET-MG

49

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Apndice A Tabela ASCII (American


American Standard Code for Information
Interchange)

CEFET-MG

50

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


Departamento de Ensino do 2o grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

CEFET-MG

51

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


o
Departamento de Ensino do 2 grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Apndice B - Conjunto de Instrues


B.1

Introduo

A CPU do microcontrolador MSP430 tem um reduzido conjunto de instrues


(RISC). So apenas 27 instrues executadas pelo hardware, contudo o gerador de
constante auxilia ao programa montador (assembly) do MSP emular mais 24
instrues.. A seo seguinte descreve todas as instrues do ncleo do MSP e
instrues emuladas de forma detalhada.
As instrues aparecero em ordem alfabtica.
O sufixo .W ou a ausncia de sufixo no mnemnico da instruo indica operao
de 16 bits ou operao de word e o sufixo .B indica operao de 8 bits ou operao
de byte.
As letras src e dst significam operando fonte e operando destino respectivamente.
O asterisco (*) na frente da instruo indica que a mesma emulada.
Nas instrues emuladas, os bits de status so afetados conforme a instruo
original.

B.2

Descrio das instrues

1) *ADC[.W]
*ADC.B

Adiciona o bit de carry ao destino


adiciona o bit de carry ao destino
d

Sintaxe

ADC
ADC.B

Operao

dst + C  dst

Emulao

ADDC
ADDC.B

dst
dst

ou ADC.W dst

#0,dst
#0,dst

Descrio

O bit de carry (C) somado ao operando destino. O contedo


anterior do operando destino perdido.

Bits de status

N:
Z:
C:

V:

Setado se o resultado for negativo, resetado se positivo


Setado se resultado for zero, caso contrrio resetado
Setado se dst foi incrementado de 0FFFF para 0000,
resetado em caso contrrio.
Setado se dst foi incrementado
de 0FFh para 00,
resetado em caso contrrio.
Setado se ocorrer um overflow aritmtico, resetado em
caso contrrio.

Exemplo 1

Um contador de 16 bits apontado por R13 adicionado a um


contador de 32 bits apontado por R12.
ADD @R13, 0(R12)
;Adiciona a word menos significativa
ADC 2(R12)
;adiciona o carry a word mais signif.

Exemplo 2

Um contador de 8 bits apontado por R13 e adicionado a um


contador de 16 bits apontado por R12.
ADD.B @R13, 0(R12)
;adiciona LSD
ADC.B 1(R12)
;adiciona o carry ao MSD

CEFET-MG

52

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


o
Departamento de Ensino do 2 grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

2) ADD[.W] Adiciona a fonte ao destino


ADD.B
Adiciona a fonte ao destino

Sintaxe

ADD
src, dst
ADD.B src, dst

Operao

src + dst  dst

Descrio

O operando fonte e adicionado ao operando destino. O operando


fonte no afetado. O operando destino perde o contedo prvio
para armazenar o resultado da operao.

Bits de status

N:
Z:
C:
V:

Setado se resultado negativo, resetado se positivo.


Setado se o resultado for zero, resetado em caso
contrrio.
Setado se houver carry no resultado, resetado em caso
contrrio.
Setado se ocorrer
ocorrer um overflow aritmtico, resetado em
caso contrrio.

Exemplo

R5 incrementado de 10. Ocorrer o jump se houver um carry


ADD #10, R5
JC
TONI
;far o salto se carry
...
;no ocorreu o carry.

3) ADDC[.W]
ADDC.B

Adiciona a fonte e o carry ao destino

Sintaxe

ADDC
ADDC.B

Operao

src + dst + C  dst

src, dst
ser,dst

Descrio

O operando fonte e o bit de carry so adicionados ao operando


destino. O operando fonte no afetado. O operando destino
perde o prvio contedo para armazenar
armazenar o resultado da
operao.

Bits de status

N:
Z:
C:
V:

Setado se resultado negativo, resetado se positivo.


Setado se o resultado for zero, resetado em caso
contrrio.
Setado se houver carry no resultado, resetado em caso
contrrio.
Setado se ocorrer um overflow aritmtico, resetado em
caso contrrio.

Exemplo

Um contador de 32 bits apontado por R13 adicionado a outro


contador de 32 bits, onze palavras acima (20/2 + 2/2).
ADD
@R13+, 20(R13) ;adiciona os LSDs sem o carry
ADDC
@R13+, 20(R13)) ;adiciona os MSDs com o carry
dos LSDs.

CEFET-MG

53

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


o
Departamento de Ensino do 2 grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

4) AND[.W]
AND.B

Fonte AND destino

Sintaxe

AND
AND.B

Operao

src AND dst  dst

src, dst
src, dst

Descrio

Realiza a operao lgica AND entre os operandos fonte e


destino. O operando fonte no afetado e o operando destino
conter o resultado da operao.

Bits de status

N:
Z:
C:
V:

Exemplo

Setado se o MSB do resultado for um, resetado se zero.


Setado se resultado zero. Resetado em caso contrrio.
Setado se resultado diferente de zero, resetado em caso
contrrio. ( NOT ZERO )
Resetado.

O registro R5 usado para mascarar (#0AA55h) a palavra


endereada por TOM. Se o resultado for zero saltar para o
rtulo TONI.
MOV #0AA55h, R5
;carrega a mascara em R5
AND R5, TOM
;Mascara a palavra TOM com R5
JZ
TINI
;salta se resultado igual a zero
...
;resultado diferente de zero

5) BIC[.W] Zera os bits do destino


BIC.B
Sintaxe

BIC
BIC.B

Operao

NOT src AND dst  dst

Descrio

Realiza a operao lgica AND entre o operando fonte invertido e


o operando destino. O operando fonte no afetado e o resultado
armazenado no destino.

Bits de status

No afetados

Exemplo1

Zera os seis bits mais significativos da palavra LEO.


BIC
#0FC00, LEO

Exemplo2

Zera os bits
P0OUT .equ
P0_0
P0_1
BIC.B

CEFET-MG

src, dst
src,dst

0 e 1 da porta P0.
011h ;definio do endereo da porta.
.equ 01h
.equ 02h
#P0_0+P0_1, &P0OUT ;zera os 2 LSBs de P0

54

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


o
Departamento de Ensino do 2 grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

6) BIS[.W] Seta os bits do destino


BIS.B
Sintaxe

BIS
BIS.B

src,dst
src,dst

Operao

src OR dst  dst

Descrio

Realiza a operao lgica OR entre os operandos fonte e destino.


O operando fonte no afetado e o resultado da operao
armazenado no operando destino.

Bits de status

No afetados

Exemplo1

Seta os seis bits menos significativos da word TOM.


BIS
#003Fh, TOM

Exemplo2

Seta os 2 LSBs da porta P0.


P0OUT .equ 011h
P0
.equ 01h
P1
.equ 02h
BIS.B
#P0+P1, &P0OUT

7) BIT[.W] Testa bits no destino


BIT.B
Sintaxe

BIT

Operao

src AND dst

Descrio

Realiza a operao lgica AND entre a fonte e o destino. O


resultado afeta somente os bits de status. Os operandos fonte e
destino no so afetados.

Bits de status

N:
Setado se o MSB do resultado estiver setado,
setado, resetado em
caso contrrio.
Z:
Setado se resultado zero, resetado caso contrrio.
C:
Setado se resultado no zero, resetado caso contrrio
V:
Resetado.

Exemplo1

Se o bit 9 de R8 estiver setado, salte para o label TOM.


BIT
#0200h, R8
;Bit 9 est setado?
JNZ
TOM
;sim, v para TOM
...
;no, continua.
Se o bit 3 de R8 estiver setado, salta para o label TOM.
BIT.B
#8, R8
JC
TOM

Exemplo2

CEFET-MG

src, dst

55

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


o
Departamento de Ensino do 2 grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

8) *BR, Branch Salta para o destino.


Sintaxe

BR

Operao

dst  PC

Emulao

MOV

Descrio

Realiza um alto incondicional numa faixa de endereos de 64k.


Todos os modos de endereamento podem ser usados. Esta
uma instruo de 16 bits.

Bits de status

No so afetados.

Exemplos

BR
BR
BR
BR
BR
BR
BR

dst

dst, PC

#EXEC
EXEC
&EXEC

;salta para o label exec.


;salta para o endereo contido em EXEC
;salta p/ o endereo contido no endereo
;absoluto EXEC
R5
;salta para o endereo contido em R5.
@R5
;salta p/ o endereo contido na word
;apontada por R5.
@R5+
;Idem anterior e incrementa R5
5 aps.
X(R5)
;salta p/ o endereo contido no endereo
;apontado por R5 + X.

9) CALL

Chamada de sub
sub-rotina

Sintaxe

CALL

Operao

SP - 2  SP
PC
 @SP
dst
 PC

dst

Descrio

Realiza a chamada de uma sub-rotina


sub
numa faixa de endereos
de 64k. Todos os modos de endereamento podem ser usados. O
endereo de retorno armazenado na pilha. CALL instruo de
16 bits.

Bits de status

No so afetados.

Exemplos

CALL
CALL
em
CALL
CALL
CALL
CALL
CALL

CEFET-MG

#EXEC
EXEC

;chama o label EXEC


;chama o endereo contido

;EXEC.
&EXEC
;chama o endereo contido no
;endereo absoluto EXEC.
R5
;chama o endereo contido em R5.
@R5
;chama o endereo contido na word
;apontada por R5.
@R5+
;idem anterior com ps incremento.
X(R5)
;chama o endereo contido no
;endereo apontado por R5 + X.

56

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


o
Departamento de Ensino do 2 grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

10) *CLR[.W]
CLR.B

Zera destino

Sintaxe

CLR
CLR.B

dst
dst

Operao

0  dst

Emulao

MOV
#0, dst
MOV.B #0, dst

Descrio

O operando destino zerado.

Bits de status

No so afetados.

Exemplos

CLR
CLR
CLR.B

TONI ;a palavra TONI zerada


R5 ;zera R5
TONI ;o byte TONI zerado

11) *CLRC Zera o bit de carry


Sintaxe

CLRC

Operao

0  C

Emulao

BIC

Descrio

Zera o bit de carry. Esta uma instruo de 16 bits.

Bits de status

N:
Z:
C:
V:

Exemplo

Um contador decimal de 16 bits apontado por R13 somado a


um contador de 32 bits apontado por R12.
CLRC
DADD
@R13, 0(R12) ;adiciona a parte baixa.
DADC
2(R12)
;adiciona o carry a parte alta.

#1,SR

No afetado
No afetado
Zerado
No afetado

12) *CLRN Zera o bit negativo


Sintaxe
Operao

CLRN
0  N

Emulao

BIC

Descrio

O bit N do registro de status zerado. Esta uma instruo de


16 bits.
N:
Zerado
Z:
No afetado
C:
No afetado
V:
No afetado
CLRN

Bits de status

Exemplo

CEFET-MG

#4, SR

57

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


o
Departamento de Ensino do 2 grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

13) *CLRZ Zera o bit de status Z


Sintaxe

CLRZ

Operao

0  Z

Emulao

BIC

Descrio

O bit de zero do registro de status zerado. Esta uma


instruo de 16 bits.

Bits de status

N:
Z:
C:
V:

Exemplo

CLRZ

14) CMP[.W]
CMP.B

#2, SR

No afetado
Zerado
No afetado
No afetado

Compara fonte e destino

Sintaxe

CMP
src, dst
CMP.B src, dst

Operao

dst - src

Descrio

O operando fonte subtrado do operando destino. Isto feito


somando o operando destino com o segundo complemento (1
complemento + 1) do operando fonte. Os dois operandos no so
afetados e o resultado no armazenado. Somente os bits de
status so afetados.

Bits de status

N:
Setado se resultado
resultado negativo, resetado se positivo.
Z:
Setado se resultado zero, resetado em caso contrrio.
C:
Setado se no houver vem um para o MSB, resetado
caso contrrio.
V:
Setado se houver um overflow aritmtico, resetado caso
contrrio.

Exemplo1

Os registro R5 e R6 so comparados. Se forem iguais, o


programa continua no rtulo IGUAL.
CMP
R5, R6
;R5 = R6 ?
JEQ
IGUAL
;se sim, salte para IGUAL.

CEFET-MG

58

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


o
Departamento de Ensino do 2 grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Exemplo2

Dois blocos de RAM so comparados. Se no so iguais, vai para


o rotulo ERRO.
ORG
0200h
BLOCO1 DB
00,01,02
ORG
0210h
BLOCO2 DB
00,01,02

L$1

MOV
comp.
CMP.B
JNZ
DEC
JNZ

#3, R5

;nmero de palavras a serem

BLOCO1-1(R5), BLOCO2-1(R5)
;so iguais?
ERRO
;se no v para ERRO
R5
;todas
s as palavras foram comp.
L$1
;se no volte para nova comp.

ERRO
15) *DADC[.W]
*DADC.B

Soma BCD o carry ao destino

Sintaxe

DADC
DADC.B

Operao

dst + C  dst (decimal)

Emulao

DADD
DADD.B

Descrio

O bit de carry somado (BCD ou decimal) com o destino.

Bits de status

Setado se o MSB 1.
N:
Z:
Setado se o destino for 0, resetado em caso contrrio.
C:
Setado se o destino incrementa de 9999 para 0000,
Resetado em caso contrr
contrrio.
Setado se o destino incrementa de 99 para 00, resetado
em caso contrrio.
V:
Indefinido.

Exemplo1

Quatro dgitos decimais contidos em R5 so adicionados a oito


dgitos decimais apontados por R8.
CLRC
DADD
R5, 0(R8) ;soma os LSDs
DADC
2(R8)
;soma o carry ao MSD.

Exemplo2

Dois dgitos decimais contidos em R5 so somados a quatro


dgitos decimais apontados por R8.
CLRC
DADD.B
R5, 0(R8)
DADC.B
1(R8)

CEFET-MG

dst
dst

#0, dst
#0, dst

59

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


o
Departamento de Ensino do 2 grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

16) DADD[.W]
DADD.B

Soma fonte, carry e destino (BCD)

Sintaxe

DADD
DADD.B

Operao

src + dst + C  dst (decimal)

Descrio

O operando fonte e destino so tratados como nmeros BCD


positivos. O operando fonte e o carry bit so somados BCD ao
operando destino. O operando fonte no afetado. O contedo
prvio
io do destino perdido, para o mesmo conter o resultado da
operao. O resultado indefinido para nmeros no BCD.

Bits de status

N:
Setado se o MSB 1, resetado se 0.
Z:
Setado se resultado zero, resetado em caso contrrio.
C:
Setado se resultado maior
ma
que 9999
Setado se resultado maior que 99
V:
Indefinido

Exemplo1

Um nmero de oito dgitos BCD contido em R5 e R6 somado a


outro numero de oito dgitos BCD contido em R3 e R4. R6 e R4
contm os MSDs.
CLRC
R5, R3
;adiciona os LSDs
DADD
DADD
R6, R4
;adiciona os MSDs com carry.
JC
OVERFLOW
;se carry, v para rotina de erro.

Exemplo2

Incrementa um contador de dois dgitos decimal (CNT).


CLRC
DADD.B
#1, CNT

17) *DEC[.W]
*DEC.B

src, dst
src, dst

Decrementa o destino

Sintaxe

DEC
DEC.B dst

Operao

dst - 1  dst

Emulao

SUB
#1, dst
SUB.B #1, dst

Descrio

O operando destino decrementado de 1. O contedo original


perdido.

Bits de status

N:
Setado se resultado negativo, resetado caso contrrio
Z:
Setado se resultado zero, resetado
resetado em caso contrrio
C:
Resetado se destino vai de 0000h para FFFFh, setado
caso contrrio.
V:
Setado se ocorrer um overflow aritmtico, resetado em
caso contrrio.
Seta se o valor inicial do destino for 8000h (word) ou
80h (byte), reseta
re
em caso contrrio.

CEFET-MG

dst

60

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


o
Departamento de Ensino do 2 grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Exemplo

Move um bloco de 255 bytes de memria com endereo inicial


EDE, para outro bloco de memria com endereo inicial TONI.
MOV
#EDE, R6
MOV
#TONI, R5
MOV
#255, R4
MOV.B @R6+, 0(R5)
INC
R5
DEC
R4
JNZ
L$1

L$1

18) *DECD[.W]
*DECD.B

Decremento duplo do destino

Sintaxe

DECD
DECD.B

dst
dst

Operao

dst - 2 

Emulao

#2, dst
SUB
SUB.B #2, dst

Descrio

O operando destino decrementado de 2. O contedo original


perdido.

Bits de status

N:
Setado se resultado negativo, resetado se positivo
Z:
Setado se resultado zero, resetado caso contrrio
C:
Resetado se destino vai de 0000h para FFFFh, setado
em caso contrrio.
V:
Setado se ocorrer um overflow aritmtico, resetado caso
contrrio.
ntrrio.
Seta se o valor inicial do destino for 8001h ou 8000h em
operaes de word, e 80h ou 81h em operaes de byte, reseta
caso contrrio.

dst

Exemplo

DECD

R10 ;decrementa R10 de duas unidades.

19) *DINT

Desabilita (geral) interrupes.

Sintaxe

DINT

Operao

0  GIE

Emulao

BIC

#8, SR

Descrio

Todas as interrupes so desabilitadas. Realiza a operao


lgica AND entre a constante 08h e o registro de status. O
resultado armazenado em SR.

Bits de status

Os bits de status no so afetados

Bits de modo

Somente o bit GIE resetado

CEFET-MG

61

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


o
Departamento de Ensino do 2 grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Exemplo

O bit geral de interrupo zerado para permitir a carga do


contador de 32 bits sem interrupes.
DINT
;desabilita todas as interrupes
NOP
MOV COUNTHI, R5 ;faz a carga do contador
MOV COUNTLO, R6
EINT
;habilita todas as interrupes.

20) *EINT Habilita (geral) interrupes


Sintaxe

EINT

Operao

1  GIE

Emulao

BIS

Descrio

Todas as interrupes so habilitadas. Realiza a operao lgica


OR entre a constante 08h e o registro de status. O resultado
armazenado em SR.

Bits de status

No afetados

Bits de modo

Somente o bit GIE setado

Exemplo

Idem anterior.

21) *INC[.W]
*INC.B

#8, SR

Incrementa destino

Sintaxe

INC
INC.B

Operao

dst + 1  dst

Emulao

ADD

Descrio

Soma 1 ao operando destino. O contedo original perdido.

Bits de status

N:
Setado se resultado negativo, resetado se positivo
Z:
Setado se resultado zero, resetado em caso contrrio
C:
Setado se destino vai de FFFFh para 0000h (word), ou
FFh para 00h (byte), resetado em caso contrrio.
V:
Setado se ocorrer um overflow aritmtico, resetado
caso contrrio. Seta se o valor inicial do destino for
7FFFh (Word), e 7Fh (byte), reseta em caso contrrio.

Exemplo

O byte STATUS incrementado. Quando ele for igual a 11, vai


para OVFL.
INC.B
STATUS
CMP.B #11, STATUS
JEQ
OVFL

CEFET-MG

dst
dst

#1, dst

62

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


o
Departamento de Ensino do 2 grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

22) *INCD[.W]
*INCD.B

Incremento duplo no destino

Sintaxe

INCD
INCD.B

dst
dst

Operao

dst + 2  dst

Emulao

#2, dst
ADD
ADD.B #2, dst

Descrio

Soma 2 ao operando destino. O contedo original perdido.

Bits de status

N:
Z:
C:
FFh
V:

Setado se resultado negativo, resetado se positivo


Setado se resultado zero, resetado em caso contrrio
Setado se destino vai de FFFFh para 0000h (Word), ou
para 00h (byte), resetado em caso contrrio.
Setado se ocorrer um overflow aritmtico, resetado em
caso contrrio. Seta se o valor inicial do destino for
7FFEh ou 7FFFh (word), e 7Eh ou 7Fh (byte), reseta em
caso contrrio.

Exemplo1

O dado no topo da pilha removido sem usar registro.


PUSH
R5
INCD
SP
;no usar INCD.B, pois SP word alinhado

Exemplo2

O byte no topo da pilha incrementado por 2.


INCD.B
0(SP)

Inverte o destino

23) *INV[.W]
*INV.B
Sintaxe

INV
INV.B

dst
dst

Operao

NOT dst  dst

Emulao

XOR
XOR.B

Descrio

Inverte o operando de destino. O contedo original perdido.

Bits de status

N:
Z:
C:
V:

Exemplo

Encontra o segundo complemento de R5.


MOV
#00AEH, R5
INV
R5
INC
R5

CEFET-MG

#0FFFFh, dst
#0FFh, dst

Setado se resultado negativo, resetado se positivo


Setado se resultado zero, resetado em caso contrrio
Resetado se resultado zero, setado em caso contrrio
Setado se contedo inicial do destino negativo,
Resetado em caso
ca contrrio.

63

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


o
Departamento de Ensino do 2 grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

24) JC ou JHS

Jump se o bit carry estiver setado ou Jump se maior ou igual

Sintaxe

JC

Operao

Se C = 1: PC + 2 x offset  PC
Se C = 0: executa a instruo seguinte

Descrio

O bit C do registro de status testado. Se estiver setado, o


nmero sinalizado de 10 bits (offset) contido nos LSBs da
instruo, somado ao PC. Se estiver resetado, a prxima
instruo aps o jump ser executada. JC usado para
comparao de nmeros no sinalizados.

Bits de status

No afetados.

Exemplo

R5 comparado com 15. Se for maior ou igual salta.


CMP
#15, R5
JHS
SALTA
;salta se R5 >= 15
...
;continua se R5 < 15

rtulo ou JHS

rtulo

25) JEQ ou JZ Jump se igual ou jump se zero.


Sintaxe

JEQ rtulo ou JZ

rtulo

Operao

Se Z = 1: PC + 2 x offset  PC
Se Z = 0: executa a instruo seguinte

Descrio

O bit Z do registro de status testado. Se estiver setado, o


nmero sinalizado de 10 bits (offset) contido nos LSBs da
instruo somado ao PC. Se Z estiver resetado a instruo
seguinte ao JUMP executada.

Bits de status

No afetados.

Exemplo

Salta para o endereo LEO se R6 igual ao contedo da


tabela.
CMP
R6, tabela(R5)
JEQ
LEO

26) JGE

Jump maior ou igual

Sintaxe

JGE

Operao

Se (N XOR V) = 0 ento salte p/ o rtulo: PC + 2xoffset  PC


Se (N XOR V) = 1 ento execute a prxima instruo.

rtulo

Descrio

Os bits N e V do registro de status so testados. Se os bits N e V


so iguais (set ou reset), os 10 bits sinalizados contidos nos
LSBs da instruo so somados ao PC e o salto realizado. Se
apenas um dos bits setado, a instruo seguinte ao jump
executada. Esta instruo usada para comparao de nmeros
inteiros sinalizados.

Bits de status

No afetados.

CEFET-MG

64

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


o
Departamento de Ensino do 2 grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Exemplo

27) JL

Quando o contedo de R6 maior ou igual ao contedo da


memria apontada por R7, o programa continua no rotulo EDE
CMP
@R7,R6
;R6 >= (R7) ?, nmeros sinalizados.
JGE
EDE
;se sim, v para EDE
.....
;se no, continue.

Jump se menor (less)

Sintaxe

JL

Operao

Se (N XOR V) = 1 ento salte p/ o rtulo: PC + 2xoffset  PC


Se (N XOR V) = 0 ento execute a prxima instruo.

Descrio

Os bits N e V do registro de status so testados. Se apenas um


dos bits setado, os 10 bits sinalizados contidos nos LSBs da
instruo
struo so somados ao PC e o salto realizado. Se os bits N e
V so iguais (set ou reset), a instruo seguinte ao jump
executada. Esta instruo usada para comparao de nmeros
inteiros sinalizados.

Bits de status

No afetados.

Exemplo

Quando o contedo
contedo de R6 menor que o contedo da memria
apontada por R7, o programa salta para EDE.
CMP
@R7, R6
;R6 < (R7) ?, nmeros sinalizados.
JL
EDE
;se sim, v p/ EDE
.....
;se no, continue.

28) JMP

rtulo

Jump incondicional
rtulo

Sintaxe

JMP

Operao

PC + 2 x offset  PC

Descrio

O nmero sinalizado de 10 bits contidos nos LSBs da instruo


somado ao PC.

Bits de status

No afetados.

Sugesto

Esta instruo de uma word, substitui a instruo BRANCH na


faixa de 511 a +512 words relativos ao corrente PC.

CEFET-MG

65

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


o
Departamento de Ensino do 2 grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

29) JN

Jump se negativo

Sintaxe

JN

Operao

Se N = 1, ento salta p/ o rtulo: PC + 2 x offset  PC


Se N = 0, execute a prxima instruo.

Descrio

O bit N do registro de status testado. Se estiver setado, o


nmero sinalizado de 10 bits contido nos LSBs da instruo
adicionado ao PC. Se N estiver resetado, ento executa a
prxima instruo aps o jump.

Bits de status

No afetados.

Exemplo

O resultado de um processamento em R5 subtrado de COUNT.


Se o resultado for negativo, COUNT zerado e o programa
continua a execuo em outro caminho.
SUB
R5, COUNT;COUNT R5  COUNT
JN
L$1
;se negativo COUNT=0 em PC=L$1
.....
;se positivo, continue com COUNT>=0
CLR
COUNT
.....

L$1

30) JNC, JLO

rtulo

Jump se no carry
ca
ou jump se menor (lower)
rtulo ou JLO

rtulo

Sintaxe

JNC

Operao

Se C = 0, ento salta p/ rtulo: PC + 2 x offset  PC


Se C = 1, execute a prxima instruo.

Descrio

O bit C do registro de status testado. Se ele estiver resetado, o


nmero
o sinalizado de 10 bits contido nos LSBs da instruo
somado ao PC. Se C estiver setado ento a prxima instruo
aps o jump executada. Esta instruo usada para comparar
nmeros sem sinal (0 a 65.535)

Bits de status

No afetados

Exemplo

O resultado de um processamento em R6 somado a BUFFER.


Se ocorrer vai um uma rotina de erro usada no endereo
ERRO.
ADD
R6, BUFFER
JNC
CONT
;se no carry v p/ CONT
......
;inicio da rotina de erro
......
......
;Continua com o fluxo
luxo normal

ERRO
CONT

CEFET-MG

66

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


o
Departamento de Ensino do 2 grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

31) JNE, JNZ

Jump se no igual ou jump se no zero

Sintaxe

JNE

Operao

Se Z = 0, ento salta p/ o rtulo: PC + 2 x offset  PC


Se Z = 1, ento executa a prxima instruo

Descrio

O bit Z do registro de status testado. Se ele estiver resetado, o


nmero sinalizado de 10 bits contido nos LSBs da instruo
somado ao PC. Se Z estiver setado, ento executa a prxima
instruo aps o jump.

Bits de status

No afetados.

Exemplo

Salta para TONI se R7 e R8 tiverem contedos diferentes.


CMP
R7, R8
;compara R7 com R8
JNE
TONI
;salta para TONI se diferente
.....
;continua se igual.

32) MOV[.W]
MOV.B

rtulo ou JNZ

rtulo

Move fonte para destino

Sintaxe

MOV
src, dst
MOV.B src, dst

Operao

src  dst

Descrio

O contedo do operando fonte movido para o operando


destino. O operando fonte no afetado. O contedo prvio de
operando destino perdido.

Bits de status

No afetado

Exemplo

Os contedos da tabela endereada por EDE so copiados para a


tabela endereada
endereada por TOM. O tamanho das tabelas deve ser de
20h localizaes.
MOV
#EDE, R10 ;prepara o ponteiro
MOV
#TOM, R11 ;prepara o segundo ponteiro
MOV
#20, R9
;prepara o contador
MOV
@R10+, 0(R11)
ADD
#2, R11
;atualiza ponteiro
DEC
R9
;atualiza contador
JNZ
refaz
;se contador dif. 0 continue cpia.
....
;se contador = 0, termina cpia.

CEFET-MG

67

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


o
Departamento de Ensino do 2 grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

33) *NOP

No operao

Sintaxe

NOP

Operao

Nenhuma

Emulao

MOV

Descrio

A instruo usada para eliminao de instruo no programa


ou para definio de tempos de espera.

Bits de status
Nota

No afetados
Outras instrues podem emular a no operao usando
diferentes nmeros de ciclos de clock e tamanhos de cdigos:
MOV
0(R4), 0(R4)
;6 ciclos, 3 words
MOV
@R4, 0(R4) ;5 ciclos, 2 words
BIC
#0, EDE(R4)
;4 ciclos, 2 words
JMP
$+2
;2 ciclos, 1 word
BIC
#0, R5
;1 ciclo , 1 word

34) *POP[.W]
*POP.B

#0, #0

Retira word da pilha para o destino

Sintaxe

POP

Operao

@SP  dst
SP + 2  SP

Emulao

MOV
@SP+, dst
MOV.B @SP+, dst

Descrio

O contedo da localizao de memria apontada pelo Pinteiro de


pilha (SP) movida para o destino. Aps o ponteiro de pilha
incrementado por 2.

Bits de status

No afetados.

Exemplo

POP
POP

Nota

O ponteiro de pilha sempre incrementado por 2 independente


do sufixo .B

CEFET-MG

dst ou POP.B

R7
SR

dst

;restaura R7
;restaura o registro de status

68

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


o
Departamento de Ensino do 2 grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

35) PUSH[.W]
PUSH.B

Coloca a word na pilha

Sintaxe

PUSH

Operao

SP 2  SP
Src  @SP

Descrio

O registro SP decrementado por 2, e ento o operando destino


movido para a RAM word endereada por SP.

Bits de status

No afetados

Exemplo

PUSH
PUSH

Nota

O ponteiro de pilha sempre decrementado por 2 independente


do sufixo .B

36) *RET

src ou PUSH.B

SR
R7

src

;salva SR na pilha
;salva R7 na pilha

Retorno de sub-rotina
rotina

Sintaxe

RET

Operao

@SP  PC
SP + 2  PC

Emulao

MOV

Descrio

O endereo de retorno salvo na pilha pela instruo CALL,


movido para o PC. O programa continua no endereo seguinte ao
da instruo CALL.

Bits de status

No afetado.

37) RETI

@SP+, PC

Retorno de interrupo

Sintaxe

RETI

Operao

@SP
SP +
@SP
SP +

Descrio

O registro de status e o PC so restaurados da pilha. O registro


SP incrementado por 4. Os contedos restaurados da pilha
foram salvos no momento da interrupo.

Bits de status

Todos restaurados da pilha

Bits de modo

Todos restaurados da pilha

CEFET-MG

 SR
2  SP
 PC
2  SP

69

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


o
Departamento de Ensino do 2 grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

38) *RLA[.W]
*RLA.B

Rotao aritmtica a esquerda

Sintaxe

RLA

dst ou RLA.B

dst

Operao

C  MSB  MSB 1 .... LSB +1  LSB  0

Emulao

ADD

Descrio

O operando destino deslocado a esquerda de uma posio,


como mostrado na Figura B.1.. O MSB deslocado para o carry
bit e o LSB preenchido com 0. A instruo RLA funciona como
uma multiplicao por 2 sinalizada. Um overflow ocorrer se o
destino >= 4000h ou dst < C000h antes
antes da operao. O
resultado mudar de sinal.

dst, dst ou ADD.B

dst, dst

Figura B.1 - RLA

Um overflow ocorrer se dst >= 40h ou dst < C0h antes da


operao. O resultado mudar de sinal.
Setado se resultado negativo, resetado se positivo
Setado se resultado zero, resetado em caso contrrio
Carregado do MSB
Setado se ocorrer um overfow, resetado caso contrrio

Bits de status

N:
Z:
C:
V:

Exemplo

Multiplica R7 por 4
RLA
R7
RLA
R7

Nota

O assembler no reconhece a instruo RLA @R5+, que deve s


ser
substituda por ADD @R5+, -2(R5).

39) *RLC[.W]
*RLC.B

Rotao circular a esquerda atravs do carry

Sintaxe
Operao
Emulao

RLC
dst ou RLC.B
dst
C  MSB  MSB-1 .... LSB+1  LSB  C
ADDC
dst, dst

Descrio

O operando destino desloca


deslocado
do de uma posio a esquerda
como mostrado na Figura B.2.. O bit de carry deslocado para o
LSB e o MSB deslocado para o bit de carry.

Bits de status

N:
Z:
C:
V:

Figura B.2 - RLC

CEFET-MG

Setado se resultado negativo, resetado se positivo


Setado se resultado zero, resetado em caso contrrio
Carregado do MSB
Setado se ocorrer um overfow, resetado caso contrrio
Setado se 03FFFh
03FFF < dstinicial < 0C000h ou se 03Fh <
dstinicial < 0C0h, resetado em caso contrrio.

70

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


o
Departamento de Ensino do 2 grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Exemplo

Nota

40) RRA[.W]
RRA.B

O bit de entrada P0.1 colocado no LSB de R5


BIT.B
#2, &P0IN ;informao  carry
RLC.B
R5
;carry = P0in.1  LSB R5
;o byte alto de R5 resetado.
O assembler no reconhece a instruo RLC @R5+, que deve ser
substituda por ADDC @R5+, -2(R5)

Rotao aritmtica a direita

Sintaxe

RRA

dst ou RRA.B

dst

Operao

O operando destino deslocado de uma posio a direita, como


mostrado na Figura B.3.. O MSB permanece inalterado e
copiado para MSB 1, o LSB + 1 deslocado
slocado para LSB e o LSB
deslocado para o carry.

Bits de status

N:
Z:
C:
V:

Exemplo

O contedo
PUSH
RRA
ADD
RRA

Figura B.3 - RRA

41) RRC[.W]
RRC.B

Setado se resultado negativo, resetado se positivo


Setado se resultado zero, resetado em caso contrrio
Carregado do LSB
Resetado
de R5 multiplicado por 0,75.
R5 ;armazena temporariamente R5 na pilha
R5 ;R5 x 0,5
@SP+, R5 ;R5 x 0,5 + R5 = 1,5 x R5 = R5
R5 ;(1,5 x R5) x 0,5 = 0,75 x R5 = R5

Rotao circular a direita atravs do carry

Sintaxe

RRC

dst ou RRC.B

dst

Operao

C  MSB  MSB 1 .... LSB + 1  LSB  C

Descrio

O operando destino deslocado de um bit a direita como


mostrado na Figura B.4.. O bit de carry deslocado para o MSB,
e o LSB deslocado para o bit de carry.

Bits de status

N:
Z:
C:
V:

Figura B.4 - RRC

CEFET-MG

Setado se resultado negativo, resetado se positivo


positivo
Setado se resultado zero, resetado em caso contrrio
Carregado do LSB
Setado se valor inicial do destino for positivo e valor
inicial do carry for 1, resetado em caso contrrio.
71

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


o
Departamento de Ensino do 2 grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Exemplo

R5 deslocado de 1 bit direita. O MSB carregado com 1.


SETC
;prepara o carry para MSB
RRC
R5
;R5 / 2 + 8000h = R5

42) *SBC[.W]
*SBC.B

Subtrai o borrow do destino

Sintaxe

SBC

Operao

dst + 0FFFFh + C  dst


dst + 0FFh + C  dst

Emulao

SUBC
SUBC.B

dst ou SBC.B

dst

#0, dst
#0, dst

Descrio

O bit de carry menos 1 somado ao destino. O contedo prvio


do destino perdido.

Bits de status

N:
Setado se resultado negativo, resetado se positivo
Z:
Setado se resultado zero, resetado em caso contrrio
C:
Resetado se dst
dst foi decrementado de 0000h p/ 0FFFFh
ou de 00h para 0FFh, setado em caso contrrio
V:
Setado se inicialmente C = 0 e dst = 08000h
Setado se inicialmente C = 0 e dst = 080h
Um contador de 16 bits apontado por R13 subtrado de outro
contador de 32 bits apontado por R12.
SUB
@R13, 0(R12)
;subtrai os LSDs
SBC
2(R12)
;subtrai o carry do MSD

Exemplo

Nota

O borrow tratado como um no carry: Borrow


carry bit
Sim
0
No
1

43) *SETC Seta o bit de carry


Sintaxe

SETC

Operao

1  C

Emulao

BIS

Descrio

O bit de carry setado

Bits de status

N:
Z:
C:
V:

CEFET-MG

#1, SR

No afetado
No afetado
Setado
No afetado

72

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


o
Departamento de Ensino do 2 grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Exemplo

Emula uma subtrao decimal. Subtrai R5 de R6 decimalmente.


Suponha que R5 = 3987 e R6 = 4137.
ADD
#6666h, R5;Move o contedo de R5 de 0-9
9 p/ 6
6-F
;R5 = 3987 + 6666 = 9FEDh
INV
R5
;R5 = no R5 = 6012h
SETC
;prepara o carry = 1
DADD
R5, R6
;emula a subtrao pela soma de:
;(10000 R5 1)
; R6 = R6 + R5 + 1
;R6=4137 + 6012 + 1=10150 = 0150

44) *SETN Seta o bit negativo


Sintaxe

SETN

Operao

1  N

Emulao

BIS

Descrio

O bit N do registro de status setado

Bits de status

N:
Z:
C:
V:

#4, SR

Setado
No afetado
No afetado
No afetad
afetado

45) *SETZ Seta o bit de zero


Sintaxe

SETZ

Operao

1  Z

Emulao
Descrio

BIS
#2, SR
O bit de zero do registro de status setado

Bits de status

N:
Z:
C:
V:

CEFET-MG

No afetado
Setado
No afetado
No afetado

73

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


o
Departamento de Ensino do 2 grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

46) SUB[.W]
SUB.B

Subtrai fonte do destino

Sintaxe

SUB

src, dst ou SUB.B

src, dst

Operao

dst + (no src + 1)  dst ou


dst src  dst

Descrio

O operando fonte subtrado do operando destino, pela adio


do primeiro complemento do operando fonte com a constante 1.
O operando
operando fonte no afetado. O contedo prvio do operando
destino perdido.

Bits de status

N:
Setado se resultado negativo, resetado se positivo
Z:
Setado se resultado zero, resetado em caso contrrio
C:
Setado se h um carry do MSB do resultado,
resultado, resetado
caso contrrio.
Setado se no borrow, resetado se borrow
V:
Setado se ocorrer um overflow aritmtico, resetado em
caso contrrio.

Exemplo

Veja exemplo na instruo SBC

Nota

O borrow tratado como um no carry: Borrow


Sim
No

Carry
0
1

47) SUBC, SBB[.W]Subtrai


Subtrai a fonte e o borrow (not carry) do destino
SUBC.B, SBB.B
Sintaxe

SUBC
SUBC.B

Operao

dst + no src + C  dst ou


dst src 1 + C  dst

Descrio

Bits de status

Exemplo

Nota

CEFET-MG

src, dst ou SBB src, dst


src, dst ou SBB.B src, dst

O operando fonte subtrado do operando destino, pela adio


do primeiro complemento do operando fonte e o bit de carry. O
operando fonte no afetado. O prvio contedo do operando
destino perdido.
N:
Setado se resultado negativo, resetado se positivo
Z:
Setado se resultado zero, resetado em caso contrrio
C:
Setado se h um carry do MSB do resultado, resetado
caso contrrio.
Setado se no borrow, resetado se borrow
borro
V:
Setado se ocorrer um overflow aritmtico, resetado em
caso contrrio.
Um numero de 16 bits apontado por R13 subtrado de outro
numero de 16 bits em R10 e R11 (MSD)
SUB.B @R13+, R10
;subtrai os LSDs sem o carry
SUBC.B
@R13, R11 ;subtrai os MSDs com carry
O borrow tratado como um no carry: Borrow
Sim
No

Carry
0
1

74

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


o
Departamento de Ensino do 2 grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

48) SWPB

Troca bytes (swap bytes)

Sintaxe

SWPB

Operao

Bits 15 a 8   bits 7 a 0

dst

Descrio

Os bytes alto e baixo


baixo do operando destino so trocados como
mostra a Figura B.5.

Bits de status

N:
Z:
C:
V:

Exemplo

MOV
R7
SWPB

Figura B.5 - SWPB

49) SXT

No
No
No
No

afetado
afetado
afetado
afetado
#040BFh, R7
R7

;0100 0000 1011 1111 


;1011 1111 0100 0000  R7

Estende sinal

Sintaxe

SXT

dst

Operao

Bit 7  bit 8 a 15

Descrio

O sinal do byte baixo estendido para o byte alto como


mostrado na Figura B.6.

Figura B.6 - SXT

Bits de status

CEFET-MG

N:
Z:
C:
V:

Setado se resultado negativo, resetado se positivo


Setado se resultado zero, resetado em caso contrrio
Setado se resultado no zero, resetado caso contrrio
Resetado

75

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


o
Departamento de Ensino do 2 grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

Exemplo

MOV.B
SXT
ADD

&TCDAT, R7
;TCDAT = 085h: ...... 1000 0101
R
R7
;R7 = 0FF85h:1111 1111 1000 0101
R7, R6
;soma numero de 16 bits.

Testa destino

50) *TST[.W]
*TST.B
Sintaxe

TST

dst ou TST.B

dst

Operao

dst + 0FFFFh + 1 ou dst + 0FFh + 1

Emulao

CMP

#0,dst ou CMP.B

#0,dst

Descrio

O operando destino comparado com zero. Os bits de status so


atualizados conforme o resultado. O operando destino no
afetado.

Bits de status

N:
Z:
C:
V:

Exemplo

R7 testado. Se ele negativo, continua em R7NEG; se


positivo mas no zero continua em R7POS e se zero continua em
R7ZERO.
TST
R7
;testa R7
JN
R7NEG
;salta se negativo
JZ
R7ZERO ;salta se zero
.....
;R7 positivo mas no zero
.....
;R7 negativo
.....
;R7 zero

R7POS
R7NEG
R7ZERO

51) XOR[.W]
XOR.B

Setado se destino negativo, resetado se positivo


Setado se destino zero, resetado em caso
caso contrrio
Setado
Resetado

Ou exclusivo da fonte com o destino

Sintaxe

XOR

src,dst ou XOR.B

Operao

src XOR dst  dst

Descrio

Realiza a operao lgica ou exclusivo entre o operando fonte e o


operando destino. O operando fonte no alterado e o resultado
armazenado no destino.

Bits de status

N:
Z:
C:
V:

Exemplo

Os bits setados em R6 invertem os correspondentes bits da word


TONI.
XOR
R6, TONI

CEFET-MG

76

Setado
Setado
Setado
Setado

src,dst

se MSB estiver setado, resetado caso contrrio


se resultado for zero, caso
caso contrrio resetado
se resultado 0, do contrrio resetado
se ambos os operandos forem negativos.

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS


o
Departamento de Ensino do 2 grau - Coordenao de Eletrnica
Disciplina: Laboratrio de Sistemas Microprocessados

REFERNCIAS BIBLIOGRFICAS
1

SCHETTINO, John Kennedy S. Sistemas Microprocessados II. Belo


Horizonte: CEFET-MG,
MG, 2005, 138p.

Texas Instrumentos.
os. MSP430x1xx Family: Users Guide 2003 424p.

CEFET-MG

77