SlideShare uma empresa Scribd logo
1 de 53
Baixar para ler offline
A linguagem ASSEMBLY
Assembly
— Assembly é uma linguagem de baixo
nível, chamada freqüentemente de
“linguagem de montagem”
— É uma linguagem considerada difícil,
principalmente porque o programador
precisa conhecer a estrutura da máquina
para usá-la
Assembly
— A linguagem Assembly é atrelada à
arquitetura de uma certa CPU, ou seja,
ela depende completamente do hardware
— Cada família de processador tem sua
própria linguagem assembly (Ex. X86,
ARM, SPARC, MIPS)
— Por essa razão Assembly não é uma
linguagem portável, ao contrário da
maioria das linguagens de alto nível
Assembly
— Antes do assembly:
◦ adição do microprocessador de sinal digital
(DSP) TMS-320C54x da Texas Instruments
– 0000000SIAAAAAAA
◦ instrução de adição dos computadores B-200,
B-300 e B-500 da Burroughs Corporation:
– Campo: O M N AAA BBB CCC
– Código: 1 2 3 100 200 300
Assembly - História
— As primeiras linguagens Assembly
surgiram na década de 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
Assembly - História
— Assembly foi muito usada para várias
aplicações até os anos 80, quando foi
substituída pelas linguagens de alto nível
— Isso aconteceu principalmente pela
necessidade de aumento da produtividade
de software
Assembly - História
— Atualmente Assembly é usada para
manipulação direta de hardware 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
Assembly - Assembler
— 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. O Assembler
é um utilitário que traduz o código
Assembly para a máquina
Assembly - Assembler
— Exemplo:
Antes -> mov al, 061h (x86/IA-32)
Depois -> 10110000 01100001
Assembly - Fundamentos
— Byte, Word e Dword são blocos de dados
básicos. O processador trabalha com o
tamanho de dados adequados para
executar as instruções
— Um byte possui 8 bits, um word possui 16
bits ou 2 bytes e um dword possui 32 bits
ou 4 bytes
Assembly - Fundamentos
— Em Assembly é comum representar os
números na forma hexadecimal. Isso
acontece porque é interessante visualizar
o número na forma de dados
— A representação hexadecimal facilita o
tratamento de números muito grandes e
permite saber quais bits estão “ligados”
ou “desligados”
Assembly - Fundamentos
— Um algarismo hexadecimal pode ser
representado por quatro algarismos
binários
— Logo um byte pode ser representado
como dois números hexa, um word como
quatro números hexa e um dword como
oito números hexa
Assembly - Fundamentos
Binário Hexa Decimal Tipo
10000000 80 128 byte
10000000000000
01
8001 32.769 word
11111111111111
11
FFFF 65.535 word
11111111111111
11111111111111
1111
FFFFFFFF 4.294.967.2
95
dword
Assembly - Registradores
— Registradores são áreas especiais dentro
do processador que são mais rápidas que
operandos de memória.
— Como vamos trabalhar com o processador
Intel, existem apenas 8 registradores de
uso geral
Assembly - Registradores
— São eles:
EAX, EBX, ECX, EDX, ESI, EDI, ESP, EBP
— Os registradores ESP e EBP só devem ser
usados preferencialmente para trabalhar
com a pilha
Assembly - Registradores
— Nos registradores de uso geral (Exceto
ESI e EDI) é permitido usar três
modos de acesso diferentes, ilustrados
pela figura abaixo:
Assembly - Registradores
— EAX -> Chamado de “Acumulador”,
geralmente é usado para operações
aritméticas e para guardar resultados
— EBX -> Chamado de “Base”, geralmente é
usado para armazenar dados em geral e
para endereços de memória
Assembly - Registradores
— ECX -> Chamado de “Contador”, como o
nome já diz é usado como contador,
principalmente para controlar loops
— EDX -> Chamado de registrador de dados,
é usado geralmente para guardar o
endereço de uma variável na memória
Assembly - Registradores
— ESI e EDI -> Respectivamente “Source
Index” e “Destination Index”, são menos
usados do que os registradores descritos
anteriormente. Geralmente usa-se ESI e
EDI para movimentação de dados, com
ESI guardando o endereço fonte de uma
variável e EDI guardando o endereço
destino. Não podem ser acessados em
nível de Byte.
Assembly - Registradores
— ESP e EBP -> Respectivamente “Stack
Pointer” e “Base Pointer”, só devem ser
usados para manipulação da pilha. O
Registrador ESP guarda a referência para
o topo da pilha, enquanto o registrador
EBP é usado para “andar” pela pilha
Assembly - Registradores
— Entre os registradores que não são de uso
geral, existe um registrador muito
relevante para o programador, o
registrador flags
— Através do registrador flags podemos
saber se dois valores são iguais, se um é
maior que outro ou se um valor é
negativo, além de outras informações
Assembly - Registradores
— O => Overflow
— D => Direction
— I => Interrupt Enable
— T => Trap
— S => Signal
Assembly - Registradores
— Z => Zero
— A => Auxiliar Carry
— P => Parity
— C => Carry
Assembly - Pilha
— Todos os programas fazem uso da pilha
em tempo de execução, porém nas
linguagens de alto nível não é preciso se
preocupar com o funcionamento da pilha
— Já em Assembly, o programador precisa
saber trabalhar com a pilha, pois ela é
uma ferramenta importante
Assembly - Pilha
— A pilha é uma área de dados existente na
memória em tempo de execução, na qual
seu programa pode armazenar dados
temporariamente
• O processador é rápido no acesso à pilha,
tanto para escrever quanto para ler
Assembly - Pilha
— As principais funcionalidades da pilha são:
- Preservar valores de registradores em
funções
- Preservar dados da memória
- Transferir dados sem usar registradores
- Reverter a ordem de dados
- Chamar outras funções e depois retornar
- Passar parâmetros para funções
Assembly – Exemplo Pilha
push ax
push bx
push cx
push dx
push ds
push es
push di
push si
pusha
push es, ds
popa
pop es, ds
Assembly - Instruções
— Movimentação de dados:
- mov destino, fonte (Sintaxe Intel)
- mov fonte, destino (Sintaxe AT&T)
— Obs: Nas instruções AT&T, é necessário
informar o tamanho do dado com que se
está trabalhando
Assembly - Instruções
Intel AT&T
mov eax, 1 movl $1, %eax
mov ebx, 0ffh movl $0xff, %ebx
mov eax, [ebx] movl (%ebx), %eax
mov eax, [ebx+3] movl 3(%ebx), %eax
Assembly - Instruções
— Instrução de soma:
- add destino, fonte (Sintaxe Intel)
Exemplo: add eax,[ebx+ecx]
- add fonte, destino (Sintaxe AT&T)
Exemplo: addl (%ebx,%ecx),%eax
Assembly - Instruções
— Instrução de subtração:
- sub destino, fonte (Sintaxe Intel)
Exemplo: sub eax,ebx
- sub fonte, destino (Sintaxe AT&T)
Exemplo: subl %ebx,%eax
Assembly - Instruções
— Instruções de operações lógicas:
- and/or/xor destino, fonte (Sintaxe Intel)
Exemplo: and ax,bx
- and/or/xor fonte, destino (Sintaxe AT&T)
Exemplo: andw %bx,%ax
Assembly - Instruções
— Instrução de comparação:
- cmp operando1, operando2 (Sintaxe
Intel)
Exemplo: cmp 08h, eax
- cmp operando1, operando2 (Sintaxe
AT&T)
Exemplo: cmp $0x8, %eax
Assembly - Instruções
— Instruções de jump:
“Pulo” incondicional:
- jmp [100] (Sintaxe Intel)
- jmp eax (Sintaxe Intel)
- jmp *100 (Sintaxe AT&T)
- jmp *%eax (Sintaxe AT&T)
Assembly - Instruções
“Pulo” condicional:
- je [100] (Sintaxe Intel)
- jne eax (Sintaxe Intel)
- je *100 (Sintaxe AT&T)
- jne *%eax (Sintaxe AT&T)
Assembly - Instruções
— Instruções de manipulação da pilha:
- push eax (Sintaxe Intel)
- push %eax (Sintaxe AT&T)
- pop eax (Sintaxe Intel)
- Pop %eax (Sintaxe AT&T)
Assembly - Seções
— O código Assembly é dividido em seções.
As principais seções no Linux são:
- section .data -> A seção .data é usada
para declarar variáveis inicializadas.
Porém essas “variáveis” não mudam no
decorrer do programa. Essa seção é usada
geralmente para definir nomes de
arquivos, constantes, entre outros.
Assembly - Seções
- Exemplo:
section .data
mensagem: db 'Hello world!'
msglength: equ 12
Assembly - Seções
- section .bss -> É a seção usada para
declarar as variáveis do programa
- Exemplo:
section .bss
nomearq: resb 230 ;Reserva 230
bytes
numero: resb 1 ;Reserva 1 byte
array: resw 10 ;Reserva 10 words
Assembly - Seções
- section .text -> Essa é a seção onde o código do
programa é escrito
- Exemplo:
section .text
global _start
_start: . . .
. . .
. . .
Assembly - Interrupções
— Interrupções são chamadas ao
processador requisitando um serviço
— O nome interrupção vem do fato de que o
processador tem sua atividade atual
interrompida quando recebe um sinal de
chamada
Assembly - Interrupções
— Quando isso acontece, o processador
salva o processo atual e executa a rotina
daquela interrupção
— Após a execução da rotina, que
geralmente está armazenada em uma
tabela na memória RAM, o processador
retorna ao processo em que estava
anteriormente
Assembly - Interrupções
— Para se chamar uma interrupção no Linux,
é feito o seguinte processo:
- Coloca-se o número da interrupção no
registrador EAX
- Coloca-se os argumentos requeridos
pela interrupção nos devidos registradores
- Chama-se a interrupção
— O resultado geralmente será retornado
em EAX
Assembly - Interrupções
- Exemplo (Sintaxe Intel):
mov eax,1 ; Interrupção Exit
mov ebx,0 ; Argumento em EBX
int 80h ; Chamada da interrupção
- Exemplo (Sintaxe AT&T):
movl $1,%eax
movl $0, %ebx
int $0x80
Assembly - Interrupções
Assembly – Organização do
Programa
— Um programa é constituido por várias
regiões de memória.
◦ Pilha
◦ Heap
◦ Código
◦ Dados
Assembly - Exemplo
— Hello World (Sintaxe Intel)
section .data
hello: db 'Hello world!',10 ; A string 'Hello World!ʻ e um linefeed
helloLenght: equ $-hello ; Tamanho da string hello
section .text
global _start
_start:
mov eax,4 ; Interrupção de escrita (sys_write)
mov ebx,1 ; Argumento que indica modo de escrita
mov ecx,hello ; Argumento que indica o endereço da string
mov edx,helloLenght ; Argumento que indica o tamanho da string
int 80h ; Chamada da interrupção
mov eax,1 ; Interrupção exit (sys_exit)
mov ebx,0 ; Argumento da interrupção
int 80h ; Chamada da interrupção
Assembly - Exemplo
— Hello World (Sintaxe AT&T)
.data hello:
.string "Hello World!n"
.text
.globl main
main:
mov $4,%eax
mov $1,%ebx
mov $hello,%ecx
mov $13,%edx
int $0x80
mov $1,%eax
mov $0,%ebx
int $0x80
Assembly - Include
.stack
.data
include arquivo1.asm
include arquivo2.asm
.code
start:
include arquivo3.asm
end start
Assembly – Carregar Arquivos
.data
arquivo1 db 'dat/arquivo1' , 0
arquivo2 db 'dat/arquivo2' , 0
arquivo3 db 'dat/arquivo3' , 0
arquivo4 db 'dat/arquivo4' , 0
arquivo5 db 'dat/arquivo5' , 0
arquivo6 db 'dat/arquivo6' , 0
arquivo7 db 'dat/arquivo7' , 0
arquivo8 db 'dat/arquivo8' , 0
Assembly - Procedimentos
.text
call NomeProcedimento
NomeProcedimento PROC NEAR
mov ax, 0x0F;
ret
NomeProcedimento ENDP
Assembly – Interrupção de Vídeo
— Exemplo
mov ah, 0
mov al, 13h ; modo video 320*200
int 10h
— Video Display Area (RAM)
◦ A000 -> gráficos de alta resolução
◦ B000
◦ B800
Assembly – Referências
— www.cin.ufpe.br/~clac/infra_de_software
— http://www.wagemakers.be/english/doc/vga
— http://www.scribd.com/doc/13290971/INTERRUPCOES
— http://maven.smith.edu/~thiebaut/ArtOfAssembly/
artofasm.html
— http://www.xs4all.nl/~smit/asm04001.htm#vga
— http://arapaho.nsuok.edu/~kingw/CS3173/
Chapter9.htm
— http://burks.bton.ac.uk/burks/language/asm/asmtut/
asm8.htm

