Вы находитесь на странице: 1из 9

Cdigo em

linguagem assembly
Trabalho prtico n 3

Trabalho realizado por:


- Eduardo Rocha n 3262;
- Ricardo Oliveira n 3360;
- Miguel Correia n 3361;
Escola Superior de Tecnologia e Gesto de Lamego
Instituto Politcnico de Viseu

ndice
Introduo ................................................................................................................................ 3

Desenvolvimento ...................................................................................................................... 5

Concluso ................................................................................................................................. 8

Bibliografia ............................................................................................................................... 8

2
Arquitetura e Sistemas de Computadores
Linguagem Assembly
Escola Superior de Tecnologia e Gesto de Lamego
Instituto Politcnico de Viseu

Introduo

Realizou-se este trabalho prtico com o principal objetivo de se estudar e


compreender o que a linguagem assembly.

Assembly uma notao legvel por humanos para o cdigo de mquina que uma
arquitetura de computador especfica usa. A linguagem de mquina (que um mero padro de
bits) torna-se percetvel para a substituio dos valores em bruto por smbolos chamados
mnemnicas. utilizada em geral para programao em baixo nvel de mquina (mais prxima
do nvel do hardware), sendo que cada famlia de processadores (Ex. X86, ARM, SPARC, MIPS)
possui a sua prpria linguagem assembly, j que cada processador possui o seu prprio
conjunto de instrues embutidas.

O assembly, mesmo sendo uma linguagem de baixo nvel, ela necessita de ser
transformada para ser entendida pela mquina, que no caso o chamamos de assembler. O
assembler um utilitrio que traduz os cdigos para a mquina. Existem diversos
compiladores de linguagem assembly no mercado que podem ser descarregados pelo
utilizador para a criao do seu cdigo. Os principais compiladores disponveis atualmente so:
FASM, GOASM, MASM, NASM, TASM, entre outros.

O assembly tem como vantagens:

Velocidade (os programas em assembly so, em geral, mais rpidos);


Tamanhos dos programas de assembly so menores;
Permite criar aes de alta complexidade, impossveis ou difceis de se realizar em
linguagens de alto nvel;
Conhecimento em assembly possibilita a programao nos outros tipos de linguagem;
um programa recomendvel onde o tempo um fator crtico como, por exemplo,
medies de tempo que exigem boa performance;
de fcil compreenso com algum conhecimento de conceitos de hardware.

Tem como desvantagens:

Difcil de ler, de aprender, entender, e de difcil manuteno. Um programa escrito em


linguagem assembly no muito legvel, por isso ele deve ser muito bem
documentado.
Programar em assembly consome muito tempo para o programador;
A linguagem no porttil. Ela porttil apenas dentro de uma famlia de
processadores.
Como uma linguagem especfica para processares de cada mquina, necessrio
desenvolver um programa para cada mquina.

3
Arquitetura e Sistemas de Computadores
Linguagem Assembly
Escola Superior de Tecnologia e Gesto de Lamego
Instituto Politcnico de Viseu

No existe rotinas pr-definidas, o programador dever desenvolver as suas prprias


rotinas.
A linguagem assembly apresenta um nmero muito reduzido de instrues, do tipo
operaes de movimentao de dados em memria, para registos e para memrias, e
operaes lgicas e aritmticas bem simples. Estas instrues so de baixa
expressividade, isto , so de baixo nvel.

Neste trabalho prtico, desenvolveu-se um programa em linguagem assembly que


permitisse realizar operaes aritmticas, em que o primeiro nmero era de dois
dgitos e o segundo de um. Perante isto, cumpriu-se os tpicos regidos.

Fig. 1 Exemplo de cdigo em assembly

4
Arquitetura e Sistemas de Computadores
Linguagem Assembly
Escola Superior de Tecnologia e Gesto de Lamego
Instituto Politcnico de Viseu

Desenvolvimento

Para a realizao do segundo trabalho prtico, o que se escolheu fazer foi construir um
programa em assembly que efetuasse a adio, a subtrao, a multiplicao e a diviso de dois
nmeros, sendo o primeiro de dois algarismos e o segundo de um, e depois o resultado era
exibido no ecr.

A construo do cdigo acaba por ser descrita em baixo:

1. Construi-se um bloco de instrues que permitisse colocar no ecr a frase Escolha a


operao que pretende efetuar:, com as seguintes opes: soma, multiplicao,
diviso, subtrao e Sair(fig.1).
2. De seguida, declaram-se 10 variveis, sendo que as 6 primeiras serviriam para
armazenar as strings, a d1 servia para armazenar o nmero introduzido da opo
selecionada, o x como o primeiro nmero de dois dgitos, o n como o nmero de 1
dgito e o y como o resultado da operao aritmtica(fig.1).

