Nasm
• Permite montar programas assembler
NASM – Netwide Assembler
NASM version 0.98.39 compiled on Jan 16 2005
– No DOS – No Windows (Win16 e Win32) – No Linux
• Formato das instruções diferente do MASM e do TASM
Prof. Sérgio L. Cechin
– MASM (Microsoft Assembler - Microsoft) – TASM (Turbo Assembler - Borland)
• Gratuito • Requer apenas um programa executável (o montador)
– Pode usar bibliotecas externas, caso seja requisitado – Pode gerar código a ser ligado com módulos compilados com compiladores de linguagem de alto nível (“C”, Pascal, etc)
2
Montagem
• Linha de comando
– nasm -f [-o ] – Exemplos
• nasm -f obj teste.asm • nasm -f bin teste.asm -o teste.com
– Monta o arquivo “teste.asm”
Nasm – Formatos de saída
• • • • • • • • • • “bin” “aout” “aoutb” “coff” “elf” “as86” “obj” “win32” “rdf” “ieee” flat-form binary files (e.g. DOS .COM, .SYS) Linux a.out object files NetBSD/FreeBSD a.out object files COFF (i386) object files (ex: DJGPP for DOS) ELF32 (i386) object files (e.g. Linux) Linux as86 (bin86 version 0.3) object files MS-DOS 16-bit/32-bit OMF object files Microsoft Win32 (i386) object files Relocatable Dynamic Object File Format v2.0 IEEE-695 (LADsoft variant) object file format
4
• Gerando a listagem do programa
– nasm -f coff teste.asm -l teste.lst teste.lst
– Monta o arquivo “teste.asm” e gera um executável do tipo “.com”
• Help
• Monta o arquivo “teste.asm” e também gera um arquivo “lst” (listagem)
– nasm –h (help geral) – nasm –hf (lista formatos de saída)
3
Nasm – Referência à memória
• A referência à memória requer colchetes explícitos
– Não usa o mecanismo do MASM de alterar a codificação, dependendo da forma como as variáveis foram declaradas
OFFSET ?
• NASM não necessita do comando OFFSET, usado no MASM
– Se “var” é uma variável... – No MASM, usa-se “mov ax,OFFSET var” – No NASM, usa-se “mov ax,var”
• Exemplo
– mov ax,var
• Sempre gera modo imediato • “var” declarado