Você está na página 1de 7

Programao Daniel Corteletti Aula 3 Parte III Pgina 1/7

LINGUAGEM DE PROGRAMAO - ASSEMBLY - PARTE I


Assembly - o que
"Assembly" significa montagem. "Assembler" significa montador. Montagem o ato de
transformar uma seqncia de cdigo fonte (texto) em cdigo objeto (linguagem de mquina)! e
montador o "rograma que fa# isso.
$bser%e no diagrama abaixo que o &'$('AMA)$' escre%e uma lista de comandos
em forma de texto! onde cada lin*a reali#a uma fun+,o es"ec-fica.
.o entanto! "ara o microcontrolador n,o entende estes comandos em modo texto. /les
"recisam antes ser tradu#idos "ara uma linguagem binria (linguagem de mquina)! e isso
feito "elo "rograma montador (A00/M12/').

&rogramar diretamente em linguagem de mquina at "oss-%el! mas muito! mas
muito mais dif-cil do que "rogramar em assembly.
3sando esta linguagem e um "rograma montador! o "rogramador n,o escre%e em
linguagem de mquina! e sim em uma linguagem textual! facilitando a constru+,o dos
"rogramas. /mbora fique mais fcil do que "rogramar direto em linguagem de mquina!
"rogramar em A00/M124 ainda uma das formas mais "dif-ceis" de "rograma+,o! sendo
con*ecida como a linguagem de "rograma+,o de "mais baixo n-%el".
$ arqui%o fonte do diagrama acima (aquela lista de comandos digitada "elo
"rogramador) com"osta de instru+5es (mnemnicos), p!"me#!os, !$#%&os, comen#'!ios e
(i!e#i)s! e a"s s,o transformados em linguagem de mquina "or um "rograma mon#(o!.
6amos con*ecer cada um destes com"onentes do "rograma.
INSTRUO 7 8 o nome dado a uma o"era+,o que o microcontrolador "ode reali#ar. &or
exem"lo! se o microcontrolador "ode reali#ar a soma de dois %alores! di#emos que existe no
m-nimo uma instru+,o "ara soma. .o caso do microcontrolador &9:! as instru+5es que
reali#am soma s,o duas! a A));< e a A))2;. 6oc consegue descobrir que instru+5es
est,o dis"on-%eis "ara "rograma+,o assembly no datas*eet do microcontrolador em quest,o.
MNEM*NI+O 7 8 uma re"resenta+,o textual de uma instru+,o. As instru+5es s,o! na
%erdade! cdigos binrios! e "ara serem entendidos "elos "rogramador de%em ser
re"resentados na forma textual. 0e os mnem=nicos n,o fossem utili#ados! ter-amos que
"rogramar assembly utili#ando cdigos numricos dif-ceis de memori#ar. )esta forma! uma das
instru+5es de adi+,o citadas anteriormente "ossui o mneum=nico A));<! e sua
re"resenta+,o binria >>>???xxxxxxxx onde x .
PAR,METROS 7 0,o as informa+5es mani"uladas "or uma instru+,o. 9sso necessrio
sem"re que "recisarmos informar @ instru+,o quais os elementos en%ol%idos na o"era+,o. &or
exem"lo! se desejarmos somar dois %alores! a instru+,o "oder ser A));< ou A))2;! mas
os valores a serem somados tambm de%er,o ser informados! sendo estes Altimos os que
c*amamos de ""arBmetros."
DIRETI-AS . 0,o lin*as que determinam como o "rograma montador ir trabal*ar. .,o
geram efeito direto no cdigo binrio gerado. &or exem"lo! a direti%a LIST p/012344
determina qual o microcontrolador que ser usado.
R5TULOS . 0,o nomes dados as lin*as do "rograma! e ser%em "ara que em uma
instru+,o de des%io "ossa se determinar o "onto "ara onde se deseja ir no "rograma. $s
rtulos sem"re s,o alin*ados na coluna > (sem es"a+os antes do mesmo)! enquanto que as
instru+5es de%em ser escritas a"s uma margem (obrigatoriamente a"s a coluna >).
Programao Daniel Corteletti Aula 3 Parte III Pgina 2/7
+OMENT6RIOS . 0,o trec*os de texto escritos a"s um sinal de "onto e %-rgula (C). 0,o
Ateis "ara que "ossamos adicionar "equenos lembretes no "rograma! facilitando a manuten+,o
futura. .,o interferem no taman*o do "rograma binrio gerado.
$utros termos im"ortantes 7
MONTADOR 7 8 o "rograma que transforma um "rograma fonte assembly em um
"rograma execut%el. 3m exem"lo o M&A0M! que fa# "arte do M&2A1! uma ferramenta de
desen%ol%imento distribu-da "ela Micro:*i" (fabricante dos microcontroladores &9:)
A0 9.0D'3EF/0
&or se tratar de um microcontrolador '90:! o &9: oferece um nAmero redu#ido de
instru+5es. .o entanto! ainda "odemos di%idir as instru+5es utili#adas "ela fam-lia ?G dos
microcontroladores &9: em G gru"os 7
9nstru+5es "ara mani"ula+,o de bytes de memria (1)
9nstru+5es "ara mani"ula+,o de bits de memria (b)
)es%ios incondicionais ()i)
)es%ios condicionais ())
9nstru+5es com %alores constantes (H)
9nstru+5es de controle (()
Ins#!%78o e
P!"me#!os
Mne%mnicos
Desc!i78o Tipo +ic&os
Bi#s (e s##%s
9e#(os
A));< f! d Adi+,o 7 ; I <. 1 ? :! ):! J
A.);< f! d / binrio (A.)) entre ; e <! bit a bit. 1 ? J
:2'< f Jera todos os bits de <. 1 ? J
:2'; Jera todos os bits de ;. 1 ? J
:$M< f! d :om"lemento de <. (bits com %alores
in%ertidos no byte)
1
?
J
)/:< f! d )ecrementa < 1 ? J
)/:<0J f! d )ecrementa < e "ula "rxima lin*a se
resultar #ero
1!)c
? (K)
9.:< f! d 9ncrementa < 1 ? J
9.:<0J f! d 9ncrementa < e "ula "rxima lin*a se
resultar #ero
1!)c
? (K)
9$';< f! d $3 inclusi%o ($') de ; com < 1 ? J
M$6< f! d Mo%e < (geralmente usado "ara mo%er <
"ara ;)
1
?
J
M$6;< f Mo%e ; "ara < 1 ?
.$& $"era+,o nula. .ada executado. ( ?
'2< f! d 'otaciona < "ara esquerda com :arry <lag 1 ? :
''< f! d 'otaciona < "ara direita com :arry <lag 1 ? :
031;< f! d 0ubtrai ; de < 7 (fL;) 1 ? :!):!J
0;A&< f! d Droca os nibbles de f. /x7 (>xAM! a"s sNa"
fica! >xMA)
1
?
O$';< f! d $u exclusi%o (O$') entre ; e < 1 ? J
Programao Daniel Corteletti Aula 3 Parte III Pgina 3/7
1:< f! b A"aga (clear) um bit de < b ?
10< f! b 2iga (set) um bit de < b ?
1D<0: f! b Desta um bit de <! "ulando se for #ero b!)c ? (K)
1D<00 f! b Desta um bit de <! "ulando se for um b!)c ? (K)
A))2; P Adiciona uma constante H em ; 1 ? :!):!J
A.)2; P / (and) lgico de uma constante com ; 1 ? J
:A22 P <a# uma c*amada a uma subrotina )i K
:2';)D 2im"a o ;atc*dog Dimer (relgio do c,o de
guarda)
(
?
QD$! Q&)
($D$ P 6 "ara. 3m des%io "ara um outro "onto do
"rograma.
)i
K
9$'2; P $u inclusi%o ($') de uma constante com ; 1 ? J
M$62; P Mo%e uma constante "ara ; 1 ?
'/D<9/ 'etorna de uma interru"+,o )i K
'/D2; P 'etorna de uma subrotina! mo%endo uma
const. "ara ;
1!)i
K
'/D3'. 'etorna de uma subrotina )i K
02//& 6ai "ara o modo standby ( ? QD$! Q&)
0312; P 0ubtrai uma constante de ; 1 ? :!):!J
O$'2; P $u exclusi%o ($') entre ; e uma constante 1 ? J
+omo en#en(e! #:e& cim .
0; +o&%n . INSTRUO L )escre%e todas as instru+5es utili#adas "elo microcontrolador
&9:?G<RSS. As instru+5es geralmente "ossuem nomes relacionados a suas fun+5es. &or
exem"lo! ($D$ lembra ($ D$! que em ingls significa 6T &A'A ... U 02//& significa
)$'M9'. A))2; lembra A)) que em ingls significa adicionar.... e assim "or diante.
<; +o&%n . PAR,METROS L )escre%e os o"erandos utili#ados "ela instru+,o. .esta
coluna a"arecem as letras f! d! b! P.
$ =9) identifica que o "arBmetro de%e ser uma "osi+,o da memria 'AM interna ( >%e
c?m!emos (e !e@is#!(o!es). $s registradores ser,o ex"licados em bre%e e ex"ressos em
uma tabela.
$ =() identifica um "arBmetro de destino! e "ode %aler ; ou <. ; o registrador "rinci"al! e <
qualquer outro registrador.
$ =:) um "arBmetro de identifica+,o de um bit (> a S). &or exem"lo! BS2 PORTD,A onde o
(b) %ale > ati%a o bit menos significati%o (bit >) do registrador &$'D1.
$ =B) identifica que o "arBmetro em quest,o uma constante (rtulo ou %alor fixo). &or
exem"lo! MO-LC 0A onde o %alor de H ?>! mo%e a constante ?> "ara o registrador "rinci"al.
D; +o&%n . DES+RIO L )escre%e a fun+,o dos o"erandos.
E; +o&%n - TIPO. )efine o gru"o onde a instru+,o se encaixa. 6eja a legenda no texto
acima da tabela.
Programao Daniel Corteletti Aula 3 Parte III Pgina 4/7
FG +o&%n - +I+LOS L 3ma instru+,o "ode consumir ? ou K ciclos de mquina. :ada
ciclo de mquina! no caso dos microcontroladores &9:?G<Rxx! corres"ondem a V "ulsos de
clocP. &ortanto! se o cristal utili#ado no microcontrolador for de VMW#! ocorrer,o ?Mega:iclos
"or segundo! ou seja! ? mil*,o de ciclos "or segundo (tambm usaLse ?mi"s L ? mil*,o de
instru+5es "or segundo). Algumas instru+5es! "ortanto! demorar,o ?X?>>>>>> de segundos (?
microsegundo) "ara serem executadas! e outras demorar,o KX?>>>>>> segundos (K
microsegundos). Algumas instru+5es (como os des%ios condicionais) "odem demorar ? ou K
ciclos! de"endendo da condi+,o a%aliada "ela instru+,o.
1; +o&%n - BITS DE STATUS A2ETADOS L 9nicialmente! de%emos entender o que s,o
19D0 )/ 0DAD30. )e uma forma resumida! s,o "indicadores" existentes na memria do
microcontrolador que registram informa+5es sobre as o"era+5es reali#adas (/xem"lo 7se a
Altima o"era+,o resultou em #ero ou n,o! se *ou%e estouro no %alor com"utado! etc...). /sta
coluna %isa descre%er quais destes 19D0 )/ 0DAD30 s,o afetados "ela instru+,o. &ara saber
mais sobre estes bits de status! "rocure bibliografia com"lementar.
/xerc-cio 7 $bser%ando o trec*o de "rograma abaixo! e tendo em m,os a tabela a "ouco
descrita! "rocure descobrir o que cada lin*a significa.
volta
btfss PORTA,1
goto deslig
ligado
movlw 0x0F
movwf PORTD
goto volta
deslig
movlw 0xAA
movwf PORTD
goto volta
REGISTRADOR
8 o nome utili#ado "ara identificar uma "osi+,o de memria interna do microcontrolador.
.o caso do microcontrolador &9:?G<RSS! "ossu-mos ca"acidade de acesso interno a Y?K bytes
de memria. :ada byte (R bits) um registrador. Demos! "ortanto! Y?K registradores. .o
entanto! alguns destes registradores s,o utili#ados "ara fins es"ec-ficos! estando diretamente
relacionados a "erifricos internos do microcontrolador (como con%ersores A)! entradas e
sa-das digitais! configura+,o dos "erifricos! etc...)! e outros destes registradores n,o s,o
fisicamente im"lementados (s,o "buracos" deixados "ara futuras mel*orias do "rojeto do
microcontrolador).
$utros registradores s,o os denominados "(eneral &ur"ose 'egisters"! ou
"'egistradores de 3so (eral". 0,o "osi+5es de memria li%res! que "odem ser utili#ados "ara
arma#enamento tem"orrio de %alores (%ari%eis). :omo s,o "arte da memria 'AM do
microcontrolador! #o(os os ((os !mHen(os nos !e@is#!(o!es s8o )o&'#eis, ou seja!
s,o "erdidos ao se desligar o mesmo.
$bser%e! na tabela que segue! os <92/ '/(90D/'0 (ou Arqui%os 'egistradores) do
&9:?G<RSS
Programao Daniel Corteletti Aula 3 Parte III Pgina 5/7
(Dabela retirada do datas*eet do microcontrolador &9:?G<RSS)
Programao Daniel Corteletti Aula 3 Parte III Pgina 6/7
+onsi(e!7Ies impo!#n#es so:!e os !e@is#!(o!es .
?./st,o di%ididos em 1A.:$0 )/ M/MZ'9A. .a "rograma+,o em assembly!
"recisamos selecionar o banco de memria antes de acessar um determinado registrador. 9sso
"ode ser feito atra%s do registrador 0DAD30 (que a"arece em todos os bancos de memria).
.ele existem K bits que "ermitem definir qual o banco de memria que est ati%o ("agina+,o).
K.Alguns registradores s,o de uso geral! liberados "ara uso com %ari%eis. /x 7
registradores K>* a S<* do 1A.H >.
M.'egistradores como o 0DAD30 e o $&D9$.['/( s,o utili#ados "ara configura+,o de
caracter-sticas do M:! como mudan+a de banco de memria! %elocidade de incremento de
tem"ori#adores! etc... 'ecomendaLse um a"rofundamento maior! atra%s da bibliografia
sugerida.
V.&ara uma boa "rograma+,o assembly! o con*ecimento sobre estes registradores
indis"ens%el.
OS REGISTRADORES JUE MAIS UTILIKAREMOS NESTA 2ASE DO +URSO SO .
PORTA, PORTB, PORT+, PORTD e PORTE \ 'egistradores que re"resentam o estado
dos "inos do &9:. &or exem"lo! se %oc desejar acionar o "ino ':M do microcontrolador!
de%er ligar o bit M do registrador &$'D:.
$bs7 .em todos os bits dos registradores citados "ossuem re"resenta+,o f-sica. /x 7 &$'D/!
bit V.
STATUS 7 este registrador "ossui K bits que ser%em "ara definir o 1A.:$ )/ M/MZ'9A
(6/UA DA1/2A A:9MA) que ser usado nas "rximas o"era+5es. Dambm "ossui informa+5es
referentes a sinali#adores de erro! estouro de memria! etc...
TRISA, TRISB, TRIS+, TRISD, TRISE \ 0er%e "ara definir se um determinado &9.$
ser de entrada ou sa-da. 9sso im"ortante! "ois desta forma que o &9: ir saber se %oc
quer 2/' sinal de um "ino (que flutuar conforme tens,o de entrada) ou se quer /.69A' um
sinal "ara este "ino (mantendo assim o n-%el de tens,o desejado).
AD+ON0 \ 0er%e "ara configurar o con%ersor A) (ligar ou desligar! es"ecificar o "adr,o
de coners,o! etc.)

