Buscar

PR

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

"No começo, programar um microprocessador para executar uma determinada tarefa não era 
uma das coisas mais fáceis que existiam. O programador estava preso a utilizar-se da 
Linguagem de Máquina, que era a programação diretamente em binário ou em hexadecimal. 
Guardar o que cada código, ou seja, cada número binário ou seu equivalente em hexadecimal 
significava para o microprocessador, não era fácil. Logo foi criada a primeira linguagem de 
programação, a linguagem Assembly. Na linguagem assembly, cada código que possui um 
significado especial para o microprocessador - que é chamado de instrução - recebe um nome, 
chamado genericamente de Mnemônico. É muito mais fácil de se memorizar um nome do que 
um código qualquer, além de ser muito mais fácil de se programar por nomes. 
 
Por exemplo, uma comparação típica (você não precisa ainda saber o que exatamente significa 
tudo isto, o objetivo aqui é a comparação): 
 
Microprocessador 8086 
 
Ling. de máquina Assembly 
B0 FF MOV AL, 0FFh 
A2 00 20 MOV [2000h], AL 
 
Microprocessador 6800 
 
Ling. de máquina Assembly 
86 FF LDA A, # FF 
97 00 20 STA A, 00 
 
Microprocessador 6502 
 
Ling. de máquina Assembly 
A9 FF LDA # FF 
8D 00 20 STA 00 
 
O que significa isto tudo e qual o nosso objetivo com isto ? Todos os três programas para os 
três microprocessadores apresentados executam a mesma tarefa: colocar o valor 255 na 
posição de memória 2000h. Você deve ter reparado duas coisas. A primeira, o assunto que nós 
estávamos discutindo: é muito mais fácil programar em assembly do que em linguagem de 
máquina (é muito mais fácil você guardar MOV AL do que B0, por exemplo). A segunda, que 
para cada microprocessador possuímos um conjunto de instruções próprio. Ou seja, não há 
qualquer correlação entre as instruções dos diversos tipos de microprocessadores existentes 
no mercado. O que estipulará uma família de microprocessadores será justamente a existência 
de uma similaridade no conjunto de instruções dos microprocessadores que constituam uma 
família. 
 
Por assim dizer, um 8086, um 8088, um 80286, um 80386 etc. constituem uma família de 
microprocessadores por possuírem instruções similares. Quem sabe programar em assembly 
em um 8086 saberá programar em um 80286, salvo, é claro, as instruções adicionais que cada 
microprocessador possuirá e que não será muito difícil aprender. Esta família de 
microprocessadores é chamada Intel Iapx86, 80x86 ou simplesmente Intel e é a família de 
microprocessadores que está presente no padrão IBM PC de microcomputadores. Outros 
microprocessadores como o 6800, o 68000, 68020, etc. constituem uma outra família de 
microprocessadores, por possuírem instruções similares entre si, porém completamente 
diferentes da família Intel. Esta outra família é chamada 680x0 ou simplesmente Motorola e é 
a família de microprocessadores que está presente em microcomputadores como o 
MacIntosh, o Amiga e estações de computação gráfica. 
 
Porém devemos lembrar que mesmo sendo o Assembly uma linguagem de baixo nível, o 
microprocessador não a entende - ele entende somente linguagem de máquina. O 
microprocessador não sabe o que é MOV AL, o mnemônico para a instrução B0. Ele entende 
somente números, e portanto só sabe interpretar B0. Esta conversão pode ser feita 
basicamente de duas maneiras: ou “na mão” mesmo, utilizando-se a tabela de instruções 
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 máquina. Entenda que não há qualquer tipo de 
tradução indireta: a linguagem Assembly é apenas os opcodes (números que representam 
instruções específicas) com um rótulo particular, chamado, como vimos, mnemônico. 
 
Tópicos deste artigo 
1 - Linguagens de Alto Nível 
Linguagens de Alto Nível 
Em um microcomputador você necessita de recursos muito mais avançados do que a 
linguagem de máquina e o assembly - consideradas como linguagem de baixo nível pois 
trabalham intimamente com o microprocessador - podem oferecer. Assim surge um outro 
grupo de linguagens, as chamadas linguagens de alto nível. As linguagens de alto nível não 
estão tão íntimas do microprocessador, mas em compensação oferecem comandos, que são 
conjuntos de uma ou mais instruções, capazes de executar uma tarefa completa. Como 
exemplos de linguagens de alto nível, podemos citar BASIC, FORTRAN, Pascal e C, sendo esta 
última considerada uma linguagem de “médio nível”, por permitir tanto a programação em 
baixo nível como em alto nível. Mesmo sendo executadas em computadores - e 
conseqüentemente em microprocessadores - diferentes, as linguagens permanecem 
inalteradas. Isto porque você não estará programando o microprocessador diretamente: a 
linguagem será um programa sendo executado sobre o microprocessador. 
 
