Warning: Illegal string offset 'userid' in [path]/includes/functions.php on line 509

Warning: Illegal string offset 'userid' in [path]/includes/functions.php on line 512

Warning: Illegal string offset 'membergroupids' in [path]/includes/functions.php on line 441

Warning: Illegal string offset 'membergroupids' in [path]/includes/functions.php on line 443

Warning: Illegal string offset 'usergroupid' in [path]/includes/functions.php on line 452

Warning: Illegal string offset 'usergroupid' in [path]/includes/functions.php on line 518

Warning: Illegal string offset 'userid' in [path]/includes/functions.php on line 518

Warning: Illegal string offset 'usergroupid' in [path]/includes/functions.php on line 518

Warning: Illegal string offset 'userid' in [path]/includes/functions.php on line 518
La funcion int86!!! (Llamadas a las interrupciones de la ROM-BIOS)
Comunidad Underground Hispana  

Retroceder   Comunidad Underground Hispana > Programacion > Carbide C/C#/C++


Respuesta Crear Nuevo Tema
 
Compartir en twitter LinkBack Herramientas Desplegado
Antiguo 30-may-2005, 03:35   #1
LuisC
Guest
 
Amigos
Mensajes: n/a
Predeterminado La funcion int86!!! (Llamadas a las interrupciones de la ROM-BIOS)

Esta funcion se utiliza para acceder a las interrupciones de la ROM-BIOS (algunos pueden llamar a esta funcion de forma diferente, pero tanto el compilador de C de Microsoft como el Turbo C la llaman de esta forma). Sin la necesidad de recurrir a lenguaje ensamblador. Aunque recomiendo tener conocimientos minimos, por lo menos de los registros, eso es todo.

Esta funcion presenta la siguiente forma general:
int int86(num, inregs, outregs);
int num; /*numero de la interrupcion a solicitar */
union REGS *inregs; /*registro de entrada*/
union REGS *outregs; /*registro de salida*/

Esta funcion devuelve el valor del registro AX. La union REGS se encuentra en la libreria <dos.h>
La union mostrada a continuacion es similar al que utilizan algunos compiladores (entre ellos microsoft y borland)

struct REGSPALABRA {
unsigned int ax, bx, cx, dx, si, di, cflag;
};
struct REGSBYTE {
unsigned char al, ah, bl, bh, cl, ch, dl, dh;
};
union REGS {
struct REGSPALABRA x;
struct REGSBYTE h;
};

REGS es una union de 2 estructuras, en este caso REGSPALABRA, la cual permite acceder a los registros de la CPU como registros de 16 bits; y REGSBYTE, la cual da acceso a los registros individuales de 8 bits. Por ejemplo para acceder a la funcion #5 de la interrupcion #16, se debe usar el siguiente codigo:

union REGS r; /*declara a r como una union de tipo REGS*/
r.h.ah = 5; /*se pone en ah el numero de la funcion a utilizar*/
int86(16,&r,&r); /*se llama a la interrupcion 16 del BIOS*/

Eso es todo por el momento, mas adelante publicare las diferentes interrupciones que proporciona la BIOS y sus diferentes funciones.
  Responder Citando
Antiguo 09-jun-2005, 01:17   #2
codelogman
Guest
 
Amigos
Mensajes: n/a
Predeterminado Re: La funcion int86!!! (Llamadas a las interrupciones de la ROM-BIOS)

Muy interesante, pienso que a muchos les va servir este post, es basico saber de interrupciones.
  Responder Citando
Antiguo 27-jun-2005, 06:43   #3
clayy
Guest
 
Amigos
Mensajes: n/a
Predeterminado Re: La funcion int86!!! (Llamadas a las interrupciones de la ROM-BIOS)

podeis explicar un poco que es una interrupcion y para que sirve?.y si ademas sabeis un tutorial en internet me lo podeis recomendar?
  Responder Citando
Antiguo 29-jun-2005, 02:37   #4
codelogman
Guest
 
Amigos
Mensajes: n/a
Predeterminado Re: La funcion int86!!! (Llamadas a las interrupciones de la ROM-BIOS)

Cita:
Iniciado por clayy
podeis explicar un poco que es una interrupcion y para que sirve?.y si ademas sabeis un tutorial en internet me lo podeis recomendar?
aqui mismo puse una guia para punteros, ahi viene un poco de esto
  Responder Citando
Antiguo 08-jul-2005, 00:09   #5
Habitual
 
Fecha de Ingreso: mayo-2005
Amigos 0
Mensajes: 183
Gracias: 0
Agradecido 0 veces en 0 mensajes.
Predeterminado Re: La funcion int86!!! (Llamadas a las interrupciones de la ROM-BIOS)

me gustaria saber q es lo q hace exactamente union con REGS....

Por q yo mayormente no utilizo esta clase de interrupcion, lo ago de esta manera:

asm mov ah,5
asm int 16

y cunple la misma funcion q:

union REGS r;
r.h.ah = 5;
int86(16,&r,&r);

me gustaria q me dijeran cual es mejor y por q...

Gracias
__________________
<br />
El code es un arte, diseemos arte
sowher está desconectado   Responder Citando
Antiguo 08-jul-2005, 22:27   #6
digital love
Guest
 
Amigos
Mensajes: n/a
Predeterminado Re: La funcion int86!!! (Llamadas a las interrupciones de la ROM-BIOS)

La int86(), no es nada mas ni nada menos que una interface. Y es usada para no recurrir al ensamblador.

Que que es mejor? Todo depende, si uno ya sabe programar en ensamblador, no necesita utilizar la int86(). Ya que el codigo en ensamblador se ejecuta mas rapido (relativamente). Pero la int86(), es buena para aquellos programadores para los cuales el ensamblador se les dificulta, como es en mi caso.

Aun asi la int86() funciona bien, bueno a mi me ha funcionado. Ya que estoy creando una libreria especifica para el manejo de graficos en el modo 13h y todo a ido bien hasta el momento.
  Responder Citando
Respuesta

Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los Códigos BB están Activado
Las Caritas están Activado
[IMG] está Activado
El Código HTML está Desactivado
Trackbacks están Activado
Pingbacks están Activado
Refbacks están Activado





Portal Hacker
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.0