Hello World em ASM

Iniciado por Anonymous, 07 de Outubro , 2006, 12:08:05 PM

tópico anterior - próximo tópico

0 Membros e 1 Visitante estão vendo este tópico.

Anonymous

Para os que desconheçem essa linguagem e querem saber como se fazer um simples Hello World em assembly.
O código para se fazer isso em linha de comando:org 0x100 ;onde a memória nos coloca
mov ah,9 ;ah agora tem o valor de 9
mov dx,msg ;DX (dados) tem o valor de msg
int 0x21 ;chama interrupção 21,ah (21,9 - Print String)
mov ax,0x4C00 ;AX agora tem o valor de 4C00
int 0x21 ;chama interrupção 21,ax (21,4C - terminate)
msg db 'Hello World' ;declara mensagem
Esse foi o código usando linha de comando, agora usando Message Box:format PE GUI 4.0 ;formato do programa (EXE)
include 'include\win32ax.inc' ;lib
start: ;label de inicio do código
invoke MessageBox,0,'Hello World','Assembly',MB_OK ;mensagem
ret ;REToarnar (retorna ao sistema)

data import
library user32,'USER32.DLL' ;importa USER32.DLL

import user32,\ ;importa de user32...
MessageBox,'MessageBoxA' ;message box

end data
E esse ai foi como se faz usando a API MessageBox do Windows.

Comentem!

caesar2k

avisa que é nasm o primeiro, quase ninguém conhece =D

vuln

Bom código para os leigos em ASM (como eu) hehehe. Já tentei uma vez programar na mesma mas não obtive êxito.

Até mais, bom tópico  ;D, hehehe.
"O amor por princípio, a Ordem por base, o progresso por objetivo."

Anonymous

Aproveitando o tópico, o Dark_Side postou como fazer um hello world com o NASM:[ORG 0x100] ; endereço de memória 256
mov ah,9 ; ah = 9 (escrever string na tela
mov dx,msg ; move para DX o ponteiro para a string
int 21h ; chama interrupção 21,9

mov ax,0X4C00 ; AH = 4C; AL = 0
int 21h; interrupção 21,4C -> sair do programa

msg db "Hello World!$" ; Buffer a ser escrito na tela