Fig. 2 Execuo dos passos 1 e 2


3. Na parte procedimental do cdigo, criaram-se as seguintes instrues para se poder
meter no ecr as strings declaradas na seco de dados: a primeira mensagem, a
segunda mensagem, a terceira mensagem, a quarta mensagem, a quinta mensagem e
a ltima mensagem, sendo que, aps a ltima, se a opo introduzida (fig.3).

Fig. 3 Execuo do passo 3


4. Depois, construram-se os seguintes cdigos que permite confirmar a escolha do
utilizador: se o utilizador escolheu a soma, salta-se para a soma; se escolheu a
multiplicao, salta-se para a multiplicao, e etc.(fig. 4).

5
Arquitetura e Sistemas de Computadores
Linguagem Assembly
Escola Superior de Tecnologia e Gesto de Lamego
Instituto Politcnico de Viseu

Fig. 4 Execuo do passo 4


5. Na seco da soma, construiu-se o cdigo que permitia fazer as seguintes instrues:
mudar de linha, ler, escrever e descodificar o primeiro caracter, ler, escrever e
decodificar o segundo caracter, escrever on caracter +, ler, escrever e descodificar o
terceiro caracter, escrever o caracter =. J nos seguintes cdigos, realiza-se a
operao aritmtica da adio e, uma vez terminada, devolve-se o resultado e volta-se
para o menu(fig. 5).

Fig. 5- Execuo do passo 5


6. Antes de se realizar a seco da multipilcao, primeiro iniciava-se os registos a 0.
Depois, fazia-se a introduo do primeiro caracter, efetuava-se a multiplicao,
introduzia-se o segundo (convertia-se os dois para cdigo ASCII), escrevia-se o caracter
x, introduzia-se o 3 caracter numrico, escrevia-se o caracter = e o resto do
cdigo fazia o resultado(fig. 6).

Fig. 6 Execuo do passo 6


7. Na subtrao, introduzia-se o primeiro resultado, depois escrevia-se o caracter -,
introduzia-se o segundo caracter, metia-se o caracter = no ecr, eliminava-se o carry

6
Arquitetura e Sistemas de Computadores
Linguagem Assembly
Escola Superior de Tecnologia e Gesto de Lamego
Instituto Politcnico de Viseu

e verifica-se se o cdigo estava em ASCII. No resto do cdigo, determinava-se o


resultado e saltava-se para o menu(fig. 7).

Fig. 7 Execuo do passo 7


8. No cdigo da diviso, introduzia-se o primeiro caracter numrico de dois dgitos,
depois o caracter :, em seguida o caracter numerivo de um digito e o caracter =;
por ltimo, dividia-se ambos os resultados e escrevia-se o resultado no ecr ( se fosse
decimal, usava-se a vrgula). Por fim, voltava-se ao menu(fig. 8).

Fig. 8 Execuo do passo 8


9. Finalmente, criou-se um cdigo que permite terminar o programa (fig. 9).

Fig. 9 Execuo do passo 9

7
Arquitetura e Sistemas de Computadores
Linguagem Assembly
Escola Superior de Tecnologia e Gesto de Lamego
Instituto Politcnico de Viseu

Concluso

Para concluso deste trabalho, pode-se dizer que a linguagem assembly precisa e
analtica. Foi-nos permitido compreender e aprofundar o conhecimento de todas as linguagens
de programao. A melhor compreenso de programao j usada anteriormente em c e c++
explicam-se em Assembly de uma maneira mais bruta e concreta. Conclui-se que assembly
e vai continuar a ser uma linguagem mquina que estar por detrs das HLL.

Para alm disso, podemos concluir que a linguagem assembly uma linguagem
baseada em mnemnicas que s depende da arquitetura do processador e que no pode ser
usada para o desenvolvimento de software.

Por fim, com este trabalho podemos desenvolver as nossas capacidades na


programao em assembly, quer seja em teoria, quer seja em prtica.

Fig. 10 Outro exemplo de cdigo em assembly

8
Arquitetura e Sistemas de Computadores
Linguagem Assembly
Escola Superior de Tecnologia e Gesto de Lamego
Instituto Politcnico de Viseu

Bibliografia
Stallings W., Computer Organization and Architecture, Designing for Performance,
6th edition, Prentice Hall, 2003

Tanenbaum A., Structured Computer Organization, 4th edition, Prentice Hall, 1999

9
Arquitetura e Sistemas de Computadores
Linguagem Assembly