Programação em Assembly

Slides:



Advertisements
Apresentações semelhantes
Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de.
Advertisements

Marco Antonio Montebello Júnior
Arquitetura e organização de computadores
Programação II Estruturas de Dados
SOFTWARE BÁSICO.
Aula 5 – Sumário Revisão da aula anterior Endereçamento indirecto
Assembly MAC-1 Implementação de ciclos Ciclo ‘while’ // Em Java : ...
Programação MAC-1 Exemplo: copiar vector
Aula 4 – Sumário Linguagem assembly do MAC-1 A pilha
PROCEDIMENTOS COM RECURSIVIDADE
Listas lineares Listas Lineares Fila Dupla Pilha Fila Saída restrita
Estrutura de dados Busca
Assembly x86.
A arquitectura IA32 A arquitectura de um processador é caracterizada pelo conjunto de atributos que são visíveis ao programador. Tamanho da palavra Número.
Programação em Assembly Procedimentos e funções
Linguagem de Montagem.
Linguagem de Montagem Vetores.
João Ferreira, Dez 2003STRINGS, 1/6 Definição de String String (sentido lato) -> um string é um conjunto de valores (não necessariamente interpretáveis.
AJProença, Sistemas de Computação, UMinho, 2013/141 Análise do código de gestão de uma função –invocação e regresso instrução de salto, mas com salvaguarda.
Linguagem de Montagem PROVA 4 – 3/12.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Prática de Programação Assembly 8086
Hugo Calazans André Ricardo
2 -1 Organização Básica de Computadores e Linguagem de Montagem Ricardo Pannain ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM - Laboratório.
Interface entre as linguagens C e Assembly 8085
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
A Linguagem de Máquina – Funções e recursividade Prof. André Luis M. Silva orgearq wordpress.com.
Prof. Alessandro Gonçalves
8088 Assembly Software Básico Mitsuo Takaki.
8 - 1 Organização Básica de Computadores e Linguagem de Montagem Ricardo Pannain ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM A pilha e subrotinas.
Procedimentos Registro de Ativação e Variáveis Locais 11 1.
2a Aula Pratica Dispositivos Programáveis Roteador 2E-2S e Modularização.
Hugo Calazans André Ricardo
Ciro Ceissler / ASSEMBLY Ciro Ceissler /
1 Aula 6 – Sumário  Revisão da aula anterior  Endereçamento indirecto  Recursividade  Conceito  Exemplos.
Aula 4 – Sumário Linguagem assembly do MAC-1: Funções e procedimentos
Lucas Aranha ASSEMBLY Lucas Aranha
Existem 8 registos principais de 32 bits no processador (existem mais como %EIP): %EAX %EBX %ECX %EDX %ESI %EDI %EBP %ESP Os registos são armazenados em.
O Stack e Subrotinas Permitem reusar o código Escreva e depure o código uma vez, use-o quantas vezes for preciso Uma Subrotina deve ser chamada Uma Subrotina.
ASSEMBLY – aula 2 Hugo Calazans
Pilha dinâmica Prof.° Jean Daniel Henri Merlin Andreazza
Compiladores - Introdução. O que é um Compilador? “Um compilador é um programa que lê um programa escrito em uma linguagem (linguagem fonte) e a traduz.
Programação em Java RMI - Remote Method Invocation Prof. Luiz Antonio Rodrigues Prof. Luiz Antonio Unioeste - Cascavel Jpanel e Diagramadores.
Programação em Java Threads Prof. Luiz Antonio Rodrigues Prof. Luiz Antonio Unioeste - Cascavel Jpanel e Diagramadores.
Programação em Assembly Conceitos Iniciais Prof. Luiz Antonio Rodrigues Prof. Luiz Antonio Unioeste - Cascavel Jpanel e Diagramadores.
Programação em Assembly Ambiente de Programação Prof. Luiz Antonio Rodrigues Prof. Luiz Antonio Unioeste - Cascavel Jpanel e Diagramadores.
Software Básico GCC Inline
Arquitetura do SET de instruções Instruction SET CISC vs RISC
Estruturas de Dados Aula 2: Estruturas Estáticas
PSI3441 – Arquitetura de Sistemas Embarcados
Aspectos de Interrupção
INF1007: Programação 2 2 – Alocação Dinâmica
Microprogramação.
PSI3441 – Arquitetura de Sistemas Embarcados
Computador MIPS Organização básica e conjunto de instruções.
Introdução à Computação para Engenharia MAC2166
Programação - algoritmia
INF1007 – Programação 2 9 – Pilhas
Estrutura de dados Pilhas e filas
FUNDAMENTO DE PROGRAMAÇÃO
Algoritmos e Estruturas de Dados I
Departamento de Estatística e Informática
Arquitetura de Computadores
Ney Laert Vilar Calazans
Suporte a funções e procedimentos no IA-32 (3)
Suporte a funções e procedimentos no IA-32 (3)
PSI3441 – Arquitetura de Sistemas Embarcados
Programação em assembly
Suporte a funções e procedimentos no IA-32 (3)
Transcrição da apresentação:

Programação em Assembly Estruturas Avançadas Prof. Luiz Antonio Unioeste - Cascavel Prof. Luiz Antonio Rodrigues Jpanel e Diagramadores

Vetores Exemplo Section .data vetor db 0,1,2,3,4 section .text global main main: xor eax, eax ;zera eax xor ebx, ebx ;zera ebx mov al, [vetor] mov bl, [vetor+1] mov eax, 1 int 80

Pilha Reside no segmento apontado pelo registrador SS (stack segment) A posição do topo da pilha é apontado pelo registrador SP (stack pointer) A pilha é alinhada em 16 bits Duas instruções push (empilha) e pop (desempilha) Push reg16/reg32 Push mem16/mem32 Pushw constante16 Pushl constante32

Pilha SP aponta para o topo da pilha Valor 1 SP

Pilha PUSH $0x00000200 0200 SP 0000 Valor 1

Pilha pop eax eax <- 0x00000200 Valor 1 SP

Pilha Utilize a pilha para: Armazenar valores intermediários Preservar o valor de um dado registrador Push eax (armazene o valor de eax) utilize eax livremente Pop eax (recupere o antigo valor de eax)

Exercícios Implemente a troca de dois valores armazenados em registradores utilizando a pilha Inverta as posições de um vetor utilizando a pilha

Procedimentos e funções Chamada CALL label Retorno RET Ex: ... call TESTE TESTE: #codigo da funcao ret

Procedimentos e Funções Chamada CALL label Empilha a próxima instrução a ser executada e desvia para a função PUSH ENDERECO_DA_PROXIMA_INSTRUCAO JUMP FUNCAO

Exercício Implemente uma função que some dois números passados em eax e ebx, retornando o resultado em eax

Exemplo Efetuar uma chamada de função em C utilizando a pilha //arquivo soma.c int soma(int a, int b) { return a+b; } ; arquivo soma_asm.asm extern soma section .data section .text global main main: mov eax, 2 mov ebx, 4 push eax push ebx call soma ; resultado em eax } Compilação: 1) gerar .o do programa c gcc -c soma.c 2) gerar .o do programa asm nasm -f elf soma_asm -g 3) linkar os dois programas gcc -o soma soma.o soma_asm.o -g

Exercícios Dados dois valores em eax e ebx, alterar o valor de ecx para 0 se eax=ebx, 1 se eax> ebx e 2 se eax<eax Criar uma função subtracao que recebe 2 valores, um em eax e um em ebx. A funcao retorna o valor em eax. Criar a função anterior utilizando chamada a uma função escrita em c. Dado um vetor de 5 inteiros Vetor: db 0, 1, 2, 3, 4 Vetor2: db .0,0,0,0,0 Multiplique por 2 cada elemento e armazene no Vetor2