Montagem de programas em assembly com o NASM
Luciano José Senger
1
Montagem de programas em
Assembly através do NASM
section .data
msg db 'Hello, World!',0Dh,0Ah,'$'
O NASM é um montador de distribuição gratuita, que
permite a montagem de programas em Assembly para
diversas arquiteturas e sistemas operacionais. Nessa aula,
será utilizado o montador para o sistema operacional
Windows.
Para realizar a montagem de um programa em Assembly
com o NASM, considerando que o arquivo de origem é
chamado de prog.asm:
section .text
_start:
rotulo1:
nasmw -o prog.com prog.asm
org
mov
mov
mov
int
dec
cmp
jne
mov
int
100h
cx, 10
dx,msg
ah,9
21h
cx
cx,0
rotulo1
ah,4Ch
21h
Lembre-se que se o NASM não estiver na pasta corrente,
é necesário especicar o caminho completo para o executável.
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 Rótulos permitem especicar o alvo para instruções de
a montar o código binário. Abaixo, segue um exemplo salto e para instruções de laços de repetição, como a
de programa em Assemby, escrito em Assembly para o instrução LOOP:
NASM, que utiliza tais palavras reservadas (consulte os
textos das aulas prévias para uma descrição da função 9 INSTRUÇÃO LOOP
Propósito: Gerar um laço no programa.
da interrupção 21h):
section .data
msg db 'Hello, World!',0Dh,0Ah,'$'
Sintaxe:
LOOP símbolo
A instrução LOOP decrementa CX de 1
e transfere a execução do programa para
o símbolo que é dado como operador,
caso CX ainda não seja 1.
section .text
_start:
org
mov
mov
int
mov
int
100h
dx,msg
ah,9
21h
ah,4Ch
21h
3
1. Implemente os programas citados neste texto e execute a montagem com o NASM;
2. Implemente um programa que imprima uma mensagem 10 vezes em tela utilizando a instrução LOOP
Verique 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 msg, que contém a mensagem "Hello, World!".
2
Exercícios
3. Crie um programa em Assembly que imprima a tabela
ASCII, utilizando a instrução LOOP
4. Utilize o desmontador de programas em Assembly do
NASM para vericar o código em Assembly gerado a
partir da desmontagem dos programas binários.
Rótulos
A utilização de um montador permite a utilização de
rótulos para endereços do programa, que facilitam a
programação. No programa abaixo, é utilizado o rotulo
rotulo1 para especicar o endereço da instrução mov
ah,9.
1
Download

Montagem de programas em assembly com o NASM