Você está na página 1de 20

CAP.

3- Tradução de Programas

Compiladores e interpretadores
Linguagem de Montagem(Assembly)

Docente: Elsa Salombuey


OBJECTIVOS
Objectivos das aulas práticas de Arquitectura
de Computadore sem Assembly:
- Introduzir os conceitos associados à linguagem
Assembly.
- Aprender a linguagem Assembly do processador
8086.
- Compriender instruções expressas em Assembly
com PIC (CPU) 8086.
- Executar programas em Assembly e ver os
resultados. 2
• linguagem de máquina - É a comunicação em forma de códigos
binários referente aos comandos que os circuitos eletrônicos do
processador podem executar.

• Para que um problema possa ser resolvido pelo computador, é


necessário criar um algoritmo computacional, composto por uma
sequência de passos que determinam a solução do problema e a
respectiva codificação, usando uma linguagem de alto nível, que é
mais fácil de ser escrita. Essa codificação transforma o algoritmo
num programa (software).

• Software - são os programas com sequência de instruções que serão


interpretadas e executadas pelo processador.
- As principais etapas de um algoritmo para a obtenção de uma
solução computacional são:
a) Elaboração do algoritmo computacional referente ao problema.
b) Codificação do algoritmo numa linguagem de alto nível (programa
fonte).
c) Tradução ou compilação do programa fonte para o código
correspondente em linguagem de máquina (programa objeto).
d) Execução do programa objeto (executável) pelo computador.

NOTA: Aatualmente, a maioria dos programas são desenvolvidos


utilizando uma linguagem de alto nível, a qual é traduzida para
linguagem de máquina através da interpretação ou da compilação do
programa fonte.

• Na interpretação, cada instrução expressa em linguagem de alto


nível é interpretada por um programa específico que está em
execução (interpretador).
• Este, por sua vez, executa a instrução correspondente, através do
hardware do computador.
 Interpretador – atua no momento em que cada instrução é
executada.
Objetivo: transformar determinada instrução de alto nível no código
máquina que o processador executa.

Desvantagem: o processo da interpretação torna mais lenta a


execução dos programas “interpretados”

 No processo de compilação:
- um Programa Fonte (source program) , escrito em linguagem de
alto nível, é transformado em instruções básicas de um processador;
- um Programa Objecto (object program) : trata-se do programa
obtido depois da compilação.

Essas instruções básicas são executadas diretamente pelos


circuitos eletrônicos do computador.
CARACTERISTICAS
COMPILADOR:
• Atua como tradutor
• Transforma “texto” escrito numa linguagem,
num outro texto, escrito noutra linguagem

INTERPRETADOR:
• Atua como intérprete
• Traduz no momento estabelecendo o ponto
entre dois interlocutores 6
Compilador e interpretador

7
Assembly - Introduçao
Assembly é uma linguagem de baixo nível, chamada
frequentemente de “linguagem de montagem”
É uma linguagem considerada difícil, principalmente porque
o programador precisa conhecer a estrutura da máquina
para usá-la , o nome dado a este dialeto é assembly e não
assembler.

Assembler significa assemblador, ou seja é o nome inglês


dado ao programa que traduz as mnemônica (abreviaturas
compreensíveis pelo ser humano) em código binário
diretamente compreensível pelo computador. 8
Assembly – Introduçao Cont.
• A linguagem Assembly é atrelada à arquitetura
de uma certa CPU, ou seja, ela depende
completamente do hardware (HW).
• Cada família de processador tem sua própria
linguagem assembly (Ex: Em8086, 8088, ARM,
SPARC, MIPS, etc.)
• Por essa razão, Assembly não é uma linguagem
portável, ao contrário da maioria das linguagens
de alto nível.
9
Assembly - História
• As primeiras linguagens Assembly
surgiram na década 50, na chamada
segunda geração das linguagens de
programação.

• A segunda geração visou libertar os


programadores de dificuldades como
lembrar códigos numéricos e calcular
endereços.
10
Assembly - História
• Assembly foi muito usada para várias aplicações até nos anos 80,
quando foi substituída pelas linguagens de alto nível.
• Isso aconteceu principalmente pela necessidade do aumento da
produtividade de softwares.
• Atualmente Assembly é usada para manipulação direta de
hardwares e para sistemas que necessitem de performance
crítica.
• Device drivers, sistemas embarcados de baixo nível e sistemas de
tempo real são exemplos de aplicações que usam Assembly.
Sistema embarcado – é um sistema microprocessado em que o PC esta anexado
ao sistema que ele controla. Estes sistemas operam em máquinas que podem trabalha
por varios anos sem parar e em alguns casos, possuem capacidade de autocorreção.

