Computação
Assembly x86
Assembly
Assemblers
Sections
Registradores
Hugo Bessa - hrba
Paulo Serra Filho – ptvsf
Registradores de Segmentos
Principais Operações do NASM
Funcões e Macros
Interrupções
Compilando um programa
Assembly
Linguagem de baixo nível
Assembly section .data hello: db 'Hello, world!',10
section .text
Baseada em mnemônicos
_start:
Assembly x86 diferente do MIPS
;declaração de string constante
len: equ $-hello
Traduzida por assemblers
;declaração de constante inteira
global _start
MOV EAX, 4
;
write
MOV EBX, 1
;
file descriptor
MOV ECX, hello ;
string
MOV EDX, len
tamanho
;
INT 80H
;
MOV EAX, 1
;
MOV EBX, 0
;
INT 80H
interrupção
exit retorna 0
;
interrupção
1
Assembly
Assemblers
Linguagem de baixo nível
TurboASM - TASM
Traduzida por assemblers
MicrosoftASM – MASM
Baseada em mnemônicos
NetwideASM - NASM
Assembly x86 diferente do MIPS
●
Gratuito
●
Unix
Um assembler não compila o código de outro Sections
.data
●
.bss
Dados inicializados
●
Espaço reservado (variáveis)
–
db ;Declara bytes
–
resb ;Reserva uma quantidade de bytes
–
equ ;Resolve uma expressão e inicializa a variável com o resultado
–
resw ;Reserva uma quantidade de palavras(2bytes)
–
resq ;Reserva um array de numeros reais
–
●
Sections
dw ;Declara uma palavra que armazena um dado
●
Ex:
Ex: section .bss
section .data message: db 'Hello world!' msglen: equ 12 buffersize: dw 1024
name: resb 255 bigNum: resw 1 realarray: resq 10
2
Sections
.text
Registradores
32 bits
16 bits
●
Onde o código assembly fica
●
EAX
●
AX
●
Ex:
●
EBX
●
BX
●
ECX
●
CX
●
EDX
●
DX
●
ESP
●
SP
●
EBP
●
BP
●
ESI
●
SI
●
EDI
●
DI
section .text global _start
_start: