Você está na página 1de 22

Linguagem de Montagem e Linguagem de Mquina.

Prof. Wilfredo Blanco Figuerola

Linguagem de Montagem e Linguagem de Mquina

Tpicos

Introduo

Conceitos bsicos Histria Arquitetura Elementos de uma instruo

Linguagem de Mquina

Representao e classificao de uma instruo


Arquitetura Sintaxes (Comentrios, Instrues, Diretivas) Instrues Exemplo

Programao em Linguagem de Montagem/Assembly (8086)


Montagem e Ligao de Programas.

ORGANIZAO DE COMPUTADORES E SISTEMAS OPERACIONAIS

24 de fevereiro de 2010

Introduo Conceitos bsicos

Linguagem de Montagem e Linguagem de Mquina

Linguagem/Cdigo de mquina: instrues que o processador capaz de executar. Essas instrues, chamadas de cdigo de mquina, so representadas por sequncias de bits, normalmente limitadas pelo nmero de bits do registrador principal (8, 16, 32, 64 ou 128) da CPU. Linguagem de montagem ou assembly: notao legvel por humanos para o cdigo de mquina que uma arquitetura de computador especfica utiliza.

Tradutor: Programas que convertem um programa usurio escrito em alguma linguagem (fonte) para uma outra linguagem (alvo).
Montador/Assembler: um tradutor onde a linguagem fonte a linguagem de montagem e a linguagem alvo a linguagem de mquina

ORGANIZAO DE COMPUTADORES E SISTEMAS OPERACIONAIS

24 de fevereiro de 2010

Introduo Conceitos bsico (resumo)

Linguagem de Montagem e Linguagem de Mquina

N = I+J;

