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