INT (instrucción x86)

Instrucción en lenguaje ensamblador de computadoras

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]

Cuando se escribe en lenguaje ensamblador, la instrucción se escribe así:

INT X

¿Dónde Xestá la interrupción de software que se debe generar (0-255)?

Como es habitual en la aritmética binaria de máquinas, los números de interrupción suelen escribirse en formato hexadecimal , que puede indicarse con el prefijo 0x o con el sufijo h . Por ejemplo, INT 13Hgenerará la interrupción de software número 20 (0x13 es diecinueve (19) en notación hexadecimal y el conteo comienza en 0), lo que hará que se ejecute la función a la que apunta el vector número 20 en la tabla de interrupciones .

INT se utiliza ampliamente en modo real . En modo protegido , INT es una instrucción privilegiada . [1]

Modo real

Al generar una interrupción de software , el procesador llama a una de las 256 funciones indicadas en 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 utilizar una instrucción de llamada lejana para iniciar la función de interrupción manualmente después de presionar el registro de bandera.

Un ejemplo de una interrupción de software DOS útil fue la interrupción 0x21. Al llamarla con diferentes parámetros en los registros (principalmente ah y al), se podía acceder a varias operaciones de E/S, salida de cadenas y más. [2]

La mayoría de los sistemas Unix y derivados no utilizan interrupciones de software , con 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.

INT3

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

El código de operación para INT3 es 0xCC, a diferencia del código de operación para INT inmediata8 , que es . Dado que el código de operación dedicado tiene algunas propiedades especiales deseadas para la depuración, que no son compartidas por el código de operación normal de dos bytes para un INT3, los ensambladores normalmente no generan el código de operación genérico a partir de mnemónicos. [1]0xCD immediate80xCC0xCD 0x03

EN

La instrucción INTO  es otra instrucción de un byte. Es una interrupción condicional que se activa cuando se activa el indicador de desbordamiento en el momento de ejecutar este código de operación. Esto indica implícitamente la interrupción n.° 4.

El código de operación para INTO es 0xCE, sin embargo no está disponible en el modo x86-64.

Véase también

Referencias

  1. ^ abc Manual del desarrollador de software de arquitecturas Intel® 64 e IA-32 (PDF) . Vol. 2. Intel Corporation . Marzo de 2024. p. 3-520 . Consultado el 23 de mayo de 2024 .
  2. ^ Definición de: int 21
Obtenido de "https://es.wikipedia.org/w/index.php?title=INT_(instrucción_x86)&oldid=1242316548"