Alguns exemplos de dispositivos que recebem aplicações de sistemas embaca-


dos: telefones, roteadores, equipamentos hospitalares, alguns eletrodomesticos
, Impressoras, videogames, calculadoras, etc.
11
Assembly - História
• A linguagem Assembly é de baixo nível,
porém ainda precisa ser transformada na
linguagem que a máquina entende

• Quem faz isso é o Assembler (linguagem de


máquina).

• O Assembler é um utilitário que traduz o


código Assembly para a máquina.
12
Sistemas Numéricos
- Sistema Decimal: sistema natural do homem.
- No assembly um número decimal pode terminar com um d.

Ex: 64223d ou 64223D.

- Sistema Binário: representado por bits(0 ou 1)


• Agrupamento dos bits:
– Nibble:4 bits
– Byte:8 bits
– Palavra (word): 16 bits
– Palavra dupla (doubleword): 32 bits
• No assembly um número binário deve terminar com um b.

Ex:1110101b ou 1110101B. 13
Sistemas Numéricos

• Sistema Hexadecimal: 1 algarismo hexadecimal = 4


bits

- (ex: 0011|1101b = 3Dh)

• No assembly um número hexadecimal deve começar


com um número decimal e terminar com um h.

14
– Ex:9Fh, 6FFAh.
Programação
Computador executa programas criados pelos
programadores. Programas = conjunto de instruções.
• Programa:
– Sequencia de instruções, cada uma das quais
especifica uma ou mais operações que o computador
deve executar.

Instruções dizem ao computador o que fazer para resolver


determinado problema.
• Elementos de uma instrução:
- Opcode: define a operação a ser realizada
- Operandos: dados necessários para realizar a operação
15
desejada.
Programação
• Normalmente, os operandos das instruções que
exigem mais do que um são separados por
virgulas (,).
• Tanto um registo, como um endereço ou um
dado imediato são operandos.
• Um dado imediato é um dado que não provém
de um registo ou de uma leitura à memória.

• Exemplos deste tipo de dados são: uma


constante, números e caracteres.
16
Programação
• Por exemplo, a instrução:

- MOV AH, 10H

• Coloca o valor 10H em AH, ao passo que:

- MOV BH, ‘G’

• Coloca o valor 71 em BH, o qual é o codigo ASCII para a


letra ‘G’. Ambas estão a usar dados imediatos. Note que
cada instrução exige dois operandos, os quais estão
separados por uma virgula.

17
Programação
• Nome ou Label – tem de começar sempre com uma letra ou um
caracter especial e nunca com um digito. Se um ponto for
utilizado, este deverá ser o primeiro caracter do nome. Um nome
não pode ter pontos, hifenes ou espaços no seu meio. Também
não é possivel usar carateres acentuados num nome.
• Normalmente utiliza-se um traço de sublinhado para tornar
nomes compostos e legiveis.
- Ex: são legais nomes como – Nome1, Salto, @3,
Escreve_Linha, etc. e ilegais nomes como - .Um, 3Letras, etc.
 Mnemónico – é um conjunto de letras simbolizando uma
instrução para o processador ou uma pseudo-operação (ou
pseudo-operando). As primeiras - são instruções que o
processador deve executar e as segundas - são diretivas dadas ao
assemblador, para lhe indicar que deve reservar espaço ou outra
indicação similar.
- Ex: MOV , PUSH, RET, INT, etc
Programação
EXERCICIO – INDIVIDUAL
1- Diga em cada uma das alineas de 1 a 5:
Quantos operandos, mneomónicos, comentarios ,
dados imediatos, nome ou label, endereço possuem e
demonstre-os?

1. ;Rotina para escrever o texto no ecrã


2. ESCREVE: MOV AH, 9H ; Vamos usar DOS
3. MOV DX, [TEXTO]
4. INT 21H
5. RET ; Regressamos da rotina
2- Quando se fala que um determinado computador
que é de 8, 16, 32 ou 64 bits, a que está se referindo?

3- Considere um computador que possua uma CPU


de 16 bits. Suas instruções possuem dois operandos
do mesmo tamanho (16 bits cada), além do código
de operação.

• a) Qual é o tamanho da instrução?

Você também pode gostar