comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Hola Mundo - en ASM

  • 1 Respuestas
  • 2650 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
« 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
« Respuesta #1 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 »

 

¿Te gustó el post? COMPARTILO!