This manual documents NASM, the Netwide Assembler: an assembler targetting the Intel x86 series of processors, with portable source.
Chapter 1: Introduction
Section 1.1: What Is NASM?
Section 1.1.1: Why Yet Another Assembler?
Section 1.1.2: Licence Conditions
Section 1.2: Contact Information
Section 1.3: Installation
Section 1.3.1: Installing NASM under MS-DOS or Windows
Section 1.3.2: Installing NASM under Unix
Chapter 2: Running NASM
Section 2.1: NASM Command-Line Syntax
Section 2.1.1: The Option: Specifying the Output File Name
Section 2.1.2: The Option: Specifying the Output File Format
Section 2.1.3: The Option: Generating a Listing File
Section 2.1.4: The Option: Generate Makefile Dependencies.
Section 2.1.5: The Option: Selecting a Debugging Format
Section 2.1.6: The Option: Enabling Debug Information.
Section 2.1.7: The Option: Send Errors to a File
Section 2.1.8: The Option: Send Errors to
Section 2.1.9: The Option: Include File Search Directories
Section 2.1.10: The Option: Pre-Include a File
Section 2.1.11: The Option: Pre-Define a Macro
Section 2.1.12: The Option: Undefine a Macro
Section 2.1.13: The Option: Preprocess Only
Section 2.1.14: The Option: Don't Preprocess At All
Section 2.1.15: The Option: Specifying Multipass Optimization.
Section 2.1.16: The option: Enable TASM Compatibility Mode
Section 2.1.17: The Option: Enable or Disable Assembly Warnings
Section 2.1.18: The Option: Display Version Info
Section 2.1.19: The Environment Variable
Section 2.2: Quick Start for MASM Users
Section 2.2.1: NASM Is Case-Sensitive
Section 2.2.2: NASM Requires Square Brackets For Memory References
Section 2.2.3: NASM Doesn't Store Variable Types
Section 2.2.4: NASM Doesn't
Section 2.2.5: NASM Doesn't Support Memory Models
Section 2.2.6: Floating-Point Differences
Section 2.2.7: Other Differences
Chapter 3: The NASM Language
Section 3.1: Layout of a NASM Source Line
Section 3.2: Pseudo-Instructions
Section 3.2.1: and friends: Declaring Initialised Data
Section 3.2.2: and friends: Declaring Uninitialised Data
Section 3.2.3: : Including External Binary Files
Section 3.2.4: : Defining Constants
Section 3.2.5: : Repeating Instructions or Data
Section 3.3: Effective Addresses
Section 3.4: Constants
Section 3.4.1: Numeric Constants
Section 3.4.2: Character Constants
Section 3.4.3: String Constants
Section 3.4.4: Floating-Point Constants
Section 3.5: Expressions
Section 3.5.1: : Bitwise OR Operator
Section 3.5.2: : Bitwise XOR Operator
Section 3.5.3: : Bitwise AND Operator
Section 3.5.4: and : Bit Shift Operators
Section 3.5.5: and : Addition and Subtraction Operators
Section 3.5.6: , , , and : Multiplication and Division
Section 3.5.7: Unary Operators: , , and
Section 3.6: and
Section 3.7: Critical Expressions
Section 3.8: Local Labels
Chapter 4: The NASM Preprocessor
Section 4.1: Single-Line Macros
Section 4.1.1: The Normal Way:
Section 4.1.2: Undefining macros:
Section 4.1.3: Preprocessor Variables:
Section 4.2: String Handling in Macros: and
Section 4.2.1: String Length:
Section 4.2.2: Sub-strings:
Section 4.3: Multi-Line Macros:
Section 4.3.1: Overloading Multi-Line Macros
Section 4.3.2: Macro-Local Labels
Section 4.3.3: Greedy Macro Parameters
Section 4.3.4: Default Macro Parameters
Section 4.3.5: : Macro Parameter Counter
Section 4.3.6: : Rotating Macro Parameters
Section 4.3.7: Concatenating Macro Parameters
Section 4.3.8: Condition Codes as Macro Parameters
Section 4.3.9: Disabling Listing Expansion
Section 4.4: Conditional Assembly
Section 4.4.1: : Testing Single-Line Macro Existence
Section 4.4.2: : Testing the Context Stack
Section 4.4.3: : Testing Arbitrary Numeric Expressions
Section 4.4.4: and : Testing Exact Text Identity
Section 4.4.5: , , : Testing Token Types
Section 4.4.6: : Reporting User-Defined Errors
Section 4.5: Preprocessor Loops:
Section 4.6: Including Other Files
Section 4.7: The Context Stack
Section 4.7.1: and : Creating and Removing Contexts
Section 4.7.2: Context-Local Labels
Section 4.7.3: Context-Local Single-Line Macros
Section 4.7.4: : Renaming a Context
Section 4.7.5: Example Use of the Context Stack: Block IFs
Section 4.8: Standard Macros
Section 4.8.1: and : NASM Version
Section 4.8.2: and : File Name and Line Number
Section 4.8.3: and : Declaring Structure Data Types
Section 4.8.4: , and : Declaring Instances of Structures
Section 4.8.5: and : Data Alignment
Section 4.9: TASM Compatible Preprocessor Directives
Section 4.9.1: Directive
Section 4.9.2: Directive
Section 4.9.3: Directive
Chapter 5: Assembler Directives
Section 5.1: : Specifying Target Processor Mode
Section 5.1.1: & : Aliases for BITS
Section 5.2: or : Changing and Defining Sections
Section 5.2.1: The Macro
Section 5.3: : Defining Absolute Labels
Section 5.4: : Importing Symbols from Other Modules
Section 5.5: : Exporting Symbols to Other Modules
Section 5.6: : Defining Common Data Areas
Section 5.7: : Defining CPU Dependencies
Chapter 6: Output Formats
Section 6.1: : Flat-Form Binary Output
Section 6.1.1: : Binary File Program Origin
Section 6.1.2: Extensions to the Directive
Section 6.2: : Microsoft OMF Object Files
Section 6.2.1: Extensions to the Directive
Section 6.2.2: : Defining Groups of Segments
Section 6.2.3: : Disabling Case Sensitivity in Output
Section 6.2.4: : Importing DLL Symbols
Section 6.2.5: : Exporting DLL Symbols
Section 6.2.6: : Defining the Program Entry Point
Section 6.2.7: Extensions to the Directive
Section 6.2.8: Extensions to the Directive
Section 6.3: : Microsoft Win32 Object Files
Section 6.3.1: Extensions to the Directive
Section 6.4: : Common Object File Format
Section 6.5: : Linux ELFObject Files
Section 6.5.1: Extensions to the Directive
Section 6.5.2: Position-Independent Code: Special Symbols and
Section 6.5.3: Extensions to the Directive
Section 6.5.4: Extensions to the Directive
Section 6.6: : Linux Object Files
Section 6.7: : NetBSD/FreeBSD/OpenBSD Object Files
Section 6.8: : Linux Object Files
Section 6.9: : Relocatable Dynamic Object File Format
Section 6.9.1: Requiring a Library: The Directive
Section 6.9.2: Specifying a Module Name: The Directive
Section 6.9.3: Extensions to the directive
Section 6.10: : Debugging Format
Chapter 7: Writing 16-bit Code (DOS, Windows 3/3.1)
Section 7.1: Producing Files
Section 7.1.1: Using the Format To Generate Files
Section 7.1.2: Using the Format To Generate Files
Section 7.2: Producing Files
Section 7.2.1: Using the Format To Generate Files
Section 7.2.2: Using the Format To Generate Files
Section 7.3: Producing Files
Section 7.4: Interfacing to 16-bit C Programs
Section 7.4.1: External Symbol Names
Section 7.4.2: Memory Models
Section 7.4.3: Function Definitions and Function Calls
Section 7.4.4: Accessing Data Items
Section 7.4.5: : Helper Macros for the 16-bit C Interface
Section 7.5: Interfacing to Borland Pascal Programs
Section 7.5.1: The Pascal Calling Convention
Section 7.5.2: Borland Pascal Segment Name Restrictions
Section 7.5.3: Using With Pascal Programs
Chapter 8: Writing 32-bit Code (Unix, Win32, DJGPP)
Section 8.1: Interfacing to 32-bit C Programs
Section 8.1.1: External Symbol Names
Section 8.1.2: Function Definitions and Function Calls
Section 8.1.3: Accessing Data Items
Section 8.1.4: : Helper Macros for the 32-bit C Interface
Section 8.2: Writing NetBSD/FreeBSD/OpenBSD and Linux/ELF Shared Libraries
Section 8.2.1: Obtaining the Address of the GOT
Section 8.2.2: Finding Your Local Data Items
Section 8.2.3: Finding External and Common Data Items
Section 8.2.4: Exporting Symbols to the Library User
Section 8.2.5: Calling Procedures Outside the Library
Section 8.2.6: Generating the Library File
Chapter 9: Mixing 16 and 32 Bit Code
Section 9.1: Mixed-Size Jumps
Section 9.2: Addressing Between Different-Size Segments
Section 9.3: Other Mixed-Size Instructions
Chapter 10: Troubleshooting
Section 10.1: Common Problems
Section 10.1.1: NASM Generates Inefficient Code
Section 10.1.2: My Jumps are Out of Range
Section 10.1.3: Doesn't Work
Section 10.1.4: Doesn't Work
Section 10.2: Bugs
Appendix A: Ndisasm
Section A.1: Introduction
Section A.2: Getting Started: Installation
Section A.3: Running NDISASM
Section A.3.1: COM Files: Specifying an Origin
Section A.3.2: Code Following Data: Synchronisation
Section A.3.3: Mixed Code and Data: Automatic (Intelligent) Synchronisation
Section A.3.4: Other Options
Section A.4: Bugs and Improvements
Appendix B: Intel x86 Instruction Reference
Section B.1: Key to Operand Specifications
Section B.2: Key to Opcode Descriptions
Section B.2.1: Register Values
Section B.2.2: Condition Codes
Section B.2.3: SSE Condition Predicates
Section B.2.4: Status Flags
Section B.2.5: Effective Address Encoding: ModR/M and SIB
Section B.3: Key to Instruction Flags
Section B.4: , , , : ASCII Adjustments
Section B.5: : Add with Carry
Section B.6: : Add Integers
Section B.7: : ADD Packed Double-Precision FP Values
Section B.8: : ADD Packed Single-Precision FP Values
Section B.9: : ADD Scalar Double-Precision FP Values
Section B.10: : ADD Scalar Single-Precision FP Values
Section B.11: : Bitwise AND
Section B.12: : Bitwise Logical AND NOT of Packed Double-Precision FP Values
Section B.13: : Bitwise Logical AND NOT of Packed Single-Precision FP Values
Section B.14: : Bitwise Logical AND For Single FP
Section B.15: : Bitwise Logical AND For Single FP
Section B.16: : Adjust RPL Field of Selector
Section B.17: : Check Array Index against Bounds
Section B.18: , : Bit Scan
Section B.19: : Byte Swap
Section B.20: , , , : Bit Test
Section B.21: : Call Subroutine
Section B.22: , , , : Sign Extensions
Section B.23: , , , : Clear Flags
Section B.24: : Flush Cache Line
Section B.25: : Complement Carry Flag
Section B.26: : Conditional Move
Section B.27: : Compare Integers
Section B.28: : Packed Double-Precision FP Compare
Section B.29: : Packed Single-Precision FP Compare
Section B.30: , , : Compare Strings
Section B.31: : Scalar Double-Precision FP Compare
Section B.32: : Scalar Single-Precision FP Compare
Section B.33: , : Compare and Exchange
Section B.34: : Compare and Exchange Eight Bytes
Section B.35: : Scalar Ordered Double-Precision FP Compare and Set EFLAGS
Section B.36: : Scalar Ordered Single-Precision FP Compare and Set EFLAGS
Section B.37: : Get CPU Identification Code
Section B.38: : Packed Signed INT32 to Packed Double-Precision FP Conversion
Section B.39: : Packed Signed INT32 to Packed Single-Precision FP Conversion
Section B.40: : Packed Double-Precision FP to Packed Signed INT32 Conversion
Section B.41: : Packed Double-Precision FP to Packed Signed INT32 Conversion
Section B.42: : Packed Double-Precision FP to Packed Single-Precision FP Conversion
Section B.43: : Packed Signed INT32 to Packed Double-Precision FP Conversion
Section B.44: : Packed Signed INT32 to Packed Single-FP Conversion
Section B.45: : Packed Single-Precision FP to Packed Signed INT32 Conversion
Section B.46: : Packed Single-Precision FP to Packed Double-Precision FP Conversion
Section B.47: : Packed Single-Precision FP to Packed Signed INT32 Conversion
Section B.48: : Scalar Double-Precision FP to Signed INT32 Conversion
Section B.49: : Scalar Double-Precision FP to Scalar Single-Precision FP Conversion
Section B.50: : Signed INT32 to Scalar Double-Precision FP Conversion
Section B.51: : Signed INT32 to Scalar Single-Precision FP Conversion
Section B.52: : Scalar Single-Precision FP to Scalar Double-Precision FP Conversion
Section B.53: : Scalar Single-Precision FP to Signed INT32 Conversion
Section B.54: : Packed Double-Precision FP to Packed Signed INT32 Conversion with Truncation
Section B.55: : Packed Double-Precision FP to Packed Signed INT32 Conversion with Truncation
Section B.56: : Packed Single-Precision FP to Packed Signed INT32 Conversion with Truncation
Section B.57: : Packed Single-Precision FP to Packed Signed INT32 Conversion with Truncation
Section B.58: : Scalar Double-Precision FP to Signed INT32 Conversion with Truncation
Section B.59: : Scalar Single-Precision FP to Signed INT32 Conversion with Truncation
Section B.60: , : Decimal Adjustments
Section B.61: : Decrement Integer
Section B.62: : Unsigned Integer Divide
Section B.63: : Packed Double-Precision FP Divide
Section B.64: : Packed Single-Precision FP Divide
Section B.65: : Scalar Double-Precision FP Divide
Section B.66: : Scalar Single-Precision FP Divide
Section B.67: : Empty MMX State
Section B.68: : Create Stack Frame
Section B.69: : Calculate 2**X-1
Section B.70: : Floating-Point Absolute Value
Section B.71: , : Floating-Point Addition
Section B.72: , : BCD Floating-Point Load and Store
Section B.73: : Floating-Point Change Sign
Section B.74: , : Clear Floating-Point Exceptions
Section B.75: : Floating-Point Conditional Move
Section B.76: , , , , : Floating-Point Compare
Section B.77: : Cosine
Section B.78: : Decrement Floating-Point Stack Pointer
Section B.79: , : Disable and Enable Floating-Point Interrupts
Section B.80: , , , : Floating-Point Division
Section B.81: : Faster Enter/Exit of the MMX or floating-point state
Section B.82: : Flag Floating-Point Register as Unused
Section B.83: : Floating-Point/Integer Addition
Section B.84: , : Floating-Point/Integer Compare
Section B.85: , : Floating-Point/Integer Division
Section B.86: , , : Floating-Point/Integer Conversion
Section B.87: : Floating-Point/Integer Multiplication
Section B.88: : Increment Floating-Point Stack Pointer
Section B.89: , : Initialise Floating-Point Unit
Section B.90: : Floating-Point/Integer Subtraction
Section B.91: : Floating-Point Load
Section B.92: : Floating-Point Load Constants
Section B.93: : Load Floating-Point Control Word
Section B.94: : Load Floating-Point Environment
Section B.95: , : Floating-Point Multiply
Section B.96: : Floating-Point No Operation
Section B.97: , : Arctangent and Tangent
Section B.98: , : Floating-Point Partial Remainder
Section B.99: : Floating-Point Round to Integer
Section B.100: , : Save/Restore Floating-Point State
Section B.101: : Scale Floating-Point Value by Power of Two
Section B.102: : Set Protected Mode
Section B.103: , : Sine and Cosine
Section B.104: : Floating-Point Square Root
Section B.105: , : Floating-Point Store
Section B.106: : Store Floating-Point Control Word
Section B.107: : Store Floating-Point Environment
Section B.108: : Store Floating-Point Status Word
Section B.109: , , , : Floating-Point Subtract
Section B.110: : Test Against Zero
Section B.111: : Floating-Point Unordered Compare
Section B.112: : Examine Class of Value in
Section B.113: : Floating-Point Exchange
Section B.114: : Restore , and State
Section B.115: : Store , and State
Section B.116: : Extract Exponent and Significand
Section B.117: , : Compute Y times Log2(X) or Log2(X+1)
Section B.118: : Halt Processor
Section B.119: : Insert Bit String
Section B.120: : Signed Integer Divide
Section B.121: : Signed Integer Multiply
Section B.122: : Input from I/O Port
Section B.123: : Increment Integer
Section B.124: , , : Input String from I/O Port
Section B.125: : Software Interrupt
Section B.126: , , , : Breakpoints
Section B.127: : Interrupt if Overflow
Section B.128: : Invalidate Internal Caches
Section B.129: : Invalidate TLB Entry
Section B.130: , , : Return from Interrupt
Section B.131: : Conditional Branch
Section B.132: , : Jump if CX/ECX Zero
Section B.133: : Jump
Section B.134: : Load AH from Flags
Section B.135: : Load Access Rights
Section B.136: : Load Streaming SIMD Extension Control/Status
Section B.137: , , , , : Load Far Pointer
Section B.138: : Load Effective Address
Section B.139: : Destroy Stack Frame
Section B.140: : Load Fence
Section B.141: , , : Load Descriptor Tables
Section B.142: : Load/Store Machine Status Word
Section B.143: , : Load Processor State
Section B.144: , , : Load from String
Section B.145: , , , , : Loop with Counter
Section B.146: : Load Segment Limit
Section B.147: : Load Task Register
Section B.148: : Byte Mask Write
Section B.149: : Byte Mask Write
Section B.150: : Return Packed Double-Precision FP Maximum
Section B.151: : Return Packed Single-Precision FP Maximum
Section B.152: : Return Scalar Double-Precision FP Maximum
Section B.153: : Return Scalar Single-Precision FP Maximum
Section B.154: : Memory Fence
Section B.155: : Return Packed Double-Precision FP Minimum
Section B.156: : Return Packed Single-Precision FP Minimum
Section B.157: : Return Scalar Double-Precision FP Minimum
Section B.158: : Return Scalar Single-Precision FP Minimum
Section B.159: : Move Data
Section B.160: : Move Aligned Packed Double-Precision FP Values
Section B.161: : Move Aligned Packed Single-Precision FP Values
Section B.162: : Move Doubleword to/from MMX Register
Section B.163: : Move Quadword from XMM to MMX register.
Section B.164: : Move Aligned Double Quadword
Section B.165: : Move Unaligned Double Quadword
Section B.166: : Move Packed Single-Precision FP High to Low
Section B.167: : Move High Packed Double-Precision FP
Section B.168: : Move High Packed Single-Precision FP
Section B.169: : Move Packed Single-Precision FP Low to High
Section B.170: : Move Low Packed Double-Precision FP
Section B.171: : Move Low Packed Single-Precision FP
Section B.172: : Extract Packed Double-Precision FP Sign Mask
Section B.173: : Extract Packed Single-Precision FP Sign Mask
Section B.174: : Move Double Quadword Non Temporal
Section B.175: : Move Doubleword Non Temporal
Section B.176: : Move Aligned Four Packed Single-Precision FP Values Non Temporal
Section B.177: : Move Aligned Four Packed Single-Precision FP Values Non Temporal
Section B.178: : Move Quadword Non Temporal
Section B.179: : Move Quadword to/from MMX Register
Section B.180: : Move Quadword from MMX to XMM register.
Section B.181: , , : Move String
Section B.182: : Move Scalar Double-Precision FP Value
Section B.183: : Move Scalar Single-Precision FP Value
Section B.184: , : Move Data with Sign or Zero Extend
Section B.185: : Move Unaligned Packed Double-Precision FP Values
Section B.186: : Move Unaligned Packed Single-Precision FP Values
Section B.187: : Unsigned Integer Multiply
Section B.188: : Packed Single-FP Multiply
Section B.189: : Packed Single-FP Multiply
Section B.190: : Scalar Single-FP Multiply
Section B.191: : Scalar Single-FP Multiply
Section B.192: , : Two's and One's Complement
Section B.193: : No Operation
Section B.194: : Bitwise OR
Section B.195: : Bit-wise Logical OR of Double-Precision FP Data
Section B.196: : Bit-wise Logical OR of Single-Precision FP Data
Section B.197: : Output Data to I/O Port
Section B.198: , , : Output String to I/O Port
Section B.199: , , : Pack Data
Section B.200: , , : Add Packed Integers
Section B.201: : Add Packed Quadword Integers
Section B.202: , : Add Packed Signed Integers With Saturation
Section B.203: : MMX Packed Addition to Implicit Destination
Section B.204: , : Add Packed Unsigned Integers With Saturation
Section B.205: , : MMX Bitwise AND and AND-NOT
Section B.206: : Spin Loop Hint
Section B.207: : MMX Packed Average
Section B.208: : Average Packed Integers
Section B.209: : Average of unsigned packed 8-bit values
Section B.210: : Compare Packed Integers.
Section B.211: : MMX Packed Distance and Accumulate with Implied Register
Section B.212: : Extract Word
Section B.213: : Packed Single-Precision FP to Integer Convert
Section B.214: : Packed Single-Precision FP to Integer Word Convert
Section B.215: : Packed Single-Precision FP Accumulate
Section B.216: : Packed Single-Precision FP Addition
Section B.217: : Packed Single-Precision FP Compare
Section B.218: : Packed Single-Precision FP Maximum
Section B.219: : Packed Single-Precision FP Minimum
Section B.220: : Packed Single-Precision FP Multiply
Section B.221: : Packed Single-Precision FP Negative Accumulate
Section B.222: : Packed Single-Precision FP Mixed Accumulate
Section B.223: : Packed Single-Precision FP Reciprocal Approximation
Section B.224: : Packed Single-Precision FP Reciprocal, First Iteration Step
Section B.225: : Packed Single-Precision FP Reciprocal/ Reciprocal Square Root, Second Iteration Step
Section B.226: : Packed Single-Precision FP Reciprocal Square Root, First Iteration Step
Section B.227: : Packed Single-Precision FP Reciprocal Square Root Approximation
Section B.228: : Packed Single-Precision FP Subtract
Section B.229: : Packed Single-Precision FP Reverse Subtract
Section B.230: : Packed Doubleword Integer to Single-Precision FP Convert
Section B.231: : Packed Word Integer to Single-Precision FP Convert
Section B.232: : Insert Word
Section B.233: : Packed Multiply and Accumulate with Rounding
Section B.234: : MMX Packed Multiply and Add
Section B.235: : MMX Packed Magnitude
Section B.236: : Packed Signed Integer Word Maximum
Section B.237: : Packed Unsigned Integer Byte Maximum
Section B.238: : Packed Signed Integer Word Minimum
Section B.239: : Packed Unsigned Integer Byte Minimum
Section B.240: : Move Byte Mask To Integer
Section B.241: , : Multiply Packed 16-bit Integers With Rounding, and Store High Word
Section B.242: : Multiply Packed 16-bit Integers With Rounding, and Store High Word
Section B.243: : Multiply Packed 16-bit Integers, and Store High Word
Section B.244: , : Multiply Packed 16-bit Integers, and Store
Section B.245: : Multiply Packed Unsigned 32-bit Integers, and Store.
Section B.246: : MMX Packed Conditional Move
Section B.247: : Pop Data from Stack
Section B.248: : Pop All General-Purpose Registers
Section B.249: : Pop Flags Register
Section B.250: : MMX Bitwise OR
Section B.251: : Prefetch Data Into Caches
Section B.252: : Prefetch Data Into Caches
Section B.253: : Packed Sum of Absolute Differences
Section B.254: : Shuffle Packed Doublewords
Section B.255: : Shuffle Packed High Words
Section B.256: : Shuffle Packed Low Words
Section B.257: : Shuffle Packed Words
Section B.258: : Packed Data Bit Shift Left Logical
Section B.259: : Packed Data Bit Shift Right Arithmetic
Section B.260: : Packed Data Bit Shift Right Logical
Section B.261: : Subtract Packed Integers
Section B.262: , : Subtract Packed Integers With Saturation
Section B.263: : MMX Packed Subtract with Saturation to Implied Destination
Section B.264: : Swap Packed Data
Section B.265: : Unpack and Interleave Data
Section B.266: : Push Data on Stack
Section B.267: : Push All General-Purpose Registers
Section B.268: : Push Flags Register
Section B.269: : MMX Bitwise XOR
Section B.270: , : Bitwise Rotate through Carry Bit
Section B.271: : Packed Single-Precision FP Reciprocal
Section B.272: : Scalar Single-Precision FP Reciprocal
Section B.273: : Read Model-Specific Registers
Section B.274: : Read Performance-Monitoring Counters
Section B.275: : Read SMM Header Pointer Register
Section B.276: : Read Time-Stamp Counter
Section B.277: , , : Return from Procedure Call
Section B.278: , : Bitwise Rotate
Section B.279: : Restore Segment Register and Descriptor
Section B.280: : Restore Segment Register and Descriptor
Section B.281: : Resume from System-Management Mode
Section B.282: : Packed Single-Precision FP Square Root Reciprocal
Section B.283: : Scalar Single-Precision FP Square Root Reciprocal
Section B.284: : Restore TSR and Descriptor
Section B.285: : Store AH to Flags
Section B.286: , : Bitwise Arithmetic Shifts
Section B.287: : Set AL from Carry Flag
Section B.288: : Subtract with Borrow
Section B.289: , , : Scan String
Section B.290: : Set Register from Condition
Section B.291: : Store Fence
Section B.292: , , : Store Descriptor Table Pointers
Section B.293: , : Bitwise Logical Shifts
Section B.294: , : Bitwise Double-Precision Shifts
Section B.295: : Shuffle Packed Double-Precision FP Values
Section B.296: : Shuffle Packed Single-Precision FP Values
Section B.297: : System Management Interrupt
Section B.298: , : Software SMM Entry (CYRIX)
Section B.299: : Store Machine Status Word
Section B.300: : Packed Double-Precision FP Square Root
Section B.301: : Packed Single-Precision FP Square Root
Section B.302: : Scalar Double-Precision FP Square Root
Section B.303: : Scalar Single-Precision FP Square Root
Section B.304: , , : Set Flags
Section B.305: : Store Streaming SIMD Extension Control/Status
Section B.306: , , : Store Byte to String
Section B.307: : Store Task Register
Section B.308: : Subtract Integers
Section B.309: : Packed Double-Precision FP Subtract
Section B.310: : Packed Single-Precision FP Subtract
Section B.311: : Scalar Single-FP Subtract
Section B.312: : Scalar Single-FP Subtract
Section B.313: : Save Segment Register and Descriptor
Section B.314: : Save LDTR and Descriptor
Section B.315: : Save TSR and Descriptor
Section B.316: : Call Operating System
Section B.317: : Fast System Call
Section B.318: : Fast Return From System Call
Section B.319: : Return From Operating System
Section B.320: : Test Bits (notional bitwise AND)
Section B.321: : Unordered Scalar Double-Precision FP compare and set EFLAGS
Section B.322: : Unordered Scalar Single-Precision FP compare and set EFLAGS
Section B.323: , , : Undefined Instruction
Section B.324: : User Move Data
Section B.325: : Unpack and Interleave High Packed Double-Precision FP Values
Section B.326: : Unpack and Interleave High Packed Single-Precision FP Values
Section B.327: : Unpack and Interleave Low Packed Double-Precision FP Data
Section B.328: : Unpack and Interleave Low Packed Single-Precision FP Data
Section B.329: , : Verify Segment Readability/Writability
Section B.330: : Wait for Floating-Point Processor
Section B.331: : Write Back and Invalidate Cache
Section B.332: : Write Model-Specific Registers
Section B.333: : Write SMM Header Pointer Register
Section B.334: : Exchange and Add
Section B.335: : Extract Bit String
Section B.336: : Exchange
Section B.337: : Translate Byte in Lookup Table
Section B.338: : Bitwise Exclusive OR
Section B.339: : Bitwise Logical XOR of Double-Precision FP Values
Section B.340: : Bitwise Logical XOR of Single-Precision FP Values