Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

AulaAula
1212
Programação em 
Linguagem de 
Montagem
Prof. Minoru CIC121­Org.e Arq.de Comp. II 2
Linguagem de Montagem
 Tradutores
 Linguagem­fonte
 Linguagem­alvo
 Interpretadores
 Execução da linguagem alvo
 Fases da tradução de um programa
 linguagem­fonte   programa­objeto ou →
programa binário executável
Prof. Minoru CIC121­Org.e Arq.de Comp. II 3
Introdução à Linguagem 
de Montagem
Assembler   Montador→
Linguagem de montagem   Assembly language→
Prof. Minoru CIC121­Org.e Arq.de Comp. II 4
Linguagem de Montagem
O que é Linguagem de Montagem?
É a linguagem na qual cada instrução é uma operação do 
processador, geralmente expresso através de mnemônicos, ou 
abreviação da operação (add, sub, ld, mov, etc...)
Porque usar linguagem de montagem?
É uma linguagem muito difícil. Não é para covardes e fracotes.
Drivers, rotinas de alta performance, etc,...
Prof. Minoru CIC121­Org.e Arq.de Comp. II 5
Por que usar linguagem 
de montagem?
Prof. Minoru CIC121­Org.e Arq.de Comp. II 6
Formato de uma 
declaração em 
linguagem de montagem
Cálculo de N = I + J, linguagem Intel Pentium  
Prof. Minoru CIC121­Org.e Arq.de Comp. II 7
Formato de uma 
declaração em 
linguagem de montagem 
Cálculo de N = I + J, linguagem Motorola 680x0
Prof. Minoru CIC121­Org.e Arq.de Comp. II 8
Formato de uma 
declaração em 
linguagem de montagem
Cálculo de N = I + J, linguagem Sparc
Prof. Minoru CIC121­Org.e Arq.de Comp. II 9
Pseudo-instruções (1)
Algumas das pseudo-instruções disponíveis no assembler do Pentium 4 
(MASM)
Prof. Minoru CIC121­Org.e Arq.de Comp. II 10
Pseudo-instruções (2)
Algumas das pseudo-instruções disponíveis no assembler do Pentium 4 
(MASM)
Prof. Minoru CIC121­Org.e Arq.de Comp. II 11
A família x86
 Uma família de processadores
 Criada pela Intel em 1978
 8086 – 16 bits
 386 – 32 bits
 486 – 32 bits
 586 Pentium – 32 bits
 Pentium II/ Pentium III/ Pentium IV/ Core/ Core 2 – 32 bits/64 
bits
 Core i3/ Core i5/ Core i7 – 64 bits
 AMD
Prof. Minoru CIC121­Org.e Arq.de Comp. II 12
Assembler
 Assembler é o programa capaz de transformar a 
representação textual de um código assembly em 
código de máquina
 Ex.:
 TASM – Turbo Assembler
 NASM – Netwide Assembler
 GAS – GNU Assembler
 MASM – Microsoft Macro Assembler
 Usaremos o NASM (http://www.nasm.us/)
Prof. Minoru CIC121­Org.e Arq.de Comp. II 13
Assembler
 Cada assembler tem algumas 
particularidades de:
 Como expressar endereços
 Como expressar constantes
 Pseudo­instruções suportadas
Prof. Minoru CIC121­Org.e Arq.de Comp. II 14
Assembly
 Uma instrução assembly tem comumente a seguinte 
forma:
 Label é um rótulo da linha, um nome dado a esta linha de 
código. É opcional
 Instrução é um dos mnemônicos do assembly
 Operandos um ou mais operandos separados por vírgula
 Comentários são precedidos por ;(ponto e vírgula)
 Uma linha pode conter apenas um comentário ou/e 
apenas um label
label: instrução operandos ; comentário
Prof. Minoru CIC121­Org.e Arq.de Comp. II 15
Assembly
 Representação numérica
 Há muitas maneiras de representar constantes 
numérias
 Decimal: 64
 Hexadecimal: 0x40
 Binário: 1000000b
 Octal: 100q
 O símbolo especial $ é o número da linha 
atual do código
Prof. Minoru CIC121­Org.e Arq.de Comp. II 16
Assembly
 Representação de constantes de texto
 São exibidas entre apóstrofos (aspas simples)
 Uma vírgula pode ser usada para concatenar 
strings
 Exemplos:
mov eax, 'abcd' 
msg: db 'Mensagem: ', ' Ola!'
Prof. Minoru CIC121­Org.e Arq.de Comp. II 17
Assembly
 Pseudo­instruções
 Não são instruções conhecidas pelo 
processador
 São interpretadas pelo assembler
 Tem funções como armazenar áreas de dados
 Definir Macros
 Definir constantes
Prof. Minoru CIC121­Org.e Arq.de Comp. II 18
 Pseudo­instrução
 DB/ DW/ DD
 Declara uma área de dados inicializada
 RESB/ RESW/ RESD
 Reserva uma área de N bytes/words/double
 Exemplos
Assembly
DB 55 ; armazena o valor 55
DW 30 ; armazena o valor 30
buffer: RESB 256 ; reserva 256 bytes
Prof. Minoru CIC121­Org.e Arq.de Comp. II 19
Assembly
 Pseudo­instruções
 EQU – define uma constante
 TIMES – repete uma instrução n vezes
 Exemplos:
message: DB 'hello, world'
msglen: EQU $-message
times 15 resb 1
buffer: db 'hello, world'
times 64-$+buffer db ' '
Prof. Minoru CIC121­Org.e Arq.de Comp. II 20
Assembly
 Hello World!!
SECTION .data ; área de dados
msg: db “Hello World”, 10 ; string a ser impressa
len: equ 12 ; tamanho da string
SECTION .text ; seção de código
Global main ; declara o procedimento main()
main:
mov edx, len ; arg3, tamanho da string a imprimir
mov ecx, msg ; arg2, ponteiro da string
mov ebx, 1 ; arg1, onde escrever, 1 = tela
mov eax, 4 ; chamada do sitema sysout
int 0x80 ; interrupção 80 hex, chamar o SO
mov ebx, 0 ; exit code, 0 = normal
mov eax, 1 ; chamada do kernel para terminar
int 0x80 ; interrupção 80 hex, chamar o SO
Prof. Minoru CIC121­Org.e Arq.de Comp. II 21
Assembly
 Traduzindo:
 nasm ­f elf64 hello.asm
 Gera o arquivo objeto .o
 Linkando o arquivo
 ld ­o hello hello.o
 Gera o executável hello
 Para executar use:
 ./hello
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20
	Slide 21

Mais conteúdos dessa disciplina