INT (instrucción x86)


INT es una instrucción en lenguaje ensamblador para procesadores x86 que genera una interrupción de software . Toma el número de interrupción formateado como un valor de byte . [1]

Como es habitual en la aritmética binaria de máquina, los números de interrupción a menudo se escriben en forma hexadecimal , que se puede indicar con un prefijo 0x o con el sufijo h . Por ejemplo, INT 13Hgenerará la vigésima interrupción de software (0x13 es el número 19, diecinueve, escrito en notación hexadecimal, y la cuenta comienza con 0), lo que hace que se ejecute la función señalada por el vigésimo vector en la tabla de interrupciones .

Al generar una interrupción de software , el procesador llama a una de las 256 funciones señaladas por la tabla de direcciones de interrupción, que se encuentra en los primeros 1024 bytes de memoria mientras está en modo real (ver Vector de interrupción ). Por lo tanto, es completamente posible usar una instrucción de llamada lejana para iniciar la función de interrupción manualmente después de presionar el registro de bandera.

Una de las interrupciones de software de DOS más útiles fue la interrupción 0x21. Al llamarlo con diferentes parámetros en los registros (principalmente ah y al), puede acceder a varias operaciones de E/S, salida de cadenas y más. [2]

La mayoría de los sistemas Unix y sus derivados no utilizan interrupciones de software , con la excepción de la interrupción 0x80, que se utiliza para realizar llamadas al sistema . Esto se logra ingresando un valor de 32 bits correspondiente a una función del núcleo en el registro EAX del procesador y luego ejecutando INT 0x80.

La instrucción INT3  es una instrucción de un byte definida para que la usen los depuradores para reemplazar temporalmente una instrucción en un programa en ejecución para establecer un punto de interrupción del código . Las instrucciones INT XXh más generales se codifican utilizando dos bytes. Esto los hace inadecuados para su uso en instrucciones de parches (que pueden tener un byte de longitud); ver SIGTRAP .