Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programao
No comeo, programar um microprocessador para executar uma determinada tarefa no era uma
das coisas mais fceis que existiam. O programador estava preso a utilizar-se da Linguagem de Mquina,
que era a programao diretamente em binrio ou em hexadecimal. Guardar o que cada cdigo, ou seja,
cada nmero binrio ou seu equivalente em hexadecimal significava para o microprocessador, no era fcil.
Logo foi criada a primeira linguagem de programao, a linguagem Assembly. Na linguagem assembly,
cada cdigo que possui um significado especial para o microprocessador - que chamado de instruo recebe um nome, chamado genericamente de Mnemnico. muito mais fcil de se memorizar um nome do
que um cdigo qualquer, alm de ser muito mais fcil de se programar por nomes. Por exemplo, uma
comparao tpica (voc no precisa ainda saber o que exatamente significa tudo isto, o objetivo aqui a
comparao):
Microprocessador 8086
Ling. de mquina
B0 FF
A2 00 20
Assembly
MOV AL, 0FFh
MOV [2000h], AL
Microprocessador 6800
Ling. de mquina
86 FF
97 00 20
Assembly
LDA A, # FF
STA A, $2000
Microprocessador 6502
Ling. de mquina
A9 FF
8D 00 20
Assembly
LDA # FF
STA $2000
O que significa isto tudo e qual o nosso objetivo com isto ? Todos os trs programas para os trs
microprocessadores apresentados executam a mesma tarefa: colocar o valor 255 na posio de memria
2000h. Voc deve ter reparado duas coisas. A primeira, o assunto que ns estvamos discutindo: muito
mais fcil programar em assembly do que em linguagem de mquina ( muito mais fcil voc guardar MOV
AL do que B0, por exemplo). A segunda, que para cada microprocessador possumos um conjunto de
instrues prprio. Ou seja, no h qualquer correlao entre as instrues dos diversos tipos de
microprocessadores existentes no mercado. O que estipular uma famlia de microprocessadores ser
justamente a existncia de uma similaridade no conjunto de instrues dos microprocessadores que
constituam uma famlia. Por assim dizer, um 8086, um 8088, um 80286, um 80386 etc. constituem uma
famlia de microprocessadores por possurem instrues similares. Quem sabe programar em assembly em
um 8086 saber programar em um 80286, salvo, claro, as instrues adicionais que cada
microprocessador possuir e que no ser muito difcil aprender. Esta famlia de microprocessadores
chamada Intel Iapx86, 80x86 ou simplesmente Intel e a famlia de microprocessadores que est
presente no padro IBM PC de microcomputadores. Outros microprocessadores como o 6800, o 68000,
68020, etc. constituem uma outra famlia de microprocessadores, por possurem instrues similares entre
si, porm completamente diferentes da famlia Intel. Esta outra famlia chamada 680x0 ou simplesmente
Motorola e a famlia de microprocessadores que est presente em microcomputadores como o
MacIntosh, o Amiga e estaes de computao grfica.
Porm devemos lembrar que mesmo sendo o Assembly uma linguagem de baixo nvel, o
microprocessador no a entende - ele entende somente linguagem de mquina. O microprocessador no
sabe o que MOV AL, o mnemnico para a instruo B0. Ele entende somente nmeros, e portanto s
sabe interpretar B0. Esta converso pode ser feita basicamente de duas maneiras: ou na mo mesmo,
utilizando-se a tabela de instrues fornecida pelo fabricante ou utilizando-se de um programa para tal. Este
programa chamado genericamente de Assembler, ou seja, montador. O Assembler l um programa lido
em Assembly e converte-o para linguagem de mquina. Entenda que no h qualquer tipo de traduo
indireta: a linguagem Assembly apenas os opcodes (nmeros que representam instrues especficas)
com um rtulo particular, chamado, como vimos, mnemnico.
GWBasic
AppleSoft Basic
10 CLS
20 PRINT "Oi, tudo bem ?"
10 HOME
20 PRINT "Oi, tudo bem ?"
PROGRAM ESCREVE;
USES
CRT;
BEGIN
CLRSCR;
WRITE ('Oi, tudo bem ?');
END.
Comentrios:
C
# include stdio.h
# include conio.h
void main ()
{
clrscr();
printf(Oi, tudo bem ?);
}
Comentrios:
Nota-se claramente que tanto o Pascal quanto o C possuem uma estrutura muito mais rgida do que
o BASIC, tornando o programa final muito melhor de ser lido por pessoas que no fizeram parte do
processo de criao do mesmo - no BASIC, que no possui uma estrutura to rgida, geralmente demora-se
muito mais tempo at entendermos o funcionamento de um programa escrito por outra pessoa. Linguagens
como Pascal e C so consideradas, portanto, linguagens estruturadas, por necessitarem de uma estrutura
rgida de programao.
Mas como o computador entende os comandos programados ? Isto vai depender da forma que o
microcomputador vai "encarar" a linguagem. Quando, por exemplo, a linguagem vem residente, como no
caso do BASIC dos microcomputadores mais antigos, o microcomputador passa a dispor de um
interpretador sendo esta linguagem considerada uma linguagem interpretada. Nas linguagens
interpretadas, o interpretador faz com que o microprocessador "entenda" a linguagem como se fosse uma
coisa "normal", ou seja, algo que j fizesse parte do microcomputador como um todo. Neste caso, a cada
comando entrado, a linguagem (que um programa, como j vimos) ir pegar o comando de alto nvel,
interpret-lo e, caso tenha sido entrado com a sintaxe correta, ser executado convertendo-o em um
conjunto de instrues equivalentes em linguagem de mquina para que o microprocessador possa
executar o que o programador deseje. Mas caso ns no tenhamos um interpretador, devemos nos utilizar
de um compilador e neste caso a linguagem passa a ser considerada linguagem compilada. Nas
linguagens compiladas, o compilador "converte" a linguagem de alto nvel - que o microprocessador no
entende - em linguagem de baixo nvel. Um programa executado em linguagem compilada muito mais
rpido, pois est na verdade sendo executado integralmente em baixo nvel, o que no acontece na
linguagem interpretada. Em compensao durante o processo de criao e edio do programa toda vez
que quisermos testar o programa deveremos compil-lo antes, o que pode demorar um pouco - o que no
acontece com as linguagens interpretadas, aonde o programa executado na hora.
Texto gentilmente cedido por Flvio Toledo (flaviot@sti.com.br)
www.sti.com.br