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 
Section 2.1.2: The 
Section 2.1.3: The 
Section 2.1.4: The 
Section 2.1.5: The 
Section 2.1.6: The 
Section 2.1.7: The 
Section 2.1.8: The 
Section 2.1.9: The 
Section 2.1.10: The 
Section 2.1.11: The 
Section 2.1.12: The 
Section 2.1.13: The 
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: 
Section 3.2.2: 
Section 3.2.3: 
Section 3.2.4: 
Section 3.2.5: 
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: 
Section 3.5.2: 
Section 3.5.3: 
Section 3.5.4: 
Section 3.5.5: 
Section 3.5.6: 
Section 3.5.7: Unary Operators: 
Section 3.6: 
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: Multi-Line Macros: 
Section 4.2.1: Overloading Multi-Line Macros
Section 4.2.2: Macro-Local Labels
Section 4.2.3: Greedy Macro Parameters
Section 4.2.4: Default Macro Parameters
Section 4.2.5: 
Section 4.2.6: 
Section 4.2.7: Concatenating Macro Parameters
Section 4.2.8: Condition Codes as Macro Parameters
Section 4.2.9: Disabling Listing Expansion
Section 4.3: Conditional Assembly
Section 4.3.1: 
Section 4.3.2: 
Section 4.3.3: 
Section 4.3.4: 
Section 4.3.5: 
Section 4.3.6: 
Section 4.4: Preprocessor Loops: 
Section 4.5: Including Other Files
Section 4.6: The Context Stack
Section 4.6.1: 
Section 4.6.2: Context-Local Labels
Section 4.6.3: Context-Local Single-Line Macros
Section 4.6.4: 
Section 4.6.5: Example Use of the Context Stack: Block IFs
Section 4.7: Standard Macros
Section 4.7.1: 
Section 4.7.2: 
Section 4.7.3: 
Section 4.7.4: 
Section 4.7.5: 
Chapter 5: Assembler Directives
Section 5.1: 
Section 5.2: 
Section 5.2.1: The 
Section 5.3: 
Section 5.4: 
Section 5.5: 
Section 5.6: 
Chapter 6: Output Formats
Section 6.1: 
Section 6.1.1: 
Section 6.1.2: 
Section 6.2: 
Section 6.2.1: 
Section 6.2.2: 
Section 6.2.3: 
Section 6.2.4: 
Section 6.2.5: 
Section 6.2.6: 
Section 6.2.7: 
Section 6.2.8: 
Section 6.3: 
Section 6.3.1: 
Section 6.4: 
Section 6.5: 
Section 6.5.1: 
Section 6.5.2: Position-Independent Code: 
Section 6.5.3: 
Section 6.5.4: 
Section 6.6: 
Section 6.7: 
Section 6.8: 
Section 6.9: 
Section 6.9.1: Requiring a Library: The 
Section 6.10: 
Chapter 7: Writing 16-bit Code (DOS, Windows 3/3.1)
Section 7.1: Producing 
Section 7.1.1: Using the 
Section 7.1.2: Using the 
Section 7.2: Producing 
Section 7.2.1: Using the 
Section 7.2.2: Using the 
Section 7.3: Producing 
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: 
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 
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: 
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: 
Section 10.1.4: 
Section 10.2: Bugs
Appendix A: Intel x86 Instruction Reference
Section A.1: Key to Operand Specifications
Section A.2: Key to Opcode Descriptions
Section A.2.1: Register Values
Section A.2.2: Condition Codes
Section A.2.3: Effective Address Encoding: ModR/M and SIB
Section A.3: Key to Instruction Flags
Section A.4: 
Section A.5: 
Section A.6: 
Section A.7: 
Section A.8: 
Section A.9: 
Section A.10: 
Section A.11: 
Section A.12: 
Section A.13: 
Section A.14: 
Section A.15: 
Section A.16: 
Section A.17: 
Section A.18: 
Section A.19: 
Section A.20: 
Section A.21: 
Section A.22: 
Section A.23: 
Section A.24: 
Section A.25: 
Section A.26: 
Section A.27: 
Section A.28: 
Section A.29: 
Section A.30: 
Section A.31: 
Section A.32: 
Section A.33: 
Section A.34: 
Section A.35: 
Section A.36: 
Section A.37: 
Section A.38: 
Section A.39: 
Section A.40: 
Section A.41: 
Section A.42: 
Section A.43: 
Section A.44: 
Section A.45: 
Section A.46: 
Section A.47: 
Section A.48: 
Section A.49: 
Section A.50: 
Section A.51: 
Section A.52: 
Section A.53: 
Section A.54: 
Section A.55: 
Section A.56: 
Section A.57: 
Section A.58: 
Section A.59: 
Section A.60: 
Section A.61: 
Section A.62: 
Section A.63: 
Section A.64: 
Section A.65: 
Section A.66: 
Section A.67: 
Section A.68: 
Section A.69: 
Section A.70: 
Section A.71: 
Section A.72: 
Section A.73: 
Section A.74: 
Section A.75: 
Section A.76: 
Section A.77: 
Section A.78: 
Section A.79: 
Section A.80: 
Section A.81: 
Section A.82: 
Section A.83: 
Section A.84: 
Section A.85: 
Section A.86: 
Section A.87: 
Section A.88: 
Section A.89: 
Section A.90: 
Section A.91: 
Section A.92: 
Section A.93: 
Section A.94: 
Section A.95: 
Section A.96: 
Section A.97: 
Section A.98: 
Section A.99: 
Section A.100: 
Section A.101: 
Section A.102: 
Section A.103: 
Section A.104: 
Section A.105: 
Section A.106: 
Section A.107: 
Section A.108: 
Section A.109: 
Section A.110: 
Section A.111: 
Section A.112: 
Section A.113: 
Section A.114: 
Section A.115: 
Section A.116: 
Section A.117: 
Section A.118: 
Section A.119: 
Section A.120: 
Section A.121: 
Section A.122: 
Section A.123: 
Section A.124: 
Section A.125: 
Section A.126: 
Section A.127: 
Section A.128: 
Section A.129: 
Section A.130: 
Section A.131: 
Section A.132: 
Section A.133: 
Section A.134: 
Section A.135: 
Section A.136: 
Section A.137: 
Section A.138: 
Section A.139: 
Section A.140: 
Section A.141: 
Section A.142: 
Section A.143: 
Section A.144: 
Section A.145: 
Section A.146: 
Section A.147: 
Section A.148: 
Section A.149: 
Section A.150: 
Section A.151: 
Section A.152: 
Section A.153: 
Section A.154: 
Section A.155: 
Section A.156: 
Section A.157: 
Section A.158: 
Section A.159: 
Section A.160: 
Section A.161: 
Section A.162: 
Section A.163: 
Section A.164: 
Section A.165: 
Section A.166: 
Section A.167: 
Section A.168: 
Section A.169: 
Section A.170: