Int 80h

Int 80h

La instrucción int 80h es utilizada en lenguaje ensamblador x86 para provocar una interrupción de software e invocar los servicios de GNU/Linux. En Linux existen llamadas (system calls) que proveen funciones básicas para acceder al hardware: los discos, el teclado, el video, los puertos, etc. Estas funciones básicas se llaman servicios a programas o APIs (Application Programming Interface).

Introducció

Existen aproximadamente 250 servicios que brinda esta interrupción. El número del servicio se pone en EAX y luego se ponen los demás parámetros en los restantes registros del microprocesador: EBX, ECX, EDX, ESI, EDI y EBP.

Ejemplos

Servicio 1: salida del proceso actual y retorno al sistema que lo invocó. En EBX se coloca el modo de salida, generalmente ponemos 0 para indicar que la salida se produjo normalmente (es decir, no fue causada por un error).

mov eax,1
mov ebx,0
int 80h

Servicio 3: lectura (read). Los parámetros necesarios son:

EBX: unidad de entrada (0: entrada estándar).
ECX: Puntero a un área de memoria donde se dejarán los caracteres obtenidos.
EDX: Número máximo de caracteres a leer.
mov eax,3
mov bx,0
mov ecx,oración
mov edx,100 
int 80h

Servicio 4: escritura (write). Los parámetros necesarios son:

EBX: unidad de salida (1: salida estándar).
ECX: Puntero a un área de memoria donde se encuentran los caracteres a mostrar.
EDX: Número máximo de caracteres a mostrar.
mov eax,4
mov bx,1
mov ecx,oración
mov edx,100 
int 80h

Servicios para el trabajo con archivos

Servicio 5: apertura (open). Los parámetros necesarios son:

EBX: la dirección de una cadena de caracteres terminada en nulo.
ECX: Modo de acceso.
EDX: permisos al archivo, si se abre creándolo.

Modos de acceso:

O-RDONLY 0: El archivo se abre sólo para leer de él.
O-WRONLY 1: El archivo se abre sólo para escribir en él.
O-RDWR 2: El archivo se abre para lectura y escritura.
O-CREAT 256: Crear el archivo en caso de que no exista.
O-APPEND 2000h: El archivo se abre sólo para escritura al final, añadiendo información.

Permisos:

S-IRUSR 400H: El archivo puede ser leído por el dueño.
S-IWUSR 200h: El archivo puede ser escrito por el dueño.
S-IROTH: El archivo puede ser leído por otros usuarios.
S-IWOTH: El archivo puede ser escrito por otros usuarios .
mov eax,5
mov ebx,”pepito.txt”,0
mov ecx,1
mov edx,0
int 80h

Como alternativa para crear archivos se puede usar el servicio 8 (create).

Para lectura y escritura del archivo se utilizan los servicios 3 y 4 mencionados anteriormente, pero se les cambia el valor de EBX por la dirección del archivo a leer/escribir o el descriptor del mismo.

Para manipular el puntero en el archivo se utiliza el servicio 13h (lseek). Los parámetros necesarios son:

EBX: Descriptor del archivo cuyo puntero va a manipularse
ECX: Número de bytes a desplazarse desde el punto que es indicado como referencia.
EDX: Punto de referencia para el desplazamiento. 0 inicio, 1 posición actual, 2 final

Ej: posicionarse al inicio del archivo

mov eax,13h 
mov bx, descriptor
mov ecx,0
mov edx,0 
int 80h

Después de trabajar con el archivo, éste se debe cerrar. Para eso existe el servicio 6 (close), para el cual basta poner en EBX el descriptor del archivo a cerrar.

Existen muchos más servicios, por ejemplo para el trabajo con el reloj del PC, para el trabajo con directorios, para eliminar procesos, etc.


Wikimedia foundation. 2010.

Игры ⚽ Поможем сделать НИР

Mira otros diccionarios:

  • Int 13h — es la forma abreviada de la interrupción 0x13. Esta interrupción se encarga de las operaciones típicas de acceso a los discos duros y a los disquetes. Contenido 1 Características 2 Lista de servicios de la INT 13h 3 Tabla de unidades …   Wikipedia Español

  • Int 15h — es la forma abreviada de la interrupción 0x15. Esta interrupción controla los servicios extendidos del PC. Contenido 1 Características 2 Lista de servicios de la INT 15h 3 Tabla de funciones de Joystick …   Wikipedia Español

  • Assembleur — Cet article concerne le langage d assemblage. Pour le programme produisant un exécutable à partir d un source écrit dans ce langage, voir Programme assembleur. Un langage d assemblage ou langage assembleur ou simplement assembleur par abus de… …   Wikipédia en Français

  • Softwareinterrupt — Ein Software Interrupt ist ein expliziter Aufruf einer Unterfunktion (meist einer Betriebssystem Funktion). Er hat nichts mit einem Interrupt (asynchrone Unterbrechung) zu tun, obwohl häufig der gleiche Sprungverteiler (Interrupt Tabelle) benutzt …   Deutsch Wikipedia

  • Hello World — Pour les articles homonymes, voir Hello (homonymie). hello world (traduit littéralement en français par « bonjour le monde ») sont les mots traditionnellement écrits par un programme informatique simple dont le but est de faire la… …   Wikipédia en Français

  • Exit (operating system) — A computer process terminates its execution by making an exit system call. More generally, an exit in a multithreading environment means that a thread of execution has stopped running. The operating system reclaims resources (memory, files, etc.) …   Wikipedia

  • Главная загрузочная запись — (англ. master boot record, MBR)  код и данные, необходимые для последующей загрузки операционной системы и расположенные в первых физических секторах (чаще всего в самом первом) на жёстком диске или другом устройстве хранения информации …   Википедия

  • Program Segment Prefix — (рус. Префикс программного сегмента, PSP) структура данных, которая используется в операционных системах семейства DOS и CP/M для сохранения состояния компьютерных программ. PSP в DOS имеет следующую структуру: Offset (Смещение) Size (Размер)… …   Википедия

  • Llamada de interrupción del BIOS — Las llamadas de interrupción del BIOS son una facilidad que los programas DOS, y otro tipo de porgramas como cargadores de arranque, usan para invocar las funciones del BIOS. Algunos sistemas operativos también usan el BIOS para probar e… …   Wikipedia Español

  • MS-DOS — Bildschirmfoto …   Deutsch Wikipedia

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”