A
software interrupt is a long call that also saves the processor status. All interrupts have an 8-bit interrupt number associated with them. This number is used to look up a segment:offset in a 256 element
interrupt vector table stored at addresses 0-3FFH. When a software interrupt is encountered in
real mode, the processor status is pushed, CS and IP are pushed, and the interrupt number is multiplied by four to index a new execution address which is loaded from the vector table. It is entirely possible to use a far-call instruction to start the interrupt-function manually after pushing the flag register. Interrupt routines typically end with a IRET instruction. 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. Most
Unix systems and derivatives do not use
software interrupts, with the exception of interrupt 0x80, used to make
system calls before the mid-2000s. 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 ==