Mais conteúdo relacionado

Semelhante a Assembly PDFs Eduardo Cj como usar o assembly

Aula 004 noções de hardware
Aula 004   noções de hardwareAula 004   noções de hardware
Aula 004 noções de hardwareFlávio Freitas
 
Java Comunicação Serial
Java Comunicação SerialJava Comunicação Serial
Java Comunicação SerialAndrei Bastos
 
5 hardware - processadores
5   hardware - processadores5   hardware - processadores
5 hardware - processadoresLucky Fox
 
Arquitectura Interna Do Computador
Arquitectura Interna Do ComputadorArquitectura Interna Do Computador
Arquitectura Interna Do Computadoraerc
 
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORESARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORESwillian324163
 
Placa mãe e barramentos
Placa mãe e barramentosPlaca mãe e barramentos
Placa mãe e barramentosNeil Azevedo
 
10 apostila microcontroladores
10  apostila microcontroladores10  apostila microcontroladores
10 apostila microcontroladoresAlyson Cavalcante
 
Estrutura básica de um computador
Estrutura básica de um computadorEstrutura básica de um computador
Estrutura básica de um computadorAna Covas Grilo
 
Estrutura Básica de um
Estrutura Básica de um Estrutura Básica de um
Estrutura Básica de um Ana Covas Grilo
 