Logo, a linguagem de alto nível se encarregará de traduzir os comandos de seu programa em 
alto nível - que o microprocessador não conhece - para um programa de baixo nível - que o seu 
microprocessador conhece. Assim, temos a mesma linguagem de programação de alto nível 
para vários computadores diferentes, porém a maneira com que eles irão conversar com o 
microprocessador será diferente. E o mais importante: isto será transparente para o 
programador. Assim, um programa escrito em Turbo Pascal no Apple II será idêntico a um 
programa escrito em Turbo Pascal no IBM PC, salvo - é claro - alguns comandos que poderão 
existir ou não em virtude da exploração do máximo da potencialidade do computador, 
recursos que poderão existir em um computador porém em outro não, permanecendo a 
estrutura básica inalterada. 
 
Não pare agora... Tem mais depois da publicidade ;) 
 
Dentro das próprias linguagens de alto nível existem linguagens "melhores" ou "piores" em 
termos de recursos e estruturação. Por exemplo o BASIC não é tão bem estruturado como o 
Pascal e nem tão rígido em suas declarações, também. Mas já vimos que o BASIC era uma 
linguagem que foi adotada como "padrão" nos primórdios da micro-informática, pois os 
fabricantes colocavam esta linguagem em forma residente em seus microcomputadores. Assim 
a linguagem BASIC tornou-se a linguagem de programação mais popular existente até hoje. 
 
Mas mesmo sendo popular, o próprio BASIC difere-se de um microcomputador para o outro, 
dependendo, principalmente, do fabricante da linguagem (já que a linguagem será um 
programa sendo executado, como vimos) e do microprocessador que estava sendo utilizado. 
Por exemplo o AppleSoft Basic (Apple II) difere-se totalmente do GWBasic (CP/M, MSX e IBM 
PC). Apesar da estrutura ser basicamente igual, certos comandos são simplesmente criados ou 
então excluídos em virtude das capacidades principalmente de Hardware e do próprio 
microprocessador do microcomputador. 
 
Voltando à questão de existirem linguagens de alto nível com "maior nível" do que outras, 
peguemos o exemplo do BASIC vs. Pascal vs. C. Se quiséssemos limpar a tela do computador e 
escrever no canto superior esquerdo da tela a frase "Oi, tudo bem ?". Teríamos: 
 
GWBasic AppleSoft Basic 
 
10 CLS 10 HOME 
 
20 PRINT "Oi, tudo bem ?" 20 PRINT "Oi, tudo bem ?" 
 
Comentários: CLS / HOME - Limpam a tela 
PRINT - Imprime a mensagem entre aspas 
 
Turbo Pascal 
 
PROGRAM ESCREVE; 
 
USES 
CRT; 
 
BEGIN 
CLRSCR; 
WRITE ('Oi, tudo bem ?'); 
END. 
 
Comentários: USES CRT - Torna a tela disponível para uso 
 
CLRSCR - Limpa a tela 
 
WRITE - Imprime a mensagem entre apóstrofes 
 
C 
 
# include “stdio.h” 
# include “conio.h” 
 
void main () 
{ 
clrscr(); 
printf(“Oi, tudo bem ?”); 
} 
 
Comentários: INCLUDE - Incluem módulos, neste caso para utilização da tela 
 
CLRSCR - Limpa a tela
PRINTF - Imprime a mensagem entre aspas 
 
Nota-se claramente que tanto o Pascal quanto o C possuem uma estrutura muito mais rígida 
do que o BASIC, tornando o programa final muito melhor de ser lido por pessoas que não 
fizeram parte do processo de criação do mesmo - no BASIC, que não possui uma estrutura tão 
rígida, geralmente demora-se muito mais tempo até entendermos o funcionamento de um 
programa escrito por outra pessoa. Linguagens como Pascal e C são consideradas, portanto, 
linguagens estruturadas, por necessitarem de uma estrutura rígida de programação. 
 
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 nível, interpretá-lo e, caso tenha 
sido entrado com a sintaxe correta, será executado convertendo-o em um conjunto de 
instruções equivalentes em linguagem de máquina para que o microprocessador possa 
executar o que o programador deseje. Mas caso nós não 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 nível - que o microprocessador não entende - em linguagem de baixo nível. Um programa 
executado em linguagem compilada é muito mais rápido, pois está na verdade sendo 
executado integralmente em baixo nível, o que não acontece na linguagem interpretada. Em 
compensação durante o processo de criação e edição do programa toda vez que quisermos 
testar o programa deveremos compilá-lo antes, o que pode demorar um pouco - o que não 
acontece com as linguagens interpretadas, aonde o programa é executado na hora." 
 
Veja mais sobre "Introdução a Programação" em: 
https://brasilescola.uol.com.br/informatica/introducao-a-programacao.htm

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando