A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Programação em Assembly

Apresentações semelhantes


Apresentação em tema: "Programação em Assembly"— Transcrição da apresentação:

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

2 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

3 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

4 Pilha SP aponta para o topo da pilha Valor 1 SP

5 Pilha PUSH $0x 0200 SP 0000 Valor 1

6 Pilha pop eax eax <- 0x Valor 1 SP

7 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)

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

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

10 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

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

12 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

13 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


Carregar ppt "Programação em Assembly"

Apresentações semelhantes


Anúncios Google