Criando um sistema operacional básico
Criando um sistema operacional básicoCriando um sistema operacional básico
Criando um sistema operacional básicoVHC Informatica
 
Sistemas logicos programaveis
Sistemas logicos programaveisSistemas logicos programaveis
Sistemas logicos programaveislaritha
 
Informática - Aula 2
Informática - Aula 2Informática - Aula 2
Informática - Aula 2IBEST ESCOLA
 
Aula de-introducao-z os
Aula de-introducao-z osAula de-introducao-z os
Aula de-introducao-z osIvan Sanches
 
Aula 04 - Módulo I
Aula 04 - Módulo IAula 04 - Módulo I
Aula 04 - Módulo IGrendene S/A
 
Hardware apresentação 5 - cpu e sockets
Hardware   apresentação 5 - cpu e socketsHardware   apresentação 5 - cpu e sockets
Hardware apresentação 5 - cpu e socketsLuiz Pereira de Souza
 
Arquitetura de Computadores: Barramentos e instruções
Arquitetura de Computadores: Barramentos e instruçõesArquitetura de Computadores: Barramentos e instruções
Arquitetura de Computadores: Barramentos e instruçõesAlex Camargo
 

Semelhante a Assembly PDFs Eduardo Cj como usar o assembly (20)

Aula 004 noções de hardware
Aula 004   noções de hardwareAula 004   noções de hardware
Aula 004 noções de hardware
 
