INT (x86 instruction)

INT is an assembly language instruction for x86 processors that generates a software interrupt. It takes the interrupt number formatted as a byte value.
When written in assembly language, the instruction is written like this:
where codice_2 is the software interrupt that should be generated (0-255).
As is customary with machine binary arithmetic, interrupt numbers are often written in hexadecimal form, which can be indicated with a prefix "0x" or with the suffix "h". For example, codice_3 will generate the 20th software interrupt (0x13 is the number 19 -- nineteen -- written in hexadecimal notation, and the count starts with 0), causing the function pointed to by the 20th vector in the interrupt table to be executed.
Real mode.
When generating a software interrupt, the processor calls one of the 256 functions pointed to by the interrupt address table, which is located in the first 1024 bytes of memory while in real mode (see Interrupt vector). It is therefore entirely possible to use a far-call instruction to start the interrupt-function manually after pushing the flag register.
One of the most useful DOS software interrupts was interrupt 0x21. By calling it with different parameters in the registers (mostly ah and al) you could access various IO operations, string output and more.
Most Unix systems and derivatives do not use software interrupts, with the exception of interrupt 0x80, used to make system calls. This is accomplished by entering a 32-bit value corresponding to a kernel function into the EAX register of the processor and then executing INT 0x80.
INT3.
The INT3 instruction is a one-byte-instruction defined for use by debuggers to temporarily replace an instruction in a running program in order to set a code breakpoint. The more general INT XXh instructions are encoded using two bytes. This makes them unsuitable for use in patching instructions (which can be one byte long); see SIGTRAP.
The opcode for INT3 is codice_4, as opposed to the opcode for INT immediate8, which is codice_5. Since the dedicated codice_4 opcode has some desired special properties for debugging, which are not shared by the "normal" two-byte opcode for an INT3, assemblers do not normally generate the generic codice_7 opcode from mnemonics.
INTO.
The INTO instruction is another one-byte-instruction. It is a conditional interrupt which is triggered when the overflow flag is set at the time of executing this opcode. This implicitly indicates interrupt #4.
The opcode for INTO is codice_8, however it is unavailable in x86-64 mode.