Int 80h

De Wikipedia, la enciclopedia libre

El INT 80H es utilizado por el ensamblador para GNU/Linux para acceder a los servicios. En Linux existen las Linux Call Kernel que le provee de 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).

[editar] Introducción

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

[editar] Ejemplos

Servicio 1, salida del proceso actual y devolución al sistema que lo invocó. En ebx se coloca el modo de salida, en este caso ponemos 0.

mov eax,1
mov ebx,0
int 80h

servicio 03 h, a la función read. Los parámetros necesarios son:

eax: El código del servicio, 03h. ebx:. En este caso sería 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 04 h, la función write. Los parámetros necesarios son:

eax: El código del servicio, 04h . ebx:. En este caso sería 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

Funciones para el trabajo con archivos, servicio 05h, la función open.

eax código de apertura o creación ,05h ebx la dirección de una cadena de caracteres terminada con 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 bx,”pepito.txt”,0
Mov ecx,1
Mov edx,0
INT 80H

Como alternativa para crear archivos se puede crear archivos se puede usar el servicio 8. Para lectura y escritura del archivo. Para esta operación se utiliza los servicios anteriormente descritos el 3 y 4 pero se les cambia el valor de ebx que es la dirección del archivo o el descriptor del mismo a leer/escribir.

Ahora para hacer esta operación se necesita saber donde esta el puntero en el archivo para esto se utiliza la función 13h correspondiente a la función lseek. Eax servicio 13h 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 se debe cerrar para eso existe el servicio 6 que es la función close , solo poniendo en EBX el descriptor del archivo a cerrar. Existen más funciones por ejemplo para el trabajo del reloj del PC, para el trabajo con directorios, para eliminar procesos, etc.

Herramientas personales
Crear un libro