Java Comunicação Serial
Java Comunicação SerialJava Comunicação Serial
Java Comunicação Serial
 
5 hardware - processadores
5   hardware - processadores5   hardware - processadores
5 hardware - processadores
 
Arquitectura Interna Do Computador
Arquitectura Interna Do ComputadorArquitectura Interna Do Computador
Arquitectura Interna Do Computador
 
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORESARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES
 
Placa mãe e barramentos
Placa mãe e barramentosPlaca mãe e barramentos
Placa mãe e barramentos
 
10 apostila microcontroladores
10  apostila microcontroladores10  apostila microcontroladores
10 apostila microcontroladores
 
Placa mãe (motherboard)
Placa mãe (motherboard)Placa mãe (motherboard)
Placa mãe (motherboard)
 
Estrutura básica de um computador
Estrutura básica de um computadorEstrutura básica de um computador
Estrutura básica de um computador
 
Estrutura Básica de um
Estrutura Básica de um Estrutura Básica de um
Estrutura Básica de um
 
Criando um sistema operacional básico
Criando um sistema operacional básicoCriando um sistema operacional básico
Criando um sistema operacional básico
 
Resumo x86
Resumo x86Resumo x86
Resumo x86
 
Python.pptx
Python.pptxPython.pptx
Python.pptx
 
