microprocessadores Primeira parte: assemblador TASM Por B. Kainka
Este artigo pretende mostrar como os microprocessadores funcionam e como so pro-
gramados. Como plataforma experimental, utilizaremos a Placa 89S8252. Para seguir o curso com maior facilidade, necessrio que o leitor j possua um conhecimento ra- zovel da lgica digital e dos sistemas de notao (decimal, hexadecimal e binrio).
Como o leitor certamente sabe, um
computador PC formado por uma unida- de central de processamento (CPU) e v- rios outros elementos (memria, placa gr- fica, leitores de disquetes, leitor de CD- ROM etc.), tudo alojado numa caixa com um volume aprecivel. Ora, um integrado microprocessador (ou microcontrolador, como tambm chamado) , ao mesmo tempo, mais e menos do que a CPU do computador. Menos porque s pode traba- lhar com programas muito menores e com velocidade muito menor, e mais porque, alm da unidade de processamento, pos- sui ainda no mesmo integrado vrios peri- fricos, como memrias, temporizadores, conversores D/A e A/D, portas de entra- da/sada (I/O) etc. Portanto, podemos di- zer que um circuito integrado micropro- cessador (P) aloja em seu interior um computador completo de pequeno poder de clculo, embora em escala reduzida. O que torna os Ps atrativos a possibi- lidade de o mesmo circuito integrado exe- cutar funes diferentes e variadas, confor- me o programa que o usurio escrever, e tu- do isso por um preo pequeno. No fim, um P comporta-se como um circuito lgico complexo com vrias entradas e sadas, ca- paz de executar a funo que for definida pelo programador. O leitor precisa construir um contador digital? Precisa de uma porta Figura 1. A Placa 89S8252, que vai ser utilizada durante o curso lgica muito especial, ou talvez de um gera-
14 ELETRNICA & MICROINFORMTICA
INFORMAOGERAL dor de sinal de relgio universal? Necessita decodificar um sinal digital complicado ou controlar um circuito digital? Em todos es- ses casos, um P pode ser a soluo ideal e normalmente mais barata. Com apenas um circuito integrado e meia de dzia de com- ponentes externos, possvel executar tare- fas que antigamente necessitavam de uma grande placa repleta de portas lgicas. Dessas consideraes, podemos inferir que quem pretende trabalhar com micro- processadores tem em primeiro lugar de aprender a program-los. Durante nosso curso bsico, vamos utili- zar a Placa 89S8252, cujo aspecto geral pode ser observado na figura 1. A respeito das linguagens de programao, vamos utilizar o assembler, o Basic e a linguagem C. Va- Figura 3. O programa TasmEdit.exe funcionando mos comear pela linguagem assembler. natural que o leitor se interrogue, uma vez tre as linhas da porta P1 e a massa, tal co- 90: Identificao do registrador para onde que se trata de uma linguagem difcil e com- mo mostrado na figura 2. o valor deve ser transferido (trata-se do plicada, principalmente para os principian- Para definir o estado das linhas da porta endereo do registrador da porta P1); tes. Bem, no ser bem assim, porque os P1, vamos escrever um pequeno programa 80: Ordem para executar um salto na leitu- exemplos iniciais sero curtos e de fcil em linguagem assembler. Em termos gerais, ra do programa; compreenso. Alm disso, como se trata de podemos dizer que o programa uma lista- FE: Identificao do local para onde deve uma linguagem de baixo nvel, mais fcil gem de instrues, que o P vai executar se- saltar a execuo do programa (nesse compreender a interao do programa com qencialmente. No entanto, convm saber caso, um Byte atrs). o prprio hardware. As linguagens de alto que cada tipo de P possui um conjunto de nvel, como o Basic e o C, embora de manipu- instrues diferentes. Portanto, um progra- Em termos simples, essa a forma como lao mais simples, escondem muito do que ma escrito para um dado P pode no fun- o P atua, uma vez que o fabricante gravou realmente acontece ao nvel do hardware. cionar com outros Ps de famlia diferente. em hardware as tarefas que ele tem de exe- Em nossa primeira experincia, tudo o Por exemplo, a seguinte srie de valores cutar quando l uma dada instruo. Para que temos de fazer provocar a comutao decimais forma um pequeno programa em explicarmos em detalhes o que se passa no lgica de uma das portas de sada do P. Os linguagem de mquina para o P 89S8252: interior do P, necessitaramos de uma re- resultados podem ser facilmente observa- vista Elektor inteira, mas o leitor fique sos- dos pela leitura de um voltmetro ligado en- 116, 15, 245, 144, 128, 254 segado, porque, para trabalhar com um da- do P, s precisa conhecer o conjunto de Entretanto, como de costume os pro- instrues que ele reconhece. Na prtica, o gramas serem escritos em notao hexade- P pode ser considerado uma caixa preta, cimal, temos para o mesmo programa: da qual no conhecemos o modo de funcio- namento interno, mas sabemos qual a 74 0F F5 90 80 FE reao a cada uma das instrues. No entanto, a linguagem que os Ps en- Depois de definida a seqncia de valo- tendem (apenas nmeros) no muito res do programa, ela tem de ser descarre- apropriada para o crebro humano, que es- gada para a memria do programa do P, t habituado a lidar com palavras. Por essa por exemplo, por meio de um programa de- razo, foram criadas palavras (mnemni- nominado MicroFlash. Depois, o P vai len- cos) para representar cada uma das instru- do a srie de valores para saber as tarefas es da linguagem de mquina. Assim, o que tem de ir executando. Vejamos: programador escreve essas palavras num editor de texto e depois um programa es- 74: Ordem para transferir um valor numri- pecial converte as palavras para os nme- co para o registrador acumulador; ros que o P entende. Esse programa espe- 0F: Valor que deve ser transferido para o cial denomina-se assemblador, uma vez acumulador; que converte a linguagem assembler para Figura 2. O resultado da primeira experincia F5: Ordem para transferir o valor do acu- linguagem de mquina. Em linguagem as- pode ser observado medindo os valores lgicos mulador para o registrador indicado a sembler, o pequeno programa anterior- apresentados nos pinos da porta P1 seguir; mente referido tem agora a seguinte forma:
ELETRNICA & MICROINFORMTICA 15
INFORMAOGERAL main mov a, #0Fh mov P1, a loop sjmp loop .end
As etiquetas para salto e as definies
de palavras aleatrias aparecem logo no incio das linhas, ao passo que as instru- es assembler aparecem deslocadas para a direita. Alm disso, tambm podem ser includos comentrios para facilitar a leitu- ra do programa. Os comentrios so sem- pre iniciados com o caractere ;. Quando detecta um caractere desses, o programa assemblador ignora tudo o que est a se- guir at o fim dessa linha. O conjunto de regras para escrever um programa (sintaxe) varia conforme o as- semblador utilizado. Nesse caso, estamos utilizando o assemblador TASM (Table-Dri- Figura 4. O programa Tasm.exe funcionando numa janela DOS ven Assembler), um programa escrito por Thomas N. Anderson, que bastante sim- main mov a, #0Fh endereos quando executar a translao do ples e pode executar converses para a lin- mov 090H, a cdigo assembler para o cdigo mquina. guagem de mquina de vrios tipos de loop sjmp loop A instruo assembler sjmp pode ser Ps, desde que lhe seja adicionada a res- usada para executar saltos at 127 Bytes pectiva tabela de instrues. Essa forma j mais fcil de entender para trs ou 128 Bytes para frente, mas, No fim do programa, existe a instruo pelo crebro humano. Aqui, s necessrio em nosso exemplo, o salto apenas para de salto para a etiqueta loop, situada logo decorar duas palavras (mov e sjmp), ou seja, um Byte atrs. Note que suficiente um atrs. Em programao, diz-se que essa si- os mnemnicos que representam as instru- Byte para indicar o destino do salto. tuao origina um ciclo fechado (loop) sem es da linguagem mquina. O mnemnico A palavra main do incio do programa fim. Isto , o P fica eternamente executan- mov, do ingls move, significa mover, carre- tambm foi escolhida ao acaso. Embora do o mesmo cdigo, porque, quando chega gar, deslocar. Depois aparece o local a pa- existam outras, nesse caso as nicas pala- ao fim do programa, encontra a instruo ra onde o P deve mover qualquer coisa. vras que representam instrues assem- de salto que envia o processamento outra Esse a significa acumulador, ou seja, o re- bler so mov e sjmp. O programa j mui- vez para trs. Para sair dessa situao, s gistrador de memria com largura de 8 bits, to mais fcil de entender pelo crebro hu- provocando a reinicializao (reset) do P. que pode, portanto, armazenar qualquer va- mano, mas possvel utilizar alguns tru- No entanto, nesse caso, o ciclo fechado lor de 0 a 255. O valor numrico 0Fh (= 15), ques para torn-lo mais legvel. Por exem- muito importante. Como a finalidade do identificado com o smbolo #, o valor que o plo, em vez de escrevermos o endereo do programa alterar o estado lgico das li- P deve mover para o acumulador. registrador da porta P1 (090H), podemos nhas da porta P1, a utilizao do ciclo fe- A segunda linha manda mover o valor definir no incio do programa uma palavra chado permite que os valores lgicos colo- existente no acumulador para o local de me- qualquer que represente o valor numrico cados nas linhas de sada da porta a per- mria identificado pelo endereo 090H (= desse endereo. Por que no utilizarmos maneam eternamente para o leitor poder 144). Nesse endereo, est situado um regis- P1, palavra que nosso crebro relaciona fazer a verificao com um voltmetro. De- trador cujas linhas so encaminhadas para imediatamente porta? pois, basta provocar o reset do P e execu- os pinos do integrado (pinos da porta P1). Para fazermos a definio, utilizamos a tar novamente o mesmo programa, ou car- Portanto, quando o P coloca o valor 090H diretiva assembler .equ, derivada da pa- regar algum outro programa. Note que o nesse registrador, os oito pinos da porta P1 lavra inglesa equate, que significa igual ou carregamento dos programas feito no es- ficam com os nveis lgicos corresponden- equivalente. Note que as diretivas come- tado de reset. Os dados do programa no tes ao valor transferido para o registrador. am sempre com um ponto, para informar so colocados na memria pela unidade de Na terceira linha de cdigo, aparece o convenientemente ao programa assembla- processamento, mas sim por um bloco l- mnemnico sjmp, que significa salto curto dor. Vejamos como fica nosso programa se gico especial. (short jump). A palavra loop foi escolhida ao utilizarmos a palavra P1 em vez do endere- acaso para representar o endereo de desti- o da porta (090H): Assemblador TASM no para o salto na execuo do programa. Para escrevermos nosso primeiro pro- Essas palavras escolhidas ao acaso denomi- ; flash1.asm Porta como sada grama, para convert-lo para linguagem nam-se etiquetas (labels) e o programa as- de mquina e para carregar no P da Pla- semblador as substitui pelos respectivos P1 .equ 090H ;Porta 1 ca 89S8252, necessitamos de um software
16 ELETRNICA & MICROINFORMTICA
INFORMAOGERAL especial. Para essas tarefas, vamos utili- zar o programa shareware TASM forneci- Sistemas de numerao do no disquete do artigo, que pode ser com- prado no Servio Elektor (ref. 0110208-11) A razo de, em nossa vida diria, utilizarmos o sistema de numerao decimal (nmeros ou baixado gratuitamente do site da Elek- formados por dez smbolos ou algarismos) deve-se ao fato de possuirmos dez dedos. tor na Internet. Mas existem muitos outros sistemas de numerao, dos quais os mais usados so o sistema Em primeiro lugar, necessrio des- hexadecimal (16 smbolos), o sistema octal (oito smbolos) e o sistema binrio (dois smbolos). compactar o arquivo Tasm.zip existente no claro que, quanto menor for o nmero de smbolos do sistema de numerao, disquete para uma pasta do disco rgido. maior quantidade de smbolos necessrio utilizar para representar a mesma quantidade. Copie para essa pasta o arquivo flash1.asm Por outro lado, nos sistemas de numerao superiores ao decimal, necessrio utilizar de nosso exemplo. Uma caracterstica inte- letras maisculas para representar os smbolos (algarismos) acima de 9, como acontece ressante do programa TASM poder ser no sistema hexadecimal em que se utilizam as letras: A = 10; B = 11; C = 12; D = 13, E = 14 e F = 15). usado com vrios tipos de Ps, mas, para cada um, tem de existir na mesma pasta a Decimal Octal Hexadecimal Binrio tabela de instrues de mquina corres- 0 00O 00H 0000 0000B pondente (Tasm51.tab para o caso de nos- 1 01O 01H 0000 0001B sa Placa 89S8252). Para criar o arquivo de 2 02O 02H 0000 0010B cdigo de mquina, basta emitir a seguinte 3 03O 03H 0000 0011B linha de comando em ambiente DOS: ... ... ... ... 10 12O 0AH 0000 1010B TASM -51 -b flash1.asm flash1.bin 11 13O 0BH 0000 1011B 12 14O 0CH 0000 1100B onde o parmetro -51 define a tabela de 13 15O 0DH 0000 1101B 14 16O 0EH 0000 1110B converso apropriada para nosso P; -b sig- 15 17O 0FH 0000 1111B nifica que deve ser gerado um arquivo de 16 20O 10H 0001 0000B cdigo-objeto no formato binrio; flash1. 17 21O 11H 0001 0001B asm o arquivo que deve estar guardado ... ... ... ... na mesma pasta do assemblador Tasm e 253 375O FDH 1111 1101B que contm o programa que acabamos de 254 376O FEH 1111 1110B escrever. Finalmente, flash1.bin o nome 255 377O FFH 1111 1111B do arquivo que o Tasm vai gerar e que ser- vir para descarregar para a memria do A escolha do sistema a ser utilizado depende da tarefa em questo. Por exemplo, para P. Se o leitor experimentar emitir essa li- analisar os valores lgicos de sada de uma porta de 8 bits, melhor representar o valor na nha de comando, ver que, na pasta, vo notao binria, porque cada linha da porta corresponde a 1 bit. A linha P1.0 representa aparecer os arquivos flash1.bin e flash1.lst. o bit menos significativo e a linha P1.7 representa o bit mais significativo. Os programas assembler normalmente permitem a escolha do sistema de notao Entretanto, como j ningum gosta de a ser utilizado e um algoritmo interno executa as necessrias converses. trabalhar com linhas de comando DOS, foi Quando o TASM converte um dado programa, possvel indicar qual deve ser o sistema criado o programa Tasmedit.exe, que fun- de numerao do arquivo de sada, mas necessrio escolher um sistema que possa ciona em ambiente Windows e que tam- ser utilizado pelo programa que vai descarreg-lo para a memria do P. bm existe no disquete do artigo. Esse pro- Os arquivos do formato Intel Hex so formados por linhas com nmeros hexadecimais, grama controla automaticamente a execu- mas tambm existem o endereo de incio e um valor para eventuais correes o do programa Tasm.exe. de erros (ckecksum). Copie o arquivo Tasmedit.exe para a pasta onde est o programa Tasm.exe e execute-o. Na tela do PC, aparecem duas est apresentado na janela da esquerda go assembler. Se os arquivos de sada no janelas, como mostra a figura 3. Na janela (igual a flash1.asm); work.lst, com a lista- possussem sempre o mesmo nome, de- da esquerda, pode-se escrever manual- gem que aparece na janela da direita; e pois de algumas modificaes a pasta de mente o programa e, depois de apertar o work.bin, que poder servir para descarre- trabalho estava cheia de arquivos com er- boto TASM, na janela da direita aparece o gar para o P. No fim, o programa Tasmedit ros que no serviam para nada. Assim, de- resultado da converso, incluindo poss- chama automaticamente o programa Tasm pois de verificar na janela da direita que j veis erros. Como em nosso caso o progra- utilizando a seguinte linha de comando: no ocorrem erros de converso, pode en- ma j est escrito no arquivo flash1.asm, to guardar o texto da janela esquerda, basta abrir esse arquivo por meio do boto TASM -51 -b work.asm work.bin apertando o boto Save as e atribuindo- OPEN. Depois, ao apertar o boto TASM, lhe o nome que desejar. Os arquivos work. vai verificar que se abre automaticamente O fato de usar sempre o nome work pa- bin e work.lst contm os valores da ltima a janela do programa tasm.exe, que faz a ra os arquivos criados facilita muito o tra- tentativa de programao. Se o leitor se converso do arquivo flash1.asm e gera balho quando ocorrem erros e necess- esquecer de guardar a ltima verso do trs arquivos: work.asm, que contm o que rio fazer sucessivas modificaes no cdi- cdigo-fonte (.asm), ou se o computador
ELETRNICA & MICROINFORMTICA 17
INFORMAOGERAL gado e o leitor pode agora verificar se ele Software funciona corretamente. Ligando um mul- tmetro, selecionado como voltmetro, nos vrios pinos da porta P1, pode-se verificar Para carregar um programa na memria do P da Placa 89S8252, necessrio o programa qual o estado lgico que eles apresen- MicroFlash.exe, contido no disquete do artigo, que pode descarregar programas com formato hexadecimal ou binrio. tam: cerca de +5 V para o nvel alto e cer- Durante a primeira fase do curso, s necessrio o assemblador TASM, mas mais tarde ca de 0 V para o nvel baixo. tambm vo ser precisos o compilador Rigel READ51 C e o compilador BASIC-52. Em estado de espera, sem qualquer O assemblador TASM est contido no disquete do artigo em conjunto com o TasmEdit. programa rodando, todos os pinos da por- Se o leitor continuar utilizando esse programa, deve pagar o respectivo registro ta devem apresentar o nvel lgico alto a T.N. Anderson, que bem o merece. O autor do compilador C (Rigel) permite sua (cerca de +5 V), mas, como nosso progra- utilizao gratuita em atividades educacionais e privadas. Esse compilador pode ser baixado do site (www.rigelcorp.com) da Internet. ma experimental transferiu o valor 15D = O BASIC-52 um interpretador de comandos criado pela Intel, que era gravado por 0FH = 00001111 B para os oito pinos da mscara na memria dos Ps 80C52, que assim recebiam a designao 80C52-AH-BASIC. porta, o leitor deve medir cerca de +5 V Esse P foi muito utilizado durante duas dcadas, tornando-se famoso. Entretanto, a Intel nos pinos de P1.0 a P1.3 e cerca de 0 V deixou de fabricar esses Ps, mas tornou pblico o cdigo do interpretador BASIC, nos pinos de P1.4 a P1.7. que pode agora ser utilizado livremente por qualquer pessoa. Mais tarde, o cdigo foi (010208) ampliado e adaptado por terceiros, para poder ser utilizado com outros tipos de P, e a verso mais moderna (V1.3) est disponvel no Servio Elektor (ref. 000121-11). O disquete do presente artigo (ref. 010208-11) contm o assemblador TASM, o programa No prximo nmero, vamos apresentar TasmEdit e programas exemplo, alm do BASIC-52, MicroFlash e um pequeno programa um pequeno programa, destinado a in- emulador de terminal com os prprios programas exemplo. vestigar as caractersticas da porta do P: utilizao como entradas, como sadas e mxima velocidade que pode manejar.
PC travar, ele tem a sua disposio o ar-
quivo work.asm para recuperar o fruto de vrias horas de trabalho. Quando se aperta o boto TASM, apa- rece a janela DOS do programa tasm.exe (figura 4), que tem de ser fechada com o mouse antes de poder prosseguir. Para os iniciados, pode ser interessante ver o pro- grama executando a converso, mas, pas- sado algum tempo, s serve para fazer perder tempo. No entanto, o sistema ope- racional Windows permite resolver esse problema. V pasta onde est o progra- ma Tasm.exe e d um clique com o boto direito do mouse. Depois, d um clique esquerdo em Properties e abra a pasta Program. Na janela que aparece (figura 5), marque a caixa Close on Exit. Com es- sa ao, o Windows gera um arquivo PIF (Tasm.pif) e a janela DOS passar a fe- char-se automaticamente quando o tra- balho de converso estiver completo. Depois de verificar na janela da direita que j no ocorrem erros de converso, pode descarregar automaticamente o ar- quivo work.bin para a memria do P, cli- cando no boto RUN. claro que, nessa altura, o circuito da Placa 89S8252 deve estar ligado a uma das portas do PC (COM1 ou COM2). direita do boto RUN, necessrio indicar ao programa qual a porta que vai ser utilizada. Depois do descarregamento, o P ini- Figura 5. Se a caixa Close on Exit estiver marcada, o programa DOS encerra-se automaticamente quando acaba seu trabalho cia imediatamente o programa descarre-