Int 80h
De Wikipedia, la enciclopedia libre
| Este artículo o sección necesita fuentes o referencias que aparezcan en una publicación acreditada, como libros de texto u otras publicaciones especializadas en el tema. Puedes dar aviso al autor principal del artículo pegando el siguiente código en su página de discusión: {{subst:Aviso referencias|Int 80h}} ~~~~ |
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.