Sistemas logicos programaveis
Sistemas logicos programaveisSistemas logicos programaveis
Sistemas logicos programaveis
 
Informática - Aula 2
Informática - Aula 2Informática - Aula 2
Informática - Aula 2
 
Aula de-introducao-z os
Aula de-introducao-z osAula de-introducao-z os
Aula de-introducao-z os
 
Aula 04 - Módulo I
Aula 04 - Módulo IAula 04 - Módulo I
Aula 04 - Módulo I
 
Hardware apresentação 5 - cpu e sockets
Hardware   apresentação 5 - cpu e socketsHardware   apresentação 5 - cpu e sockets
Hardware apresentação 5 - cpu e sockets
 
Arquitetura de Computadores: Barramentos e instruções
Arquitetura de Computadores: Barramentos e instruçõesArquitetura de Computadores: Barramentos e instruções
Arquitetura de Computadores: Barramentos e instruções
 
Oc2 cap03
Oc2 cap03Oc2 cap03
Oc2 cap03
 

Último

Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...marcelafinkler
 
Artigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.pptArtigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.pptRogrioGonalves41
 
Renascimento Cultural na Idade Moderna PDF
Renascimento Cultural na Idade Moderna PDFRenascimento Cultural na Idade Moderna PDF
Renascimento Cultural na Idade Moderna PDFRafaelaMartins72608
 
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...marcelafinkler
 
QUIZ ensino fundamental 8º ano revisão geral
QUIZ ensino fundamental 8º ano revisão geralQUIZ ensino fundamental 8º ano revisão geral
QUIZ ensino fundamental 8º ano revisão geralAntonioVieira539017
 
Texto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptTexto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptjricardo76
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxMarcosLemes28
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfamarianegodoi
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmicolourivalcaburite
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do séculoBiblioteca UCS
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfAutonoma
 
Aula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptAula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptNathaliaFreitas32
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdfmarlene54545
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...PatriciaCaetano18
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptxJssicaCassiano2
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfcomercial400681
 
M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxJustinoTeixeira1
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptssuser2b53fe
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxLuizHenriquedeAlmeid6
 
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...AnaAugustaLagesZuqui
 

Último (20)

Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
 
Artigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.pptArtigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.ppt
 
Renascimento Cultural na Idade Moderna PDF
Renascimento Cultural na Idade Moderna PDFRenascimento Cultural na Idade Moderna PDF
Renascimento Cultural na Idade Moderna PDF
 
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
 
QUIZ ensino fundamental 8º ano revisão geral
QUIZ ensino fundamental 8º ano revisão geralQUIZ ensino fundamental 8º ano revisão geral
QUIZ ensino fundamental 8º ano revisão geral
 
Texto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptTexto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.ppt
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptx
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do século
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
 
Aula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptAula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .ppt
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptx
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
 

