Skip to content

Latest commit

 

History

History
66 lines (54 loc) · 3.71 KB

2-syntax.md

File metadata and controls

66 lines (54 loc) · 3.71 KB

Aqui iremos aprender sobre alguns elementos dos scripts Assembly

Sobre as diferenças do assembly, temos sintaxes diferentes! Esta tabela resume as principais diferenças das sintaxes Assembly INTEL e AT&T:

Intel AT&T
Comentários ; //
Instruções add addq
Registros eax, ebx, Etc. %eax, %ebx, Etc.
Imediatos 0x100 $ 0x100
Indireto [eax] (%eax)
Indireta geral [base + reg + reg * scale + displacement] displacement(reg, reg, scale)


Nesse curso trataremos da sintaxe Intel e Assembly x86 usando o sistema Linux, alguns codigo podem não funcionar no Windows, caso queira mostrar um codigo que não funciona no Windows, abra uma Issue!

No assembly usamos o ; para criar comentarios no codigo!
Além disso, dividimos nosso codigo em seções, vejamos:

.DATA


Na .data, como o nome sugere, é uma região do código que será usada para tratar as informações, os dados, as variáveis.<

Nesse trecho (geralmente o inicial), declaramos e inicializamos as variáveis.

OBS: Na .bss section, fazemos algo parecido, porém não inicializamos as informações de imediato.

.TEXT


Por fim, a .text section é o local onde irá ficar armazenado suas instruções, que irão trabalhar com os dados previamente declarados. Essa é a única seção obrigatória, pois conterá a label (rótulo) _start, que é o local onde os executáveis são inicializados, _start é como o main() do C.

Comando global: Usado para declarar labels globais, ou seja, passíveis de uso externo.

Geralmente usamos para declarar o label principal, o _start.

Portanto, o nosso esqueleto de código será:

Lembrando que a identação não é nescessária no compilador NASM.

proximo - Hello World