Intel 64 and IA-32 Architectures Software Developers Manual Volume 1, Basic Architecture
Vol. 1 7-25
PROGRAMMING WITH GENERAL-PURPOSE INSTRUCTIONS
The INT n instruction can raise any of the processor’s interrupts or exceptions by
encoding the vector number or the interrupt or exception in the instruction. This
instruction can be used to support software generated interrupts or to test the oper-
ation of interrupt and exception handlers.
The IRET (return from interrupt) instruction returns program control from an inter-
rupt handler to the interrupted procedure. The IRET instruction performs a similar
operation to the RET instruction.
The CALL (call procedure) and RET (return from procedure) instructions allow a jump
from one procedure to another and a subsequent return to the calling procedure.
EFLAGS register contents are automatically stored on the stack along with the return
instruction pointer when the processor services an interrupt.
The INTO instruction raises the overflow exception if the OF flag is set. If the flag is
clear, execution continues without raising the exception. This instruction allows soft-
ware to access the overflow exception handler explicitly to check for overflow condi-
tions.
The BOUND instruction compares a signed value against upper and lower bounds,
and raises the “BOUND range exceeded” exception if the value is less than the lower
bound or greater than the upper bound. This instruction is useful for operations such
as checking an array index to make sure it falls within the range defined for the array.
7.3.8.5 Software Interrupt Instructions in 64-bit Mode and Compatibility
Mode
In 64-bit mode, the stack size is 8 bytes wide. IRET must pop 8-byte items off the
stack. SS:RSP pops unconditionally. BOUND is not supported.
In compatibility mode, SS:RSP is popped only if the CPL changes.
7.3.9 String Operations
The MOVS (Move String), CMPS (Compare string), SCAS (Scan string), LODS (Load
string), and STOS (Store string) instructions permit large data structures, such as
alphanumeric character strings, to be moved and examined in memory. These
instructions operate on individual elements in a string, which can be a byte, word, or
doubleword. The string elements to be operated on are identified with the ESI
(source string element) and EDI (destination string element) registers. Both of these
registers contain absolute addresses (offsets into a segment) that point to a string
element.
By default, the ESI register addresses the segment identified with the DS segment
register. A segment-override prefix allows the ESI register to be associated with the
CS, SS, ES, FS, or GS segment register. The EDI register addresses the segment
identified with the ES segment register; no segment override is allowed for the EDI
register. The use of two different segment registers in the string instructions permits
operations to be performed on strings located in different segments. Or by associ-