Assembly PDFs Eduardo Cj como usar o assembly

  • 2. Assembly — Assembly é uma linguagem de baixo nível, chamada freqüentemente de “linguagem de montagem” — É uma linguagem considerada difícil, principalmente porque o programador precisa conhecer a estrutura da máquina para usá-la
  • 3. Assembly — A linguagem Assembly é atrelada à arquitetura de uma certa CPU, ou seja, ela depende completamente do hardware — Cada família de processador tem sua própria linguagem assembly (Ex. X86, ARM, SPARC, MIPS) — Por essa razão Assembly não é uma linguagem portável, ao contrário da maioria das linguagens de alto nível
  • 4. Assembly — Antes do assembly: ◦ adição do microprocessador de sinal digital (DSP) TMS-320C54x da Texas Instruments – 0000000SIAAAAAAA ◦ instrução de adição dos computadores B-200, B-300 e B-500 da Burroughs Corporation: – Campo: O M N AAA BBB CCC – Código: 1 2 3 100 200 300
  • 5. Assembly - História — As primeiras linguagens Assembly surgiram na década de 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
  • 6. Assembly - História — Assembly foi muito usada para várias aplicações até os anos 80, quando foi substituída pelas linguagens de alto nível — Isso aconteceu principalmente pela necessidade de aumento da produtividade de software
  • 7. Assembly - História — Atualmente Assembly é usada para manipulação direta de hardware 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
  • 8. Assembly - Assembler — 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. O Assembler é um utilitário que traduz o código Assembly para a máquina
  • 9. Assembly - Assembler — Exemplo: Antes -> mov al, 061h (x86/IA-32) Depois -> 10110000 01100001
  • 10. Assembly - Fundamentos — Byte, Word e Dword são blocos de dados básicos. O processador trabalha com o tamanho de dados adequados para executar as instruções — Um byte possui 8 bits, um word possui 16 bits ou 2 bytes e um dword possui 32 bits ou 4 bytes
  • 11. Assembly - Fundamentos — Em Assembly é comum representar os números na forma hexadecimal. Isso acontece porque é interessante visualizar o número na forma de dados — A representação hexadecimal facilita o tratamento de números muito grandes e permite saber quais bits estão “ligados” ou “desligados”
  • 12. Assembly - Fundamentos — Um algarismo hexadecimal pode ser representado por quatro algarismos binários — Logo um byte pode ser representado como dois números hexa, um word como quatro números hexa e um dword como oito números hexa
  • 13. Assembly - Fundamentos Binário Hexa Decimal Tipo 10000000 80 128 byte 10000000000000 01 8001 32.769 word 11111111111111 11 FFFF 65.535 word 11111111111111 11111111111111 1111 FFFFFFFF 4.294.967.2 95 dword
  • 14. Assembly - Registradores — Registradores são áreas especiais dentro do processador que são mais rápidas que operandos de memória. — Como vamos trabalhar com o processador Intel, existem apenas 8 registradores de uso geral
  • 15. Assembly - Registradores — São eles: EAX, EBX, ECX, EDX, ESI, EDI, ESP, EBP — Os registradores ESP e EBP só devem ser usados preferencialmente para trabalhar com a pilha
  • 16. Assembly - Registradores — Nos registradores de uso geral (Exceto ESI e EDI) é permitido usar três modos de acesso diferentes, ilustrados pela figura abaixo:
  • 17. Assembly - Registradores — EAX -> Chamado de “Acumulador”, geralmente é usado para operações aritméticas e para guardar resultados — EBX -> Chamado de “Base”, geralmente é usado para armazenar dados em geral e para endereços de memória
  • 18. Assembly - Registradores — ECX -> Chamado de “Contador”, como o nome já diz é usado como contador, principalmente para controlar loops — EDX -> Chamado de registrador de dados, é usado geralmente para guardar o endereço de uma variável na memória
  • 19. Assembly - Registradores — ESI e EDI -> Respectivamente “Source Index” e “Destination Index”, são menos usados do que os registradores descritos anteriormente. Geralmente usa-se ESI e EDI para movimentação de dados, com ESI guardando o endereço fonte de uma variável e EDI guardando o endereço destino. Não podem ser acessados em nível de Byte.
  • 20. Assembly - Registradores — ESP e EBP -> Respectivamente “Stack Pointer” e “Base Pointer”, só devem ser usados para manipulação da pilha. O Registrador ESP guarda a referência para o topo da pilha, enquanto o registrador EBP é usado para “andar” pela pilha
  • 21. Assembly - Registradores — Entre os registradores que não são de uso geral, existe um registrador muito relevante para o programador, o registrador flags — Através do registrador flags podemos saber se dois valores são iguais, se um é maior que outro ou se um valor é negativo, além de outras informações
  • 22. Assembly - Registradores — O => Overflow — D => Direction — I => Interrupt Enable — T => Trap — S => Signal
  • 23. Assembly - Registradores — Z => Zero — A => Auxiliar Carry — P => Parity — C => Carry
  • 24. Assembly - Pilha — Todos os programas fazem uso da pilha em tempo de execução, porém nas linguagens de alto nível não é preciso se preocupar com o funcionamento da pilha — Já em Assembly, o programador precisa saber trabalhar com a pilha, pois ela é uma ferramenta importante
  • 25. Assembly - Pilha — A pilha é uma área de dados existente na memória em tempo de execução, na qual seu programa pode armazenar dados temporariamente • O processador é rápido no acesso à pilha, tanto para escrever quanto para ler
  • 26. Assembly - Pilha — As principais funcionalidades da pilha são: - Preservar valores de registradores em funções - Preservar dados da memória - Transferir dados sem usar registradores - Reverter a ordem de dados - Chamar outras funções e depois retornar - Passar parâmetros para funções
  • 27. Assembly – Exemplo Pilha push ax push bx push cx push dx push ds push es push di push si pusha push es, ds popa pop es, ds
  • 28. Assembly - Instruções — Movimentação de dados: - mov destino, fonte (Sintaxe Intel) - mov fonte, destino (Sintaxe AT&T) — Obs: Nas instruções AT&T, é necessário informar o tamanho do dado com que se está trabalhando
  • 29. Assembly - Instruções Intel AT&T mov eax, 1 movl $1, %eax mov ebx, 0ffh movl $0xff, %ebx mov eax, [ebx] movl (%ebx), %eax mov eax, [ebx+3] movl 3(%ebx), %eax
  • 30. Assembly - Instruções — Instrução de soma: - add destino, fonte (Sintaxe Intel) Exemplo: add eax,[ebx+ecx] - add fonte, destino (Sintaxe AT&T) Exemplo: addl (%ebx,%ecx),%eax
  • 31. Assembly - Instruções — Instrução de subtração: - sub destino, fonte (Sintaxe Intel) Exemplo: sub eax,ebx - sub fonte, destino (Sintaxe AT&T) Exemplo: subl %ebx,%eax
  • 32. Assembly - Instruções — Instruções de operações lógicas: - and/or/xor destino, fonte (Sintaxe Intel) Exemplo: and ax,bx - and/or/xor fonte, destino (Sintaxe AT&T) Exemplo: andw %bx,%ax
  • 33. Assembly - Instruções — Instrução de comparação: - cmp operando1, operando2 (Sintaxe Intel) Exemplo: cmp 08h, eax - cmp operando1, operando2 (Sintaxe AT&T) Exemplo: cmp $0x8, %eax
  • 34. Assembly - Instruções — Instruções de jump: “Pulo” incondicional: - jmp [100] (Sintaxe Intel) - jmp eax (Sintaxe Intel) - jmp *100 (Sintaxe AT&T) - jmp *%eax (Sintaxe AT&T)
  • 35. Assembly - Instruções “Pulo” condicional: - je [100] (Sintaxe Intel) - jne eax (Sintaxe Intel) - je *100 (Sintaxe AT&T) - jne *%eax (Sintaxe AT&T)
  • 36. Assembly - Instruções — Instruções de manipulação da pilha: - push eax (Sintaxe Intel) - push %eax (Sintaxe AT&T) - pop eax (Sintaxe Intel) - Pop %eax (Sintaxe AT&T)
  • 37. Assembly - Seções — O código Assembly é dividido em seções. As principais seções no Linux são: - section .data -> A seção .data é usada para declarar variáveis inicializadas. Porém essas “variáveis” não mudam no decorrer do programa. Essa seção é usada geralmente para definir nomes de arquivos, constantes, entre outros.
  • 38. Assembly - Seções - Exemplo: section .data mensagem: db 'Hello world!' msglength: equ 12
  • 39. Assembly - Seções - section .bss -> É a seção usada para declarar as variáveis do programa - Exemplo: section .bss nomearq: resb 230 ;Reserva 230 bytes numero: resb 1 ;Reserva 1 byte array: resw 10 ;Reserva 10 words
  • 40. Assembly - Seções - section .text -> Essa é a seção onde o código do programa é escrito - Exemplo: section .text global _start _start: . . . . . . . . .
  • 41. Assembly - Interrupções — Interrupções são chamadas ao processador requisitando um serviço — O nome interrupção vem do fato de que o processador tem sua atividade atual interrompida quando recebe um sinal de chamada
  • 42. Assembly - Interrupções — Quando isso acontece, o processador salva o processo atual e executa a rotina daquela interrupção — Após a execução da rotina, que geralmente está armazenada em uma tabela na memória RAM, o processador retorna ao processo em que estava anteriormente
  • 43. Assembly - Interrupções — Para se chamar uma interrupção no Linux, é feito o seguinte processo: - Coloca-se o número da interrupção no registrador EAX - Coloca-se os argumentos requeridos pela interrupção nos devidos registradores - Chama-se a interrupção — O resultado geralmente será retornado em EAX
  • 44. Assembly - Interrupções - Exemplo (Sintaxe Intel): mov eax,1 ; Interrupção Exit mov ebx,0 ; Argumento em EBX int 80h ; Chamada da interrupção - Exemplo (Sintaxe AT&T): movl $1,%eax movl $0, %ebx int $0x80
  • 46. Assembly – Organização do Programa — Um programa é constituido por várias regiões de memória. ◦ Pilha ◦ Heap ◦ Código ◦ Dados
  • 47. Assembly - Exemplo — Hello World (Sintaxe Intel) section .data hello: db 'Hello world!',10 ; A string 'Hello World!ʻ e um linefeed helloLenght: equ $-hello ; Tamanho da string hello section .text global _start _start: mov eax,4 ; Interrupção de escrita (sys_write) mov ebx,1 ; Argumento que indica modo de escrita mov ecx,hello ; Argumento que indica o endereço da string mov edx,helloLenght ; Argumento que indica o tamanho da string int 80h ; Chamada da interrupção mov eax,1 ; Interrupção exit (sys_exit) mov ebx,0 ; Argumento da interrupção int 80h ; Chamada da interrupção
  • 48. Assembly - Exemplo — Hello World (Sintaxe AT&T) .data hello: .string "Hello World!n" .text .globl main main: mov $4,%eax mov $1,%ebx mov $hello,%ecx mov $13,%edx int $0x80 mov $1,%eax mov $0,%ebx int $0x80
  • 49. Assembly - Include .stack .data include arquivo1.asm include arquivo2.asm .code start: include arquivo3.asm end start
  • 50. Assembly – Carregar Arquivos .data arquivo1 db 'dat/arquivo1' , 0 arquivo2 db 'dat/arquivo2' , 0 arquivo3 db 'dat/arquivo3' , 0 arquivo4 db 'dat/arquivo4' , 0 arquivo5 db 'dat/arquivo5' , 0 arquivo6 db 'dat/arquivo6' , 0 arquivo7 db 'dat/arquivo7' , 0 arquivo8 db 'dat/arquivo8' , 0
  • 51. Assembly - Procedimentos .text call NomeProcedimento NomeProcedimento PROC NEAR mov ax, 0x0F; ret NomeProcedimento ENDP
  • 52. Assembly – Interrupção de Vídeo — Exemplo mov ah, 0 mov al, 13h ; modo video 320*200 int 10h — Video Display Area (RAM) ◦ A000 -> gráficos de alta resolução ◦ B000 ◦ B800
  • 53. Assembly – Referências — www.cin.ufpe.br/~clac/infra_de_software — http://www.wagemakers.be/english/doc/vga — http://www.scribd.com/doc/13290971/INTERRUPCOES — http://maven.smith.edu/~thiebaut/ArtOfAssembly/ artofasm.html — http://www.xs4all.nl/~smit/asm04001.htm#vga — http://arapaho.nsuok.edu/~kingw/CS3173/ Chapter9.htm — http://burks.bton.ac.uk/burks/language/asm/asmtut/ asm8.htm