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

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

Assembly x86.

Apresentações semelhantes


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

1 Assembly x86

2 Oque é assembly? Assembly ou linguagem de montagem é uma notação legível por humanos para o código de máquina que uma arquitetura de computador específica usa. A linguagem de máquina, que é um mero padrão de bits, torna-se legível pela substituição dos valores em bruto por símbolos chamados mnemónicos. Ex.: MOV AL, 61h

3 Assembly x86 Conjunto de instruções de baixo nível tanto para arquiteturas de processadores Intel (Intel 8088 e 8086), como para não Intel (5x86 da AMD).

4 Sintaxe 2 tipos principais, algumas diferenças -Ordem dos parâmetros
.Intel: mov ax, 03d00h .AT&T: mov 03d00h, ax

5 Usados para guardar os dados binários.
Registradores Usados para guardar os dados binários.

6 Registradores

7 Registradores Especiais
Alguns de uso especial: EAX – acumulador (automaticamente usado para divisao e multiplicação) ECX – contador de loop (instrução LOOP) ESP – stack pointer (não deve ser usado para OP aritmeticas e transferir dados) ESI, EDI – index registers (para instruções de transferencia de memoria rapidas) EBP – extended frame pointer (pilha) EIP – Ponteiro para instruções Registradores Especiais

8 Registradores Flag Carry (CF) -Out of range (sem sinal) Overflow(OF)
EFLAGS Cada flag tem só 1 bit (set/clear) Carry (CF) -Out of range (sem sinal) Overflow(OF) -Out of range (com sinal) Sign (SF) -Resultado negativo Zero (ZF) -Resultado é zero Auxiliary Carry (AF) - Parity (PF) -Verifica paridade

9 Pilha Todas as arquiteturas x86 usam uma pilha como uma área de armazenamento temporário em memória RAM, que permite ao processador armazenar e recuperar rapidamente os dados na memória. O topo da pilha atual é apontada pelo registrador ESP. A pilha "cresce" para baixo. Instruções PUSH e POP

10 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

11 Tipos de Dados 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

12 Tipos de Dados BYTE, SBYTE
8-bit unsigned integer; 8-bit signed integer WORD, SWORD 16-bit unsigned & signed integer DWORD, SDWORD 32-bit unsigned & signed integer QWORD 64-bit integer TBYTE 80-bit integer

13 10-byte IEEE extended real
Tipos de Dados REAL8 8-byte IEEE long real REAL10 10-byte IEEE extended real REAL4 4-byte IEEE short real ? Indefinido

14 Definindo Dados Inteiros Ex: 30d, 6Ah, 42, 42o, 1101b
Hexadecimal começando com letra: 0A5h Char e Strings str1 BYTE "Enter your name",0 str2 BYTE 'Error: halting program',0 str3 BYTE 'A','E','I','O','U'

15 Operador DUP Usa-se DUP para alocar uma matriz ou string.
Contador e argumentos devem ser constantes ou expressões constantes. var1 BYTE 20 DUP(0) ; 20 bytes, all zero var2 BYTE 20 DUP(?) ; 20 bytes, ; uninitialized var3 BYTE 4 DUP("STACK") ; 20 bytes: ;"STACKSTACKSTACKSTACK" var4 BYTE 10,3 DUP(0),20 Operador DUP

16 Instruções Transformado em codigo de maquina pelo assembler (TASM)
Membro do instruction set IA-32. 4 partes: Label: - Mnemônicos - Operandos - ;Comentários

17 Instruções MNEMÔNICOS Exemplos: MOV, ADD, SUB, MUL, INC, DEC OPERANDOS
Constante (immediate value), 96 Registradores, eax Memória (rótulo de dados), count NUMERO DE DADOS stc ; set Carry flag inc ax ; add 1 to ax mov count, bx ; move BX to count

18 Instruções DIRETIVAS Comandos reconhecidos pelo Assembler
Parte da sintaxe do assembler Usado para declarar codigo, area de dados, modo de seleção de memoria, Procedures. etc. Case insensitive Diferentes assemblers, diferentes diretivas NASM != TASM, por exemplo Ex: .data .code PROC struc

19 Interrupções Por hardware, exception (ñ-controlada)..
Interrupções pelo software são usadas para system calls (sub-rotinas). Muito úteis INT 21h ; muito usada Se AH = 3E , fecha o arquivo Parametros geralmente são requeridos CX,BX,AL.

20 Instruções Várias outras intruções:
JMP / LOOP ...: Usados para desvios. AND / NOR / OR ...: Operações booleanas nivel bit SZF / STC / STD ... : Setar flags CMP, CALL, PUSH, POP, etc..

21 Endereçamento Três tipos básicos de operandos:
Immediate – um inteiro constante (8, 16, or 32 bits) Valor codificado ja na instrução Registradores – nome do registrador Memoria – Referencia a um local na memoria (label)

22 Comentarios ; Não vou nem comentar

23 Código Assembly TITLE Add and Subtract (AddSub.asm)
; Este programa soma e subtrai inteiros de 32- bits. INCLUDE Irvine32.inc .code main PROC mov eax,10000h ; EAX = 10000h add eax,40000h ; EAX = 50000h sub eax,20000h ; EAX = 30000h call DumpRegs ; display exit main ENDP END main

24 Exemplo - Linux SECTION .DATA hello: db 'Hello world!',10
helloLen: equ $-hello SECTION .TEXT GLOBAL _START _START: ; Write 'Hello world!' to the screen mov eax, ; 'write' system call mov ebx, ; file descriptor 1 = screen mov ecx,hello ; string to write mov edx,helloLen ; length of string to write int 80h ; call the kernel ; Terminate program mov eax, ; 'exit' system call mov ebx, ; exit with error code 0

25 Exemplo - DOS DOSSEG .MODEL LARGE .STACK 200h .DATA
hello db 'Hello world!',10,13,'$' helloLen db 14 .CODE ASSUME START: mov mov ds,ax ; Write 'Hello world!' to the screen mov ah,09h ; 'print' DOS service mov dx,offset hello ; string to write int 21h ; call DOS service ; Terminate program mov ah,4Ch ; 'exit' DOS service mov ax, ; exit with error code 0 END START

26 Paramos por aqui (...)


Carregar ppt "Assembly x86."

Apresentações semelhantes


Anúncios Google