3-306
INSTRUCTION SET REFERENCE
INT n/INTO/INT 3Call to Interrupt Procedure
Description
The INT n instruction generates a call to the interrupt or exception handler specified with the
destination operand. For more information, refer to Section 4.4., Interrupts and Exceptions in
Chapter 4, Procedure Calls, Interrupts, and Exceptions of the Intel Architecture Software Devel-
opers Manual, Volume 1. The destination operand specifies an interrupt vector number from 0
to 255, encoded as an 8-bit unsigned intermediate value. Each interrupt vector number provides
an index to a gate descriptor in the IDT. The first 32 interrupt vector numbers are reserved by
Intel for system use. Some of these interrupts are used for internally generated exceptions.
The INT n instruction is the general mnemonic for executing a software-generated call to an
interrupt handler. The INTO instruction is a special mnemonic for calling overflow exception
(#OF), interrupt vector number 4. The overflow interrupt checks the OF flag in the EFLAGS
register and calls the overflow interrupt handler if the OF flag is set to 1.
The INT 3 instruction generates a special one byte opcode (CC) that is intended for calling the
debug exception handler. (This one byte form is valuable because it can be used to replace the
first byte of any instruction with a breakpoint, including other one byte instructions, without
over-writing other code). To further support its function as a debug breakpoint, the interrupt
generated with the CC opcode also differs from the regular software interrupts as follows:
Interrupt redirection does not happen when in VME mode; the interrupt is handled by a
protected-mode handler.
The virtual-8086 mode IOPL checks do not occur. The interrupt is taken without faulting at
any IOPL level.
Note that the normal 2-byte opcode for INT 3 (CD03) does not have these special features.
Intel and Microsoft assemblers will not generate the CD03 opcode from any mnemonic, but this
opcode can be created by direct numeric code definition or by self-modifying code.
The action of the INT n instruction (including the INTO and INT 3 instructions) is similar to that
of a far call made with the CALL instruction. The primary difference is that with the INT n
instruction, the EFLAGS register is pushed onto the stack before the return address. (The return
address is a far address consisting of the current values of the CS and EIP registers.) Returns
from interrupt procedures are handled with the IRET instruction, which pops the EFLAGS
information and return address from the stack.
Opcode
Instruction
Description
CC
INT 3
Interrupt 3trap to debugger
CD ib
INT imm8
Interrupt vector number specified by immediate byte
CE
INTO
Interrupt 4if overflow flag is 1