Vous êtes sur la page 1sur 5

INFORMAOGERAL

Curso bsico sobre


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-

18 ELETRNICA & MICROINFORMTICA

Vous aimerez peut-être aussi