/xerc-cios 7
? L A"onte as instru+5es! os registradores! "arBmetros! rtulos! comentrios e direti%as
encontrados no "rograma abaixo.
; AUTOR : DANI! "ORT!TTI
; F#RIRO D $00%
; "NTRO T"NO!&'I"O D ("ATRONI"A )NAI
!I)T *+1,F-..
/i01l2de 3P1,F-..4IN"3
551o0fig 5"P5OFF 6 5P7RT5OFF 6 57DT5OFF 6 58T5O)"
#AR1 e92 $0
#AR$ e92 $1
#AR% e92 $$
"ONT e92 $%
o:g 0
goto i0i1io
i0i1io
b1f )TATU), RP0
b1f )TATU), RP1
1l:f PORTA
bsf )TATU), RP0
movlw 0x0,
movwf AD"ON1
movlw 0xff
movwf TRI)A
movlw 0x00
movwf TRI)D
Programao Daniel Corteletti Aula 3 Parte III Pgina 7/7
b1f )TATU), RP0
1ome1o movlw 0x01
movwf PORTD
movlw 0x0.
movwf "ONT
volta1 1all tem*o
:lf PORTD,f
de1fs; "ONT,f
goto volta1
movlw 0x0.
movwf "ONT
volta$ 1all tem*o
::f PORTD,f
de1fs; "ONT,f
goto volta$
goto 1ome1o
tem*o movlw 0x0%
movwf #AR1
tem*1 movlw 0x%F
movwf #AR$
tem*$ movlw 0xFF
movwf #AR%
de1fs; #AR%,F
goto <=1
de1fs; #AR$,F
goto tem*$
de1fs; #AR1,F
goto tem*1
:et2:0
< - P! >%e se!)e o !e@is#!(o! TRISD L
D - P! >%e se!)e o !e@is#!(o! PORTD L
E - J%e ins#!%7Ies (e)e!i se! eMec%#(s p! >%e o pino RDF 9osse cion(o L
F - A mem$!i (o mic!ocon#!o&(o! PI+ N se@men#( em >%n#os :ncos L
4 - J%e #ipo (e p!o@!m )ocO )i p!ecis! p! p!o@!m! em ssem:&P L
= ) Um e(i#o! (e #eM#os como o CORD
= ) Um e(i#o! (e im@ens como o PAINT
= ) Um mon#(o! como o MPLAB
= ) Um n)e@(o! como o INTERNET EQPLORER
= ) Um p&ni&? e&e#!nic como o EMce&
3 - Ao esc!e)e! %m p!o@!m ssem:&P, N possR)e& se !e&iH! no#7Ies =#!ec?os
(e #eM#o) no meio (o p!o@!mS +omo isso N possR)e& L Isso %men# o #mn?o (o
p!o@!m :in'!io =!>%i)o TEQ) @e!(o L

Você também pode gostar