SHARE
TWEET

Untitled

a guest Nov 19th, 2019 97 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .386 ; Se utiliza el set de instrucciones para procesadores de la familia 386
  2.  
  3. .model flat,stdcall ; Utilizamos modelo de memoria plana y metodo de llamada de funciones STD
  4.  
  5. ; Usando la convencion de llamados std la funcion llamada es responsable por limpiar la pila y los parametros se empujan de izquierda a derecha
  6.  
  7. include \masm32\include\windows.inc ; Se incluye Windows.inc el cual
  8. ; define a NULL y STD_OUTPUT_HANDLE
  9.  
  10. include \masm32\include\kernel32.inc ; Se incluye este archivo para poder utilizar las funciones
  11. ; GetStdHandle, WriteConsole y ExitProcess
  12.  
  13. includelib \masm32\lib\kernel32.lib  
  14. ;*******************************************************************************************************
  15.  
  16. .data ; Comienzo del segmento de datos
  17.  
  18. texto db "Hola Mundo!!", 0ah, 0h
  19. ; Se le otorga el nombre "texto" a una seccion de memoria que consecutivamente, byte a byte
  20. ; tiene almacenado un caracter ascii para formar la frase "Hola Mundo!"
  21.  
  22. ; Luego del ultimo caracter de la frase, se introduce "0ah" que equivale a introducir una nueva linea y luego el caracter nulo ( 0h )
  23. ;*******************************************************************************************************
  24.  
  25. .code ; Comienzo del segmento de codigo
  26.  
  27. main: ; Comienzo del main
  28. ;*******************************************************************************************************
  29.  
  30. ; Previo a utilizar Invoke, es necesario entender como funciona. Invoke sirve para hacer llamados a subrutinas de manera bastante legible
  31. ; el primer argumento de Invoke es la subrutina como tal y posteriormente estan sus argumentos o parametros, dependiendo de la
  32. ; convencion para llamados usada (en este caso stdcall)
  33.  
  34. ; Invoke automaticamente hace PUSH y POP de los parametros hacia la pila, ajustandola de ser necesario
  35. ;*******************************************************************************************************
  36. invoke GetStdHandle, STD_OUTPUT_HANDLE
  37.  
  38. ; Devuelve el handle (o manejador) a la consola de salida
  39.  
  40. ; Utiliza STD_OUTPUT_HANDLE como parametro para indicar que queremos usar el handle para escribir a la salida de la consola
  41. ;
  42. ; STD_OUTPUT_HANDLE equivale a "-11"
  43.  
  44. ;*******************************************************************************************************
  45.  
  46. invoke WriteConsole, eax, addr texto, sizeof texto, ebx, NULL
  47.  
  48. ; WriteConsole es la funcion que permite imprimir a la consola un string comenzando en la posicion actual del cursor
  49.  
  50. ; Necesita de ciertos parametros, comenzando por "hConsoleOutput", en este caso eax, contiene la cadena a escribir
  51.  
  52. ; Luego esta lpBuffer, un puntero a un buffer que contiene los caracteres a ser escritos
  53.  
  54. ; Seguidamente esta nNumberOfCharsToWrite[in], que debe contener el numero de caracteres a ser escritos, en este caso utilizamos sizeof texto para
  55. ; que WriteConsole sepa cuando debe detenerse
  56.  
  57. ; lpNumberOfCharsWritten[out], en este caso utilizamos ebx como puntero que recibe el numero de caracteres ya escritos
  58.  
  59. ; lpReserved es un parametro reservado al valor nulo
  60.  
  61. ;*******************************************************************************************************
  62.  
  63. invoke ExitProcess, 0
  64.  
  65. ; Equivalente a return (0), sale del programa con un codigo de retorno 0, para indicar que no hubo error
  66. ;********************************************************************************************************
  67.  
  68. end main ; fin del main
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top