Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
INT (x86 instruction)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Computer assembly language instruction}} {{More citations needed |date=May 2024}} '''INT''' is an [[assembly language]] instruction for [[x86]] [[central processing unit|processors]] that generates a [[software interrupt]]. It takes the interrupt number formatted as a [[byte]] value.<ref name="intel-ref"> {{cite book |url=https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-instruction-set-reference-manual-325383.pdf |access-date=2024-05-23 |title=Intel® 64 and IA-32 Architectures Software Developer's Manual |volume=2 |date=March 2024 |publisher=[[Intel Corporation]] |page=3-520}}</ref> When written in assembly language, the '''instruction''' is written like this: :<code>INT ''X''</code> where <code>''X''</code> 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, <code>[[INT 13H]]</code> will generate the 20th '''''software interrupt''''' (0x13 is nineteen (19) in hexadecimal notation, and the count starts at 0), causing the function pointed to by the 20th vector in the [[Interrupt vector table|interrupt table]] to be executed. '''INT''' is widely used in [[real mode]]. In [[protected mode]], '''INT''' is a [[Protection ring|privileged instruction]].<ref name="intel-ref"></ref> == 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. An example of a useful DOS ''software interrupt'' 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.<ref>[https://www.pcmag.com/encyclopedia/term/int-21 Definition of: int 21]</ref> Most [[Unix]] systems and derivatives do not use ''software interrupts'', with the exception of interrupt 0x80, used to make [[system call]]s. 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 [[debugger]]s 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 <code>0xCC</code>, as opposed to the opcode for INT <var>immediate8</var>, which is <code>0xCD <var>immediate8</var></code>. Since the dedicated <code>0xCC</code> 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 <code>0xCD 0x03</code> opcode from mnemonics.<ref name="intel-ref" /> == 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 <code>0xCE</code>, however it is unavailable in x86-64 mode. == See also == *[[INT 10H]] *[[INT 13H]] *[[DOS API]] *[[Interrupt]] *[[BIOS interrupt call]] *[[Ralf Brown's Interrupt List]] ==References== {{reflist}} [[Category:X86 instructions]] [[Category:Interrupts]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Cite book
(
edit
)
Template:More citations needed
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)