Buscar

5.01_linguagem_de_montagem_e_linguagem_de_maquina

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Linguagem de Montagem 
e 
Linguagem de Máquina.
Prof. Wilfredo Blanco Figuerola
ORGANIZAÇÃO DE COMPUTADORES E SISTEMAS OPERACIONAIS 2
Linguagem de Montagem e Linguagem de Máquina
24 de fevereiro de 2010
Tópicos
 Introdução
 Conceitos básicos
 História
 Arquitetura
 Linguagem de Máquina
 Elementos de uma instrução
 Representação e classificação de uma instrução
 Programação em Linguagem de Montagem/Assembly (8086) 
 Arquitetura
 Sintaxes (Comentários, Instruções, Diretivas)
 Instruções
 Exemplo
 Montagem e Ligação de Programas.
ORGANIZAÇÃO DE COMPUTADORES E SISTEMAS OPERACIONAIS 3
Linguagem de Montagem e Linguagem de Máquina
24 de fevereiro de 2010
Introdução
Conceitos básicos
 Linguagem/Código de máquina: instruções que o processador é 
capaz de executar. Essas instruções, chamadas de código de 
máquina, são representadas por sequências de bits, normalmente 
limitadas pelo número de bits do registrador principal (8, 16, 32, 64 
ou 128) da CPU.
 Linguagem de montagem ou assembly: notação legível por 
humanos para o código de máquina que uma arquitetura de 
computador específica utiliza.
 Tradutor: Programas que convertem um programa usuário 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 
