Skip to content

Instantly share code, notes, and snippets.

@everblut
Created February 21, 2012 07:53
Show Gist options
  • Save everblut/1874981 to your computer and use it in GitHub Desktop.
Save everblut/1874981 to your computer and use it in GitHub Desktop.
Sys Write en Assembly
;; Asi se hacen los comentarios.
SECTION .data ;Definimos la seccion de datos estaticos, equivalentes de constantes.
msg: db "Hola clase :)",10,13 ;etiqueta: db (DefineByte) "cadena",bytes sin formato, 10 = fin de linea, 13 = salto de linea
lon: equ $-$$ ;etiqueta: equ (EQUAL) cantidad. Es el equivalente de #define en lenguaje C
;$ es para la posicion actual del puntero en la ejecuccion desde que se inicio la seccion.
;$$ es para ver la posicion inicial desde la seccion. (donde estoy - donde estaba)
SECTION .text
;seccion text, aqui es donde va el codigo
global _start ;etiqueta para el enlazador
_start: ;punto de entrada para el enlazador ( funcion main )
mov edx,lon ;Registro D, aqui guardaremos la longuitud de la cadena a imprimir
mov ecx,msg ;Registro C, aqui pondremos el puntero a los caracteres.
mov ebx,1 ;Registro B, aqui le ponemos el descriptor del archivo ( recordando que en unix todo es un archivo ) 1 =STDOUT
mov eax,4 ;Registro A, numero de comando 4=sys_write
int 0x80 ;interrupcion 80, llama al kernel y ejecuta la llamada que este en el acumulador
mov ebx,0 ;salida del codigo al sistema operativo
mov eax,1 ;numero de comando 1 = sys_exit
int 0x80 ;interrumpcion 80 hex, llama al kernel
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment