Trabalho em C
Criação de programas em Assembly
O que é o NASM?
O Netwide Assembler, NASM, é um 80x86 e x86-64 assembler projetado para portabilidade e modularidade. Ele suporta uma variedade de formatos de arquivo de objeto, incluindo Linux e * BSD a.out , ELF, COFF , Mach-O , Microsoft 16-bit OBJ , Win32 e Win64 . Ele também tem arquivos binários simples de saída. Sua sintaxe é projetado para ser simples e fácil de entender, semelhante ao da Intel, mas menos complexo. Ele suporta todas as extensões de arquitectura x86 atualmente conhecida, e tem um forte apoio para macros.
O NASM é um montador de distribuição gratuita, que permite a montagem de programas em Assembly para diversas arquiteturas e sistemas operacionais.
Para realizar a montagem de um programa em Assembly com o NASM, considerando que o arquivo de origem é chamado de prog.asm:
Montagem: nasm -f elf prog.asm
Após a montagem, é necessário utilizar a linkedição:
Linkedição:
ld -s -o prog.bin prog.o
O programa final (binário) pode ser executado através do arquivo prog.bin.
Para a criação de programas em Assembly com o NASM, é interessante que sejam utilizados algumas palavras reservadas do compilador, que servem para ajudar o NASM a montar o código binário. Abaixo, segue um exemplo de programa em
Assemby, escrito em Assembly para o NASM, que utiliza tais palavras reservadas:
Programa Hello World section .data hello: db 'Hello world!',10 len: equ $-hello
section .text global _start
_start: mov eax,4 ; sys_write mov ebx,1 ; enviar ao video mov ecx,hello ; string mov edx,len ;tamanho da string int 80h ; interrupção
mov eax,1 ; chamada exit mov ebx,0 ; codigo para exit int 80h ; interrupção
Verifique que os números em hexadecimal deve ser escritos utilizando a letra h juntamente ao número, para informar ao NASM em qual base o número encontra-se. A section .data serve para a declaração de variáveis, como é o caso da variável