Hola Mundo - en ASM

  • 1 Respuestas
  • 3797 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado ProcessKill

  • *
  • Underc0der
  • Mensajes: 154
  • Actividad:
    0%
  • Reputación 0
  • Arriba los hackers de Argentina!
    • Ver Perfil
    • Email

Hola Mundo - en ASM

  • en: Febrero 24, 2010, 03:56:25 pm
Gnu/linux:

Código: ASM
  1. format ELF executable
  2.  
  3. entry start
  4.  
  5. ;Comentarios con ;
  6. segment readable executable
  7. start:
  8.  
  9. mov eax, 4 ;Servicio 4, escribir
  10. mov ebx, 1 ;manejador de STDOUT
  11. mov ecx, msg ;el mensaje
  12. mov edx, msg_len ;tamanio del mensaje
  13. int 80h ;ejecuta la llamada al sistema
  14.  
  15. mov eax, 1 ;Servicio 1 termina el proceso
  16. mov ebx, 0 ;envia 0 como código de salida
  17. int 80h ;ejecuta la llamada al sistema
  18.  
  19. segment readable writable
  20.  
  21. msg db ’Hola Mundo’,0 ;cadena
  22. msg_len = $-msg ;tamaño de la cadena


Windows

Código: ASM
  1. include '..\fasm\include\win32ax.inc'
  2.  
  3. .data ;variables aqui
  4.    cuerpo db 'Hola mundo', 0
  5.    titulo db 'Saludo', 0
  6.  
  7. .code ;codigo
  8. start:
  9.    push 0           ;parametros de MessageBoxA
  10.    push titulo
  11.    push cuerpo
  12.    push 0
  13.    call [MessageBoxA] ;llamamos al api
  14.  
  15.    push 0
  16.    call [ExitProcess] ;llamando a ExitProcess con parametro 0
  17.  
  18. .end start


Ahora en 16 bits :D


Código: ASM
  1. ;para crear un exe
  2. format MZ
  3.  
  4.       ;estabilizando la pila
  5.    push   cs
  6.  
  7.    pop   ds
  8.  
  9.    mov   ah, 9 ;el servicio que queremos usar, 9 para imprimir
  10.    mov   dx,hello ;parametros
  11.    int   21h ;llamada a la int
  12.  
  13.    mov   ax,4C00h ;servicio 4Ch para salir
  14.    int   21h ;llamada a la int
  15.  
  16. hello db 'Hello world!', 24h ;cadena mensaje


Ahora en .Com

Código: ASM
  1. ; Programa 16-bit COM
  2.  
  3.    org   100h   ; el codigo comienza en el offset 100h
  4.    use16      ; usando codigo 16-bit
  5.  
  6.    mov   ah, 9 ;llamando al servicio 9
  7.    mov   dx, hello ;mensaje a imprimir
  8.  
  9.    int   21h
  10.  ;llamando a la int 21h
  11.  
  12.  
  13.    mov   ax,4C00h ;servicio 4Ch para salir
  14.    int   21h ;llamada a la int
  15.  
  16.  
  17. hello db 'Hello world!', 24h ;cadena mensaje
  18.  


bytes ;)
by Ni0!
« Última modificación: Mayo 01, 2014, 08:42:31 am por Expermicid »

Desconectado Almamu

  • *
  • Underc0der
  • Mensajes: 1
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

Re:Hola Mundo - en ASM

  • en: Agosto 24, 2011, 09:44:22 pm
Dejo un hello world para Turbo Assembler con string terminada en \0 para poder mezclarlo con C en MSDos:
Código: ASM
  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;;      Hello World          ;;
  3. ;;        ByAlmamu          ;;
  4. ;;        ForMSDOS          ;;
  5. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  6.  
  7. TITLE HELLOWORLD
  8. JUMPS
  9. .model small
  10. .stack 100h
  11. .data
  12. hello   db   "Hello World!$",13,10
  13.  
  14. .code
  15. .8086
  16. start:
  17.    ; Reseteamos el stack
  18.    mov ax,@data
  19.    mov ds, ax
  20.    mov es, ax
  21.    and sp, not 3
  22.  
  23.    ; Movemos hello al registro dx, usado en el int 21h
  24.    ; para llevar la informacion del mensaje
  25.    mov dx, offset hello
  26.  
  27.    ; Elejimos la acción que vamos a realizar, en este caso escribir en pantalla
  28.    mov ah, 9h ; 9->escribir en pantalla
  29.  
  30.    ; Creamos interrupcion de software 21 para que se escriba en pantalla
  31.    int 21h
  32.  
  33.    ; Finalizamos el programa y lo cerramos para evitar bucle infinito
  34.    mov ax, 4c00h ; 4c->terminar, 00->errno
  35.    int 21h
  36. end start
  37.  
« Última modificación: Junio 03, 2013, 11:46:48 am por Expermicid »