Linguagem de alto nvel (C, C++, Java, C#)


1
Pentium 4

MOV EAX, I ADD EAX, J MOV N, EAX


1

Linguagem de montagem (smbolos/mnemnicos.)


Compilalor
N

Montador/Assembler
1

Linguagem/Cdigo de Mquina

Unidade de Processamento Central (CPU)

ORGANIZAO DE COMPUTADORES E SISTEMAS OPERACIONAIS

24 de fevereiro de 2010

Introduo Histria

Linguagem de Montagem e Linguagem de Mquina

Linguagem/Cdigo de Mquina (primeira gerao)

Linguagem de montagem (segunda gerao)

Linguagens de alto nvel

(+)Complexidade (-)

(-)Produtividade (+)

Por que usar linguagem de montagem?


(+)Desempenho(-)
Cdigo menor e mais rpido
Carto inteligente Drivers Tratadores de interrupes de baixo nvel em um S.O. Controladores em sistemas embutidos de tempo real

(+)acesso mquina(-)

ORGANIZAO DE COMPUTADORES E SISTEMAS OPERACIONAIS

24 de fevereiro de 2010

Introduo Arquitetura

Linguagem de Montagem e Linguagem de Mquina

Arquitetura de computador = prpria linguagem de mquina/linguagem de montagem. Funes de alto nvel para cada arquitetura.

Arquitetura
Motorola 680x0

Quantidade Registradores 3 16 16 16 16 32 32 32 64 128

Bits 8 16-32 32 32 32-64 64 64 32-64 64 64

Introduzido (Ano) 1975 1978 1983 1964 2000 1995 1992 1992 2000 2001

MOVE.L I, D0 ADD.L J, DO MOVE.L N, EAX


Pentium 4

6502 x86 ARM IBM/360 Z/Architecture UltraSPARC Alpha POWER x86-64 Itanium

MOV EAX, I ADD EAX, J MOV N, EAX

ORGANIZAO DE COMPUTADORES E SISTEMAS OPERACIONAIS

24 de fevereiro de 2010

Linguagem de Mquina Elementos de uma instruo

Linguagem de Montagem e Linguagem de Mquina

Internamente, cada instruo representada como uma seqncia de bits.


(Binary: 10110000 01100001)
MOV AL 61h

Instruo dividida em campos, correspondentes aos elementos de uma instruo.


Cada instruo deve conter toda a informao necessria para que a CPU possa execut-la, ou seja:

Cdigo de operao: Especifica a operao a ser efetuada. Referncia a operando fonte: Os dados envolvidos na operao devem estar referenciados na instruo.

Referncia a operando de destino: Deve-se fornecer informaes que possibilite o armazenamento de qualquer resultado gerado pela instruo.
Cdigo de operao Referncia a operando Referncia a operando

ORGANIZAO DE COMPUTADORES E SISTEMAS OPERACIONAIS

24 de fevereiro de 2010

Linguagem de Mquina Representao e classifio de uma instrucao

Linguagem de Montagem e Linguagem de Mquina

Na maioria dos conjuntos de instrues, usado mais de um formato de instrues!!!


Ex: arquitetura MIPS 6 5 5 5 5 6 total de 32bits [ op | rs | rt | rd |shamt| funct ] -> tipo Registro [ op | target address ] -> tipo desvio

[ op | rs | rt | rd |shamt| funct] 0 1 2 6 0 32 decimal 000000 00001 00010 00110 00000 100000 binrio [ op | endereo destino ] 2 1024 decimal 000010 00000 00000 00000 10000 000000 binrio

R-tipo

J-tipo

ORGANIZAO DE COMPUTADORES E SISTEMAS OPERACIONAIS

24 de fevereiro de 2010

Linguagem de Mquina Representao e classifio de uma instruo

Linguagem de Montagem e Linguagem de Mquina

[ op | rs | rt | rd |shamt| funct] 0 1 2 6 0 32 decimal 000000 00001 00010 00110 00000 100000 binrio

Nmero de endereos por instruo constitui uma deciso de projeto importante.

Poucos endereos por instruo


instrues de menor extenso Instrues mais primitivas (CPU menos complexa) instrues por programa maior (maior tempo de execuo)

Mquinas modernas empregam instrues de 2 ou 3 endereos, possibilitando flexibilidade para usar mltiplos registradores.

ORGANIZAO DE COMPUTADORES E SISTEMAS OPERACIONAIS

24 de fevereiro de 2010

Linguagem de Mquina Representao e classifio de uma instrucao

Linguagem de Montagem e Linguagem de Mquina

Considere o comando: y=(A-B)(C+DE)

ORGANIZAO DE COMPUTADORES E SISTEMAS OPERACIONAIS

24 de fevereiro de 2010

10

Linguagem de Mquina Representao e classifio de uma instruo

Linguagem de Montagem e Linguagem de Mquina

Classificao de instrues de mquina :

Processamento de dados: Instrues aritmticas e lgicas;


Armazenamento de dados: Instrues de manipulao de memria; Movimentao de dados: Instrues de E/S; Controle: Instrues de teste e desvios.

ORGANIZAO DE COMPUTADORES E SISTEMAS OPERACIONAIS

24 de fevereiro de 2010

11

Linguagem de Mquina Representao e classifio de uma instruo

Linguagem de Montagem e Linguagem de Mquina

Dificuldade do programador lidar com representaes binrias de instrues de mquina. Uso de uma representao simblica:

Os cdigos de operao so representados por abreviaes, chamadas mnemnicos.


Ex.: ADD SUB Adio Subtrao

MPY

Multiplicao

Os operandos tambm so representados de maneira simblica.

Ex: ADD R, Y

ORGANIZAO DE COMPUTADORES E SISTEMAS OPERACIONAIS

24 de fevereiro de 2010

12

Programao em Linguagem de Montagem/Assembly (8086) Arquitetura

Linguagem de Montagem e Linguagem de Mquina

Registrador de Flags (Semforos)


Registrador com 16 bits. Os bits 0, 2, 4, 6, 7 e 11 contm flags de estado


X X X X O D I T S Z X A X P X C

C Carry Z Zero

P Paridade S Sinal

A Auxiliar O Overflow
24 de fevereiro de 2010 13

ORGANIZAO DE COMPUTADORES E SISTEMAS OPERACIONAIS

Programao em Linguagem de Montagem/Assembly (8086) Sintaxes (Comentrios, Instrues, Diretivas)

Linguagem de Montagem e Linguagem de Mquina

Comentrios permitem que explicaes sobre determinadas linhas de programa sejam realizadas sem ocasionar erro de compilao. Os comentrios podem ser utilizados de trs formas diferentes:

como uma linha em branco; como uma linha iniciada com o caractere ponto e vrgula (;) e seguida de texto

depois de uma instruo, bastando adicionar o caracter (;) para delimitar o incio do comentrio.
Exemplos de comentrios ; comentrio como uma linha iniciada com ponto e vrgula MOV AX, 6fH ; comentrio depois de uma instruo

ORGANIZAO DE COMPUTADORES E SISTEMAS OPERACIONAIS

24 de fevereiro de 2010

14

Programao em Linguagem de Montagem/Assembly (8086) Sintaxes (Comentrios, Instrues, Diretivas)

Linguagem de Montagem e Linguagem de Mquina

Sintaxe das Instrues [label:] mneumnico [operando(s)] [; comentrio]

Sintaxe das Diretivas


Exemplos de diretivas .DATA: Marca o incio do segmento de dados, no qual todas as variveis, tabelas e mensagens devem ser colocadas. Sintaxe: .DATA .CODE: Marca o incio do segmento de cdigo do programa. No caso de um programa possuir mais de um segmento de cdigo, um nome deve ser especificado para cada segmento. Sintaxe: .CODE [segmento]

ORGANIZAO DE COMPUTADORES E SISTEMAS OPERACIONAIS

24 de fevereiro de 2010

15

Programao em Linguagem de Montagem/Assembly (8086) Instrues

Linguagem de Montagem e Linguagem de Mquina

Instrues assembly: indicam as ordens que devem ser executadas pela CPU e so transcries (ou notaes) simplificadas, que correspondem aos cdigos binrios das instrues de mquina. Instruo MOV

Tipos de Transferncias Possveis


Registrador Registrador Memria Registrador Registrador Memria Memria Constante Registrador Constante

Instruo XCHG XCHG

DESTINO,ORIGEM
Registrador Registrador Memria Registrador
24 de fevereiro de 2010 16

Tipos de Transferncias Possveis


ORGANIZAO DE COMPUTADORES E SISTEMAS OPERACIONAIS

Programao em Linguagem de Montagem/Assembly (8086) Instrues

Linguagem de Montagem e Linguagem de Mquina

Instrues logicas: As operaes lgicas so realizadas bit a bit, entre os bits de mesma ordem.

AND OR

destino,origem destino,origem

XOR

destino,origem destino

NOT

Instrues soma (subtrao): dos dois operandos substitui o valor do operando destino.

add destino,origem sub destino,origem


Tipos

de Transferncias Possveis
Registrador Registrador Memria Registrador Registrador Memria Memria Constante Registrador Constante

ORGANIZAO DE COMPUTADORES E SISTEMAS OPERACIONAIS

24 de fevereiro de 2010

17

Programao em Linguagem de Montagem/Assembly (I) Instrues

Linguagem de Montagem e Linguagem de Mquina

Instruo JMP: Salta incondicionalmente para o endereo referenciado na instruo.

JMP endereo

A instruo JMP deve ser usada em dois casos:

Para pular instrues que no sero executadas; e Para auxiliar a execuo de loops.

Outras instrues:

MUL DIV JXXX -> intrues de desvio condicional CMP Instrues de Deslocamento Instrues de Rotao

ORGANIZAO DE COMPUTADORES E SISTEMAS OPERACIONAIS

24 de fevereiro de 2010

18

Programao em Linguagem de Montagem/Assembly (8086) Exemplo

Linguagem de Montagem e Linguagem de Mquina

Hello world!
.MODEL Small .STACK 100h .DATA msg db 'Hello, world!$' .CODE start: mov ah, 09h mov dx, offset msg mov ah,4Ch int 21h end start

; definio do modelo desejado ;********************************************************************* DOSSEG .MODEL modelo ; definio do segmento de pilha ; **************************************************************************** .STACK [tamanho] ; ; criao do segmento de dados ; **************************************************************************** .DATA ; variveis ; incio do segmento de cdigo ; **************************************************************************** .CODE ; procedimento principal ; **************************************************************************** Principal PROC NEAR ; incio do procedimento principal MOV AX, @DATA ; instrues para que DS e ES MOV DS, AX ; apontem para a rea de MOV ES, AX ; dados criada ; corpo do programa principal MOV AH, 4Ch INT 21h ; funo para trmino de programa ; atravs da INT 21h

Principal ENDP END Principal

; final do procedimento principal ; final do programa

ORGANIZAO DE COMPUTADORES E SISTEMAS OPERACIONAIS

24 de fevereiro de 2010

19

Programao em Linguagem de Montagem/Assembly (8086) Exerccios

Linguagem de Montagem e Linguagem de Mquina

Exerccios:

Faa um programa para carregar dados (modo imediato) em AX e BX e, em seguida subtra-los, deixando o resultado em AX.
Faa um programa para somar operandos BCD provenientes das locaes de memria 0200 e 0201, deixando o resultado em 0202.

ORGANIZAO DE COMPUTADORES E SISTEMAS OPERACIONAIS

24 de fevereiro de 2010

20

Montagem, Ligao e Depurao de Programas.

Linguagem de Montagem e Linguagem de Mquina

.MODEL Small .STACK 100h .DATA msg db 'Hello, world!$' .CODE start: mov ah, 09h mov dx, offset msg mov ah,4Ch int 21h end start

MONTAGEM TASM.EXE Montador para a linguagem Assembly. Sintaxe: TASM [opes] fonte [,objeto] [,listagem] [,referncia_cruzada] [;]

Salvar como HelloWorld.asm

Linha de Comando mais Comumente Utilizada: TASM /z/zi programa


Opo
/z /zi

Significado Display source line with error message Debug info: zi=full

HelloWorld.obj

TLINK.EXE Ligador cria um programa executvel a partir de um objeto. Sintaxe: TLINK [opes] objetos [, executvel] [, mapa] [, bibliotecas] [;] Linha de Comando mais Comumente Utilizada: TLINK /x/v programa
Opo
/x /v

HelloWorld.exe

Significado No map file at all Full symbolic debug information

ORGANIZAO DE COMPUTADORES E SISTEMAS OPERACIONAIS

24 de fevereiro de 2010

21

Linguagem de Montagem e Linguagem de Mquina

Referencias

Tanenbaum A. S. Organizao Estruturada de Computadores. S. Paulo: Pearson Prentice Hall, 5a edio, 2007. Torres Gabriel. Hardware Curso Completo. R. De Janeiro: Axcel Books do Brasil Editora Ltda, 4 edio, 2001. LAYNET. Assembly Tutorials. Disponvel em <http://www.laynetworks.com/assembly%20tutorials.htm> Acesso em 23 de fevereiro de 2010 Monteiro, Mrio A. Introduo Organizao de Computadores. R. De Janeiro: LTC Editora S.A., 4 edio, 2001. WIKIPDIA. Assembly language. Disponvel em: <http://en.wikipedia.org/wiki/Assembly_language> Acesso em 23 de fevereiro de 2010. ______. Machine Code. Disponvel em: <http://en.wikipedia. org/wiki/Machine_code > Acesso em 23 de fevereiro de 2010. ______ Pipelining. Disponvel em: http://en.wikipedia.org/wiki/Pipelining. Acesso em 23 de fevereiro de 2010

ORGANIZAO DE COMPUTADORES E SISTEMAS OPERACIONAIS

24 de fevereiro de 2010

22