El concepto de interrupción no es propio de C++. Las interrupciones, en los microprocesadores de la familia Intel x86, se clasifican en:
1. Interrupciones hardware: provocadas por los dispositivos hardware para indicar que cierto evento ha sido provocado. Por ejemplo, que el mouse ha sido movido o que se ha pulsado determinada tecla.
2. Interrupciones software: generadas mediante código, a través de la instrucción int en lenguaje ensamblador. Por ejemplo, para establecer el modo de pantalla en modo 640x480 con 256 colores se solía utilizar el siguiente código, que utiliza el servicio de pantalla del BIOS:
mov ax, 0013h
int 10h
Y desde C++, utilizando bloques asm:
asm {
mov ax, 0x0013
int 0x10
}
El sistema operativo Windows XP no permite la llamada a ciertas interrupciones ni el envío y la recepción de datos a través de determinados puertos de entrada y salida. Por lo tanto, si ejecutás un programa en C++ con el código anterior desde Windows XP, te va a aparecer un error de violación de acceso, y el programa terminará.
En el estándar ANSI C++ no existe ninguna función para generar interrupciones software. La función int86 () que solía utilizarse, pertenece a una biblioteca de Borland, y estaba declarada en el archivo de encabezamento dos.h. Digo estaba, porque ya no figura más.
La biblioteca conio.h de Borland, que todavía se utiliza para dar salida formateada con colores en pantalla, no utiliza directamente llamadas a interrupciones del BIOS, sino que utiliza funciones del kernel de Windows XP.
Answers & Comments
Verified answer
El concepto de interrupción no es propio de C++. Las interrupciones, en los microprocesadores de la familia Intel x86, se clasifican en:
1. Interrupciones hardware: provocadas por los dispositivos hardware para indicar que cierto evento ha sido provocado. Por ejemplo, que el mouse ha sido movido o que se ha pulsado determinada tecla.
2. Interrupciones software: generadas mediante código, a través de la instrucción int en lenguaje ensamblador. Por ejemplo, para establecer el modo de pantalla en modo 640x480 con 256 colores se solía utilizar el siguiente código, que utiliza el servicio de pantalla del BIOS:
mov ax, 0013h
int 10h
Y desde C++, utilizando bloques asm:
asm {
mov ax, 0x0013
int 0x10
}
El sistema operativo Windows XP no permite la llamada a ciertas interrupciones ni el envío y la recepción de datos a través de determinados puertos de entrada y salida. Por lo tanto, si ejecutás un programa en C++ con el código anterior desde Windows XP, te va a aparecer un error de violación de acceso, y el programa terminará.
En el estándar ANSI C++ no existe ninguna función para generar interrupciones software. La función int86 () que solía utilizarse, pertenece a una biblioteca de Borland, y estaba declarada en el archivo de encabezamento dos.h. Digo estaba, porque ya no figura más.
La biblioteca conio.h de Borland, que todavía se utiliza para dar salida formateada con colores en pantalla, no utiliza directamente llamadas a interrupciones del BIOS, sino que utiliza funciones del kernel de Windows XP.
Cordiales saludos.
Las interrupciones son las famosas "llamadas al sistema" o instrucciones que permiten interactuar con el hardware de la computadora.
Como el BIOS se encarga de manejar el hardware, C++ acude a él a través de la instrucción int86( ), donde debemos especificar la interrupción que corresponde al tipo de hardware a manipular. Por ejemplo, para el monitor es 10h 0 mejor escrito 0x10.
Si deseas más información checa en:
http://es.wikipedia.org/wiki/Interrupci%C3%B3n
http://www.modelo.edu.mx/univ/virtech/prograc/graf...