máquina
ORGANIZAÇÃO DE COMPUTADORES E SISTEMAS OPERACIONAIS 4
Linguagem de Montagem e Linguagem de Máquina
24 de fevereiro de 2010
Introdução
Conceitos básico (resumo) 
Linguagem de montagem 
(símbolos/mnemônicos.)
Linguagem/Código 
de Máquina
Unidade de Processamento Central (CPU)
Linguagem de alto nível 
(C, C++, Java, C#)
Montador/Assembler
Compilalor
1
1
1
N
N = I+J;
MOV EAX, I
ADD EAX, J
MOV N, EAX
Pentium 4
ORGANIZAÇÃO DE COMPUTADORES E SISTEMAS OPERACIONAIS 5
Linguagem de Montagem e Linguagem de Máquina
24 de fevereiro de 2010
Introdução
História
Linguagem de montagem 
(segunda geração)
Linguagens de 
alto nível
Linguagem/Código 
de Máquina
(primeira geração)
(+)Complexidade (-) (-)Produtividade (+)
Por que usar linguagem de montagem?
(+)Desempenho(-) (+)acesso à máquina(-)
Código menor e mais rápido
• Cartão inteligente
• Drivers
• Tratadores de interrupções de 
baixo nível em um S.O.
• Controladores em sistemas 
embutidos de tempo real
ORGANIZAÇÃO DE COMPUTADORES E SISTEMAS OPERACIONAIS 6
Linguagem de Montagem e Linguagem de Máquina
24 de fevereiro de 2010
Introdução
Arquitetura
 Arquitetura de computador = própria linguagem de máquina/linguagem de 
montagem. 
 Funções de alto nível ≠ para cada arquitetura.
Arquitetura Quantidade 
Registradores
Bits Introduzido 
(Ano)
6502 3 8 1975
x86 16 16-32 1978
ARM 16 32 1983
IBM/360 16 32 1964
Z/Architecture 16 32-64 2000
UltraSPARC 32 64 1995
Alpha 32 64 1992
POWER 32 32-64 1992
x86-64 64 64 2000
Itanium 128 64 2001
MOV EAX, I
ADD EAX, J
MOV N, EAX
Pentium 4
MOVE.L I, D0
ADD.L J, DO
MOVE.L N, EAX
Motorola 680x0
ORGANIZAÇÃO DE COMPUTADORES E SISTEMAS OPERACIONAIS 7
Linguagem de Montagem e Linguagem de Máquina
24 de fevereiro de 2010
Linguagem de Máquina
Elementos de uma instrução
 Internamente, cada instrução é representada como uma seqüência de 
bits.
 Instrução é dividida em campos, correspondentes aos elementos de 
uma instrução.
 Cada instrução deve conter toda a informação necessária para que a CPU 
possa executá-la, ou seja:
 Código de operação: Especifica a operação a ser efetuada. 
 Referência a operando fonte: Os dados envolvidos na operação devem estar 
referenciados na instrução.
 Referência a operando de destino: Deve-se fornecer informações que 
possibilite o armazenamento de qualquer resultado gerado pela instrução.
(Binary: 10110000 01100001) 
MOV AL 61h 
Código de operação Referência a operando Referência a operando
ORGANIZAÇÃO DE COMPUTADORES E SISTEMAS OPERACIONAIS 8
Linguagem de Montagem e Linguagem de Máquina
24 de fevereiro de 2010
Linguagem de Máquina
Representação e classifição de uma instrucao
 Na maioria dos conjuntos de instruções, é usado mais de um 
formato de instruções!!!
[ op | rs | rt | rd |shamt| funct ] -> tipo Registro 
[ op | target address ] -> tipo desvio
Ex: arquitetura MIPS 
6 5 5 5 5 6 total de 32bits
[ op | rs | rt | rd |shamt| funct] 
0 1 2 6 0 32 decimal 
000000 00001 00010 00110 00000 100000 binário 
[ op | endereço destino ] 
2 1024 decimal 
000010 00000 00000 00000 10000 000000 binário 
R-tipo
J-tipo
ORGANIZAÇÃO DE COMPUTADORES E SISTEMAS OPERACIONAIS 9
Linguagem de Montagem e Linguagem de Máquina
24 de fevereiro de 2010
Linguagem de Máquina
Representação e classifição de uma instrução
 Número de endereços por instrução constitui uma decisão de 
projeto importante.
 Poucos endereços por instrução
 instruções de menor extensão 
 Instruções mais primitivas (CPU menos complexa)
 instruções por programa é maior (maior tempo de execução)
 Máquinas modernas empregam instruções de 2 ou 3 endereços, 
possibilitando flexibilidade para usar múltiplos registradores.
[ op | rs | rt | rd |shamt| funct] 
0 1 2 6 0 32 decimal 
000000 00001 00010 00110 00000 100000 binário 
ORGANIZAÇÃO DE COMPUTADORES E SISTEMAS OPERACIONAIS 10
Linguagem de Montagem e Linguagem de Máquina
24 de fevereiro de 2010
Linguagem de Máquina
Representação e classifição de uma instrucao
 Considere o comando: y=(A-B)(C+DE)
ORGANIZAÇÃO DE COMPUTADORES E SISTEMAS OPERACIONAIS 11
Linguagem de Montagem e Linguagem de Máquina
24 de fevereiro de 2010
Linguagem de Máquina
Representação e classifição de uma instrução
 Classificação de instruções de máquina :
 Processamento de dados: Instruções aritméticas e 
lógicas;
 Armazenamento de dados: Instruções de manipulação 
de memória;
 Movimentação de dados: Instruções de E/S;
 Controle: Instruções de teste e desvios.
ORGANIZAÇÃO DE COMPUTADORES E SISTEMAS OPERACIONAIS 12
Linguagem de Montagem e Linguagem de Máquina
24 de fevereiro de 2010
Linguagem de Máquina
Representação e classifição de uma instrução
 Dificuldade do programador lidar com representações 
binárias de instruções de máquina.
 Uso de uma representação simbólica:
 Os códigos de operação são representados por abreviações, 
chamadas mnemônicos.
Ex.: ADD Adição
SUB Subtração
MPY Multiplicação
 Os operandos também são representados de maneira simbólica.
 Ex: ADD R, Y
ORGANIZAÇÃO DE COMPUTADORES E SISTEMAS OPERACIONAIS 13
Linguagem de Montagem e Linguagem de Máquina
24 de fevereiro de 2010
Programação em Linguagem de Montagem/Assembly (8086)
Arquitetura
 Registrador de Flags (Semáforos)
 Registrador com 16 bits.
 Os bits 0, 2, 4, 6, 7 e 11 contém flags de estado
CPAZSTIDO XXXXXX X
C – Carry P – Paridade A – Auxiliar 
Z – Zero S – Sinal O – Overflow 
ORGANIZAÇÃO DE COMPUTADORES E SISTEMAS OPERACIONAIS 14
Linguagem de Montagem e Linguagem de Máquina
24 de fevereiro de 2010
Programação em Linguagem de Montagem/Assembly (8086)
Sintaxes (Comentários, Instruções, Diretivas) 
 Comentários permitem que explicações sobre determinadas linhas de 
programa sejam realizadas sem ocasionar erro de compilação.
 Os comentários podem ser utilizados de três formas diferentes:
 como uma linha em branco;
 como uma linha iniciada com o caractere ponto e vírgula (;) e seguida de 
texto
 depois de uma instrução, bastando adicionar o caracter (;) para delimitar o 
início do comentário.
Exemplos de comentários
; comentário como uma linha iniciada com ponto e vírgula
MOV AX, 6fH ; comentário depois de uma instrução
ORGANIZAÇÃO DE COMPUTADORES E SISTEMAS OPERACIONAIS 15
Linguagem de Montagem e Linguagem de Máquina
24de fevereiro de 2010
Programação em Linguagem de Montagem/Assembly (8086)
Sintaxes (Comentários, Instruções, Diretivas) 
 Sintaxe das Instruções 
[label:] mneumônico [operando(s)] [; comentário]
 Sintaxe das Diretivas
Exemplos de diretivas
.DATA: Marca o início do segmento de dados, no qual todas as variáveis, tabelas e 
mensagens devem ser colocadas.
Sintaxe: .DATA
.CODE: Marca o início do segmento de código do programa. No caso de um programa 
possuir mais de um segmento de código, um nome deve ser especificado para cada 
segmento.
Sintaxe: .CODE [segmento]
ORGANIZAÇÃO DE COMPUTADORES E SISTEMAS OPERACIONAIS 16
Linguagem de Montagem e Linguagem de Máquina
24 de fevereiro de 2010
Programação em Linguagem de Montagem/Assembly (8086)
Instruções
 Instruções assembly: indicam as ordens que devem ser executadas pela CPU e são 
transcrições (ou notações) simplificadas, que correspondem aos códigos binários das 
instruções de máquina. 
 Instrução MOV
 Tipos de Transferências Possíveis
 Registrador  Registrador
 Memória  Registrador
 Registrador  Memória
 Memória  Constante
 Registrador  Constante
 Instrução XCHG
XCHG DESTINO,ORIGEM
 Tipos de Transferências Possíveis
 Registrador  Registrador
 Memória  Registrador
ORGANIZAÇÃO DE COMPUTADORES E SISTEMAS OPERACIONAIS 17
Linguagem de Montagem e Linguagem de Máquina
24 de fevereiro de 2010
Programação em Linguagem de Montagem/Assembly (8086)
Instruções
 Instruções logicas: As operações lógicas são realizadas bit a bit, entre os bits de 
mesma ordem.
AND destino,origem
OR destino,origem
XOR destino,origem
NOT destino
Tipos de Transferências Possíveis
 Registrador  Registrador
 Memória  Registrador
 Registrador  Memória
 Memória  Constante
 Registrador  Constante
 Instruções soma (subtração): dos dois operandos substitui o valor do operando 
destino.
add destino,origem
sub destino,origem
ORGANIZAÇÃO DE COMPUTADORES E SISTEMAS OPERACIONAIS 18
Linguagem de Montagem e Linguagem de Máquina
24 de fevereiro de 2010
Programação em Linguagem de Montagem/Assembly (I)
Instruções
 Instrução JMP: Salta incondicionalmente para o endereço referenciado na instrução.
JMP endereço
 A instrução JMP deve ser usada em dois casos:
 Para pular instruções que não serão executadas; e
 Para auxiliar a execução de loops.
 Outras instruções:
 MUL
 DIV
 JXXX -> intruções de desvio condicional
 CMP
 Instruções de Deslocamento
 Instruções de Rotação
ORGANIZAÇÃO DE COMPUTADORES E SISTEMAS OPERACIONAIS 19
Linguagem de Montagem e Linguagem de Máquina
24 de fevereiro de 2010
Programação em Linguagem de Montagem/Assembly (8086)
Exemplo
 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
; definição do modelo desejado
;*********************************************************************
DOSSEG
.MODEL modelo
; definição do segmento de pilha
; ****************************************************************************
.STACK [tamanho]
; 
; criação do segmento de dados
; ****************************************************************************
.DATA
; variáveis
; início do segmento de código
; ****************************************************************************
.CODE
; procedimento principal
; ****************************************************************************
Principal PROC NEAR ; início do procedimento principal
MOV AX, @DATA ; instruções 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 ; função para término de programa
INT 21h ; através da INT 21h
Principal ENDP ; final do procedimento principal
END Principal ; final do programa
ORGANIZAÇÃO DE COMPUTADORES E SISTEMAS OPERACIONAIS 20
Linguagem de Montagem e Linguagem de Máquina
24 de fevereiro de 2010
Programação em Linguagem de Montagem/Assembly (8086)
Exercícios
 Faça um programa para carregar dados (modo imediato) em AX e 
BX e, em seguida subtraí-los, deixando o resultado em AX.
 Faça um programa para somar operandos BCD provenientes das 
locações de memória 0200 e 0201, deixando o resultado em 
0202.
Exercícios:
ORGANIZAÇÃO DE COMPUTADORES E SISTEMAS OPERACIONAIS 21
Linguagem de Montagem e Linguagem de Máquina
24 de fevereiro de 2010
Montagem, Ligação e Depuração de Programas.
Salvar como 
HelloWorld.asm
MONTAGEM
TASM.EXE Montador para a linguagem Assembly.
Sintaxe: 
TASM [opções] fonte [,objeto] [,listagem] [,referência_cruzada] [;]
Linha de Comando mais Comumente Utilizada: 
TASM /z/zi programa 
Opção Significado
/z Display source line with error message
/zi Debug info: zi=full
TLINK.EXE Ligador – cria um programa executável a partir de um objeto.
Sintaxe: 
TLINK [opções] objetos [, executável] [, mapa] [, bibliotecas] [;]
Linha de Comando mais Comumente Utilizada: 
TLINK /x/v programa 
Opção Significado
/x No map file at all
/v Full symbolic debug information
HelloWorld.obj
HelloWorld.exe
.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
ORGANIZAÇÃO DE COMPUTADORES E SISTEMAS OPERACIONAIS 22
Linguagem de Montagem e Linguagem de Máquina
24 de fevereiro de 2010
Referencias
 Tanenbaum A. S. Organização Estruturada de Computadores. S. Paulo: 
Pearson Prentice Hall, 5a edição, 2007.
 Torres Gabriel. Hardware Curso Completo. R. De Janeiro: Axcel Books do 
Brasil Editora Ltda, 4ª edição, 2001.
 LAYNET. Assembly Tutorials. Disponível em 
<http://www.laynetworks.com/assembly%20tutorials.htm> Acesso em 23 de 
fevereiro de 2010 
 Monteiro, Mário A. Introdução à Organização de Computadores. R. De 
Janeiro: LTC Editora S.A., 4ª edição, 2001.
 WIKIPÉDIA. Assembly language. Disponível em: 
<http://en.wikipedia.org/wiki/Assembly_language> Acesso em 23 de fevereiro 
de 2010. 
 ______. Machine Code. Disponível em: <http://en.wikipedia. 
org/wiki/Machine_code > Acesso em 23 de fevereiro de 2010. 
 ______ Pipelining. Disponível em: http://en.wikipedia.org/wiki/Pipelining. 
Acesso em 23 de fevereiro de 2010

Outros materiais