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 Debug Information Format
Section 2.1.6: The
Option: Enabling Debug Information.
Section 2.1.7: The
Option: Selecting an Error Reporting Format
Section 2.1.8: The
Option: Send Errors to a File
Section 2.1.9: The
Option: Send Errors to
Section 2.1.10: The
Option: Include File Search Directories
Section 2.1.11: The
Option: Pre-Include a File
Section 2.1.12: The
Option: Pre-Define a Macro
Section 2.1.13: The
Option: Undefine a Macro
Section 2.1.14: The
Option: Preprocess Only
Section 2.1.15: The
Option: Don't Preprocess At All
Section 2.1.16: The
Option: Specifying Multipass Optimization.
Section 2.1.17: The
option: Enable TASM Compatibility Mode
Section 2.1.18: The
Option: Enable or Disable Assembly Warnings
Section 2.1.19: The
Option: Display Version Info
Section 2.1.20: The
Option: Display Available Debug Info Formats
Section 2.1.21: The
and
Options.
Section 2.1.22: 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:
: Inhibiting Optimization
Section 3.8: Critical Expressions
Section 3.9: Local Labels
Chapter 4: The NASM Preprocessor
Section 4.1: Single-Line Macros
Section 4.1.1: The Normal Way:
Section 4.1.2: Enhancing %define:
Section 4.1.3: Concatenating Single Line Macro Tokens:
Section 4.1.4: Undefining macros:
Section 4.1.5: 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 Multi-Line Macro Existence
Section 4.4.3:
: Testing the Context Stack
Section 4.4.4:
: Testing Arbitrary Numeric Expressions
Section 4.4.5:
and
: Testing Exact Text Identity
Section 4.4.6:
,
,
: Testing Token Types
Section 4.4.7:
: 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:
: NASM Version ID
Section 4.8.3:
: NASM Version string
Section 4.8.4:
and
: File Name and Line Number
Section 4.8.5:
and
: Declaring Structure Data Types
Section 4.8.6:
,
and
: Declaring Instances of Structures
Section 4.8.7:
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
Section 4.10: Other Preprocessor Directives
Section 4.10.1:
Directive
Section 4.10.2:
: Read an environment variable.
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.1.3:
support for the BIN format.
Section 6.1.4: Map files
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:
: Executable and Linkable Format Object 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.5.5: 16-bit code and ELF
Section 6.6:
: Linux
Object Files
Section 6.7:
: NetBSD/FreeBSD/OpenBSD
Object Files
Section 6.8:
: Minix/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: 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: x86 Instruction Set
Section B.4.1:
,
,
,
: ASCII Adjustments
Section B.4.2:
: Add with Carry
Section B.4.3:
: Add Integers
Section B.4.4:
: ADD Packed Double-Precision FP Values
Section B.4.5:
: ADD Packed Single-Precision FP Values
Section B.4.6:
: ADD Scalar Double-Precision FP Values
Section B.4.7:
: ADD Scalar Single-Precision FP Values
Section B.4.8:
: Bitwise AND
Section B.4.9:
: Bitwise Logical AND NOT of Packed Double-Precision FP Values
Section B.4.10:
: Bitwise Logical AND NOT of Packed Single-Precision FP Values
Section B.4.11:
: Bitwise Logical AND For Single FP
Section B.4.12:
: Bitwise Logical AND For Single FP
Section B.4.13:
: Adjust RPL Field of Selector
Section B.4.14:
: Check Array Index against Bounds
Section B.4.15:
,
: Bit Scan
Section B.4.16:
: Byte Swap
Section B.4.17:
,
,
,
: Bit Test
Section B.4.18:
: Call Subroutine
Section B.4.19:
,
,
,
: Sign Extensions
Section B.4.20:
,
,
,
: Clear Flags
Section B.4.21:
: Flush Cache Line
Section B.4.22:
: Complement Carry Flag
Section B.4.23:
: Conditional Move
Section B.4.24:
: Compare Integers
Section B.4.25:
: Packed Double-Precision FP Compare
Section B.4.26:
: Packed Single-Precision FP Compare
Section B.4.27:
,
,
: Compare Strings
Section B.4.28:
: Scalar Double-Precision FP Compare
Section B.4.29:
: Scalar Single-Precision FP Compare
Section B.4.30:
,
: Compare and Exchange
Section B.4.31:
: Compare and Exchange Eight Bytes
Section B.4.32:
: Scalar Ordered Double-Precision FP Compare and Set EFLAGS
Section B.4.33:
: Scalar Ordered Single-Precision FP Compare and Set EFLAGS
Section B.4.34:
: Get CPU Identification Code
Section B.4.35:
: Packed Signed INT32 to Packed Double-Precision FP Conversion
Section B.4.36:
: Packed Signed INT32 to Packed Single-Precision FP Conversion
Section B.4.37:
: Packed Double-Precision FP to Packed Signed INT32 Conversion
Section B.4.38:
: Packed Double-Precision FP to Packed Signed INT32 Conversion
Section B.4.39:
: Packed Double-Precision FP to Packed Single-Precision FP Conversion
Section B.4.40:
: Packed Signed INT32 to Packed Double-Precision FP Conversion
Section B.4.41:
: Packed Signed INT32 to Packed Single-FP Conversion
Section B.4.42:
: Packed Single-Precision FP to Packed Signed INT32 Conversion
Section B.4.43:
: Packed Single-Precision FP to Packed Double-Precision FP Conversion
Section B.4.44:
: Packed Single-Precision FP to Packed Signed INT32 Conversion
Section B.4.45:
: Scalar Double-Precision FP to Signed INT32 Conversion
Section B.4.46:
: Scalar Double-Precision FP to Scalar Single-Precision FP Conversion
Section B.4.47:
: Signed INT32 to Scalar Double-Precision FP Conversion
Section B.4.48:
: Signed INT32 to Scalar Single-Precision FP Conversion
Section B.4.49:
: Scalar Single-Precision FP to Scalar Double-Precision FP Conversion
Section B.4.50:
: Scalar Single-Precision FP to Signed INT32 Conversion
Section B.4.51:
: Packed Double-Precision FP to Packed Signed INT32 Conversion with Truncation
Section B.4.52:
: Packed Double-Precision FP to Packed Signed INT32 Conversion with Truncation
Section B.4.53:
: Packed Single-Precision FP to Packed Signed INT32 Conversion with Truncation
Section B.4.54:
: Packed Single-Precision FP to Packed Signed INT32 Conversion with Truncation
Section B.4.55:
: Scalar Double-Precision FP to Signed INT32 Conversion with Truncation
Section B.4.56:
: Scalar Single-Precision FP to Signed INT32 Conversion with Truncation
Section B.4.57:
,
: Decimal Adjustments
Section B.4.58:
: Decrement Integer
Section B.4.59:
: Unsigned Integer Divide
Section B.4.60:
: Packed Double-Precision FP Divide
Section B.4.61:
: Packed Single-Precision FP Divide
Section B.4.62:
: Scalar Double-Precision FP Divide
Section B.4.63:
: Scalar Single-Precision FP Divide
Section B.4.64:
: Empty MMX State
Section B.4.65:
: Create Stack Frame
Section B.4.66:
: Calculate 2**X-1
Section B.4.67:
: Floating-Point Absolute Value
Section B.4.68:
,
: Floating-Point Addition
Section B.4.69:
,
: BCD Floating-Point Load and Store
Section B.4.70:
: Floating-Point Change Sign
Section B.4.71:
,
: Clear Floating-Point Exceptions
Section B.4.72:
: Floating-Point Conditional Move
Section B.4.73:
,
,
,
,
: Floating-Point Compare
Section B.4.74:
: Cosine
Section B.4.75:
: Decrement Floating-Point Stack Pointer
Section B.4.76:
,
: Disable and Enable Floating-Point Interrupts
Section B.4.77:
,
,
,
: Floating-Point Division
Section B.4.78:
: Faster Enter/Exit of the MMX or floating-point state
Section B.4.79:
: Flag Floating-Point Register as Unused
Section B.4.80:
: Floating-Point/Integer Addition
Section B.4.81:
,
: Floating-Point/Integer Compare
Section B.4.82:
,
: Floating-Point/Integer Division
Section B.4.83:
,
,
: Floating-Point/Integer Conversion
Section B.4.84:
: Floating-Point/Integer Multiplication
Section B.4.85:
: Increment Floating-Point Stack Pointer
Section B.4.86:
,
: Initialise Floating-Point Unit
Section B.4.87:
: Floating-Point/Integer Subtraction
Section B.4.88:
: Floating-Point Load
Section B.4.89:
: Floating-Point Load Constants
Section B.4.90:
: Load Floating-Point Control Word
Section B.4.91:
: Load Floating-Point Environment
Section B.4.92:
,
: Floating-Point Multiply
Section B.4.93:
: Floating-Point No Operation
Section B.4.94:
,
: Arctangent and Tangent
Section B.4.95:
,
: Floating-Point Partial Remainder
Section B.4.96:
: Floating-Point Round to Integer
Section B.4.97:
,
: Save/Restore Floating-Point State
Section B.4.98:
: Scale Floating-Point Value by Power of Two
Section B.4.99:
: Set Protected Mode
Section B.4.100:
,
: Sine and Cosine
Section B.4.101:
: Floating-Point Square Root
Section B.4.102:
,
: Floating-Point Store
Section B.4.103:
: Store Floating-Point Control Word
Section B.4.104:
: Store Floating-Point Environment
Section B.4.105:
: Store Floating-Point Status Word
Section B.4.106:
,
,
,
: Floating-Point Subtract
Section B.4.107:
: Test
Against Zero
Section B.4.108:
: Floating-Point Unordered Compare
Section B.4.109:
: Examine Class of Value in
Section B.4.110:
: Floating-Point Exchange
Section B.4.111:
: Restore
,
and
State
Section B.4.112:
: Store
,
and
State
Section B.4.113:
: Extract Exponent and Significand
Section B.4.114:
,
: Compute Y times Log2(X) or Log2(X+1)
Section B.4.115:
: Halt Processor
Section B.4.116:
: Insert Bit String
Section B.4.117:
: Signed Integer Divide
Section B.4.118:
: Signed Integer Multiply
Section B.4.119:
: Input from I/O Port
Section B.4.120:
: Increment Integer
Section B.4.121:
,
,
: Input String from I/O Port
Section B.4.122:
: Software Interrupt
Section B.4.123:
,
,
,
: Breakpoints
Section B.4.124:
: Interrupt if Overflow
Section B.4.125:
: Invalidate Internal Caches
Section B.4.126:
: Invalidate TLB Entry
Section B.4.127:
,
,
: Return from Interrupt
Section B.4.128:
: Conditional Branch
Section B.4.129:
,
: Jump if CX/ECX Zero
Section B.4.130:
: Jump
Section B.4.131:
: Load AH from Flags
Section B.4.132:
: Load Access Rights
Section B.4.133:
: Load Streaming SIMD Extension Control/Status
Section B.4.134:
,
,
,
,
: Load Far Pointer
Section B.4.135:
: Load Effective Address
Section B.4.136:
: Destroy Stack Frame
Section B.4.137:
: Load Fence
Section B.4.138:
,
,
: Load Descriptor Tables
Section B.4.139:
: Load/Store Machine Status Word
Section B.4.140:
,
: Load Processor State
Section B.4.141:
,
,
: Load from String
Section B.4.142:
,
,
,
,
: Loop with Counter
Section B.4.143:
: Load Segment Limit
Section B.4.144:
: Load Task Register
Section B.4.145:
: Byte Mask Write
Section B.4.146:
: Byte Mask Write
Section B.4.147:
: Return Packed Double-Precision FP Maximum
Section B.4.148:
: Return Packed Single-Precision FP Maximum
Section B.4.149:
: Return Scalar Double-Precision FP Maximum
Section B.4.150:
: Return Scalar Single-Precision FP Maximum
Section B.4.151:
: Memory Fence
Section B.4.152:
: Return Packed Double-Precision FP Minimum
Section B.4.153:
: Return Packed Single-Precision FP Minimum
Section B.4.154:
: Return Scalar Double-Precision FP Minimum
Section B.4.155:
: Return Scalar Single-Precision FP Minimum
Section B.4.156:
: Move Data
Section B.4.157:
: Move Aligned Packed Double-Precision FP Values
Section B.4.158:
: Move Aligned Packed Single-Precision FP Values
Section B.4.159:
: Move Doubleword to/from MMX Register
Section B.4.160:
: Move Quadword from XMM to MMX register.
Section B.4.161:
: Move Aligned Double Quadword
Section B.4.162:
: Move Unaligned Double Quadword
Section B.4.163:
: Move Packed Single-Precision FP High to Low
Section B.4.164:
: Move High Packed Double-Precision FP
Section B.4.165:
: Move High Packed Single-Precision FP
Section B.4.166:
: Move Packed Single-Precision FP Low to High
Section B.4.167:
: Move Low Packed Double-Precision FP
Section B.4.168:
: Move Low Packed Single-Precision FP
Section B.4.169:
: Extract Packed Double-Precision FP Sign Mask
Section B.4.170:
: Extract Packed Single-Precision FP Sign Mask
Section B.4.171:
: Move Double Quadword Non Temporal
Section B.4.172:
: Move Doubleword Non Temporal
Section B.4.173:
: Move Aligned Four Packed Single-Precision FP Values Non Temporal
Section B.4.174:
: Move Aligned Four Packed Single-Precision FP Values Non Temporal
Section B.4.175:
: Move Quadword Non Temporal
Section B.4.176:
: Move Quadword to/from MMX Register
Section B.4.177:
: Move Quadword from MMX to XMM register.
Section B.4.178:
,
,
: Move String
Section B.4.179:
: Move Scalar Double-Precision FP Value
Section B.4.180:
: Move Scalar Single-Precision FP Value
Section B.4.181:
,
: Move Data with Sign or Zero Extend
Section B.4.182:
: Move Unaligned Packed Double-Precision FP Values
Section B.4.183:
: Move Unaligned Packed Single-Precision FP Values
Section B.4.184:
: Unsigned Integer Multiply
Section B.4.185:
: Packed Single-FP Multiply
Section B.4.186:
: Packed Single-FP Multiply
Section B.4.187:
: Scalar Single-FP Multiply
Section B.4.188:
: Scalar Single-FP Multiply
Section B.4.189:
,
: Two's and One's Complement
Section B.4.190:
: No Operation
Section B.4.191:
: Bitwise OR
Section B.4.192:
: Bit-wise Logical OR of Double-Precision FP Data
Section B.4.193:
: Bit-wise Logical OR of Single-Precision FP Data
Section B.4.194:
: Output Data to I/O Port
Section B.4.195:
,
,
: Output String to I/O Port
Section B.4.196:
,
,
: Pack Data
Section B.4.197:
,
,
: Add Packed Integers
Section B.4.198:
: Add Packed Quadword Integers
Section B.4.199:
,
: Add Packed Signed Integers With Saturation
Section B.4.200:
: MMX Packed Addition to Implicit Destination
Section B.4.201:
,
: Add Packed Unsigned Integers With Saturation
Section B.4.202:
,
: MMX Bitwise AND and AND-NOT
Section B.4.203:
: Spin Loop Hint
Section B.4.204:
: MMX Packed Average
Section B.4.205:
: Average Packed Integers
Section B.4.206:
: Average of unsigned packed 8-bit values
Section B.4.207:
: Compare Packed Integers.
Section B.4.208:
: MMX Packed Distance and Accumulate with Implied Register
Section B.4.209:
: Extract Word
Section B.4.210:
: Packed Single-Precision FP to Integer Convert
Section B.4.211:
: Packed Single-Precision FP to Integer Word Convert
Section B.4.212:
: Packed Single-Precision FP Accumulate
Section B.4.213:
: Packed Single-Precision FP Addition
Section B.4.214:
: Packed Single-Precision FP Compare
Section B.4.215:
: Packed Single-Precision FP Maximum
Section B.4.216:
: Packed Single-Precision FP Minimum
Section B.4.217:
: Packed Single-Precision FP Multiply
Section B.4.218:
: Packed Single-Precision FP Negative Accumulate
Section B.4.219:
: Packed Single-Precision FP Mixed Accumulate
Section B.4.220:
: Packed Single-Precision FP Reciprocal Approximation
Section B.4.221:
: Packed Single-Precision FP Reciprocal, First Iteration Step
Section B.4.222:
: Packed Single-Precision FP Reciprocal/ Reciprocal Square Root, Second Iteration Step
Section B.4.223:
: Packed Single-Precision FP Reciprocal Square Root, First Iteration Step
Section B.4.224:
: Packed Single-Precision FP Reciprocal Square Root Approximation
Section B.4.225:
: Packed Single-Precision FP Subtract
Section B.4.226:
: Packed Single-Precision FP Reverse Subtract
Section B.4.227:
: Packed Doubleword Integer to Single-Precision FP Convert
Section B.4.228:
: Packed Word Integer to Single-Precision FP Convert
Section B.4.229:
: Insert Word
Section B.4.230:
: Packed Multiply and Accumulate with Rounding
Section B.4.231:
: MMX Packed Multiply and Add
Section B.4.232:
: MMX Packed Magnitude
Section B.4.233:
: Packed Signed Integer Word Maximum
Section B.4.234:
: Packed Unsigned Integer Byte Maximum
Section B.4.235:
: Packed Signed Integer Word Minimum
Section B.4.236:
: Packed Unsigned Integer Byte Minimum
Section B.4.237:
: Move Byte Mask To Integer
Section B.4.238:
,
: Multiply Packed 16-bit Integers With Rounding, and Store High Word
Section B.4.239:
: Multiply Packed 16-bit Integers With Rounding, and Store High Word
Section B.4.240:
: Multiply Packed 16-bit Integers, and Store High Word
Section B.4.241:
,
: Multiply Packed 16-bit Integers, and Store
Section B.4.242:
: Multiply Packed Unsigned 32-bit Integers, and Store.
Section B.4.243:
: MMX Packed Conditional Move
Section B.4.244:
: Pop Data from Stack
Section B.4.245:
: Pop All General-Purpose Registers
Section B.4.246:
: Pop Flags Register
Section B.4.247:
: MMX Bitwise OR
Section B.4.248:
: Prefetch Data Into Caches
Section B.4.249:
: Prefetch Data Into Caches
Section B.4.250:
: Packed Sum of Absolute Differences
Section B.4.251:
: Shuffle Packed Doublewords
Section B.4.252:
: Shuffle Packed High Words
Section B.4.253:
: Shuffle Packed Low Words
Section B.4.254:
: Shuffle Packed Words
Section B.4.255:
: Packed Data Bit Shift Left Logical
Section B.4.256:
: Packed Data Bit Shift Right Arithmetic
Section B.4.257:
: Packed Data Bit Shift Right Logical
Section B.4.258:
: Subtract Packed Integers
Section B.4.259:
,
: Subtract Packed Integers With Saturation
Section B.4.260:
: MMX Packed Subtract with Saturation to Implied Destination
Section B.4.261:
: Swap Packed Data
Section B.4.262:
: Unpack and Interleave Data
Section B.4.263:
: Push Data on Stack
Section B.4.264:
: Push All General-Purpose Registers
Section B.4.265:
: Push Flags Register
Section B.4.266:
: MMX Bitwise XOR
Section B.4.267:
,
: Bitwise Rotate through Carry Bit
Section B.4.268:
: Packed Single-Precision FP Reciprocal
Section B.4.269:
: Scalar Single-Precision FP Reciprocal
Section B.4.270:
: Read Model-Specific Registers
Section B.4.271:
: Read Performance-Monitoring Counters
Section B.4.272:
: Read SMM Header Pointer Register
Section B.4.273:
: Read Time-Stamp Counter
Section B.4.274:
,
,
: Return from Procedure Call
Section B.4.275:
,
: Bitwise Rotate
Section B.4.276:
: Restore Segment Register and Descriptor
Section B.4.277:
: Restore Segment Register and Descriptor
Section B.4.278:
: Resume from System-Management Mode
Section B.4.279:
: Packed Single-Precision FP Square Root Reciprocal
Section B.4.280:
: Scalar Single-Precision FP Square Root Reciprocal
Section B.4.281:
: Restore TSR and Descriptor
Section B.4.282:
: Store AH to Flags
Section B.4.283:
,
: Bitwise Arithmetic Shifts
Section B.4.284:
: Set AL from Carry Flag
Section B.4.285:
: Subtract with Borrow
Section B.4.286:
,
,
: Scan String
Section B.4.287:
: Set Register from Condition
Section B.4.288:
: Store Fence
Section B.4.289:
,
,
: Store Descriptor Table Pointers
Section B.4.290:
,
: Bitwise Logical Shifts
Section B.4.291:
,
: Bitwise Double-Precision Shifts
Section B.4.292:
: Shuffle Packed Double-Precision FP Values
Section B.4.293:
: Shuffle Packed Single-Precision FP Values
Section B.4.294:
: System Management Interrupt
Section B.4.295:
,
: Software SMM Entry (CYRIX)
Section B.4.296:
: Store Machine Status Word
Section B.4.297:
: Packed Double-Precision FP Square Root
Section B.4.298:
: Packed Single-Precision FP Square Root
Section B.4.299:
: Scalar Double-Precision FP Square Root
Section B.4.300:
: Scalar Single-Precision FP Square Root
Section B.4.301:
,
,
: Set Flags
Section B.4.302:
: Store Streaming SIMD Extension Control/Status
Section B.4.303:
,
,
: Store Byte to String
Section B.4.304:
: Store Task Register
Section B.4.305:
: Subtract Integers
Section B.4.306:
: Packed Double-Precision FP Subtract
Section B.4.307:
: Packed Single-Precision FP Subtract
Section B.4.308:
: Scalar Single-FP Subtract
Section B.4.309:
: Scalar Single-FP Subtract
Section B.4.310:
: Save Segment Register and Descriptor
Section B.4.311:
: Save LDTR and Descriptor
Section B.4.312:
: Save TSR and Descriptor
Section B.4.313:
: Call Operating System
Section B.4.314:
: Fast System Call
Section B.4.315:
: Fast Return From System Call
Section B.4.316:
: Return From Operating System
Section B.4.317:
: Test Bits (notional bitwise AND)
Section B.4.318:
: Unordered Scalar Double-Precision FP compare and set EFLAGS
Section B.4.319:
: Unordered Scalar Single-Precision FP compare and set EFLAGS
Section B.4.320:
,
,
: Undefined Instruction
Section B.4.321:
: User Move Data
Section B.4.322:
: Unpack and Interleave High Packed Double-Precision FP Values
Section B.4.323:
: Unpack and Interleave High Packed Single-Precision FP Values
Section B.4.324:
: Unpack and Interleave Low Packed Double-Precision FP Data
Section B.4.325:
: Unpack and Interleave Low Packed Single-Precision FP Data
Section B.4.326:
,
: Verify Segment Readability/Writability
Section B.4.327:
: Wait for Floating-Point Processor
Section B.4.328:
: Write Back and Invalidate Cache
Section B.4.329:
: Write Model-Specific Registers
Section B.4.330:
: Write SMM Header Pointer Register
Section B.4.331:
: Exchange and Add
Section B.4.332:
: Extract Bit String
Section B.4.333:
: Exchange
Section B.4.334:
: Translate Byte in Lookup Table
Section B.4.335:
: Bitwise Exclusive OR
Section B.4.336:
: Bitwise Logical XOR of Double-Precision FP Values
Section B.4.337:
: Bitwise Logical XOR of Single-Precision FP Values