# The Netwide Assembler: NASM

Contents

`!=` operator: Section 4.4.4
`$$` token: Section 3.5, Section 6.5.2
`$`, Here token: Section 3.5
`$`, prefix: Section 3.1, Section 3.4.1, Section 6.9.2
`%` operator: Section 3.5.6
`%!`: Section 4.10.2
`%$` and `%$$` prefixes: Section 4.7.2
`%%` operator: Section 3.5.6, Section 4.3.2
`%+`: Section 4.1.3
`%+1` and `%-1` syntax: Section 4.3.8
`%0` parameter count: Section 4.3.4, Section 4.3.5
`&` operator: Section 3.5.3
`&&` operator: Section 4.4.4
`*` operator: Section 3.5.6
`+` modifier: Section 4.3.3
`+` operator, binary: Section 3.5.5
`+` operator, unary: Section 3.5.7
`-` operator, binary: Section 3.5.5
`-` operator, unary: Section 3.5.7
`..@` symbol prefix: Section 3.9, Section 4.3.2
`/` operator: Section 3.5.6
`//` operator: Section 3.5.6
`<` operator: Section 4.4.4
`<<` operator: Section 3.5.4
`<=` operator: Section 4.4.4
`<>` operator: Section 4.4.4
`=` operator: Section 4.4.4
`==` operator: Section 4.4.4
`>` operator: Section 4.4.4
`>=` operator: Section 4.4.4
`>>` operator: Section 3.5.4
`?` MASM syntax: Section 3.2.2
`^` operator: Section 3.5.2
`^^` operator: Section 4.4.4
`|` operator: Section 3.5.1
`||` operator: Section 4.4.4
`~` operator: Section 3.5.7
`-a` option: Section 2.1.15, Section A.3.3
`a16`: Section 9.3, Section B.4.27, Section B.4.121, Section B.4.141, Section B.4.178, Section B.4.195, Section B.4.244, Section B.4.263, Section B.4.286, Section B.4.303, Section B.4.334
`a32`: Section 9.3, Section B.4.27, Section B.4.121, Section B.4.141, Section B.4.178, Section B.4.195, Section B.4.244, Section B.4.263, Section B.4.286, Section B.4.303, Section B.4.334
`a86`: Section 1.1.1, Section 2.2, Section 2.2.2, Section 2.2.6
`AAA`: Section B.4.1
`AAD`: Section B.4.1
`AAM`: Section B.4.1
`AAS`: Section B.4.1
`ABSOLUTE`: Section 5.3, Section 6.2.1
`ADC`: Section B.4.2
`ADD`: Section B.4.3
addition: Section 3.5.5
`ADDPD`: Section B.4.4
`ADDPS`: Section B.4.5
addressing, mixed-size: Section 9.2
address-size prefixes: Section 3.1
`ADDSD`: Section B.4.6
`ADDSS`: Section B.4.7
algebra: Section 3.3
`ALIGN`: Section 4.8.7, Section 6.1.2, Section 6.2.1
`ALIGNB`: Section 4.8.7
alignment, in `bin` sections: Section 6.1.2
alignment, in `elf` sections: Section 6.5.1
alignment, in `obj` sections: Section 6.2.1
alignment, in `win32` sections: Section 6.3.1
alignment, of `elf` common variables: Section 6.5.4
`ALINK`: Section 7.1.1
`alink.sourceforge.net`: Section 7.1.1
`alloc`: Section 6.5.1
`alt.lang.asm`: Section 1.1.1, Section 1.2
ambiguity: Section 2.2.3
`AND`: Section B.4.8
`ANDNPD`: Section B.4.9
`ANDNPS`: Section B.4.10
`ANDPD`: Section B.4.11
`ANDPS`: Section B.4.12
`a.out`, BSD version: Section 6.7
`a.out`, Linux version: Section 6.6
`aout`: Section 2.1.1, Section 6.6
`aoutb`: Section 6.7, Section 8.2
`%arg`: Section 4.9.1
`arg`: Section 7.4.5, Section 8.1.4
`ARPL`: Section B.4.13
`as86`: Section 1.1.1, Section 2.1.1, Section 6.8
assembler directives: Chapter 5
assembly passes: Section 3.8
assembly-time options: Section 2.1.12
`%assign`: Section 4.1.5
`ASSUME`: Section 2.2.4
`AT`: Section 4.8.6
Autoconf: Section 1.3.2
`autoexec.bat`: Section 1.3.1
`auto-sync`: Section A.3.3
`-b`: Section A.3
bin: Section 2.1.1, Section 2.1.2, Section 6.1
bin, multisection: Section 6.1.3
binary: Section 3.4.1
binary files: Section 3.2.3
16-bit mode, versus 32-bit mode: Section 5.1
bit shift: Section 3.5.4
`BITS`: Section 5.1, Section 6.1
bitwise AND: Section 3.5.3
bitwise OR: Section 3.5.1
bitwise XOR: Section 3.5.2
block IFs: Section 4.7.5
boot loader: Section 6.1
boot sector: Section 10.1.3
Borland, Pascal: Section 7.5
Borland, Win32 compilers: Section 6.2
`BOUND`: Section B.4.14
braces, after `%` sign: Section 4.3.7
braces, around macro parameters: Section 4.3
BSD: Section 8.2
`BSF`: Section B.4.15
`BSR`: Section B.4.15
`.bss`: Section 6.5.1, Section 6.6, Section 6.7, Section 6.8, Section 6.9
`BSWAP`: Section B.4.16
`BT`: Section B.4.17
`BTC`: Section B.4.17
`BTR`: Section B.4.17
`BTS`: Section B.4.17
bugs: Section 10.2
`bugtracker`: Section 10.2
`BYTE`: Section 10.1.1
C calling convention: Section 7.4.3, Section 8.1.2
C symbol names: Section 7.4.1
`CALL`: Section B.4.18
`CALL FAR`: Section 3.6
case sensitivity: Section 2.2.1, Section 4.1.1, Section 4.1.2, Section 4.1.5, Section 4.3, Section 4.4.5, Section 6.2.3
`CBW`: Section B.4.19
`CDQ`: Section B.4.19
changing sections: Section 5.2
character constant: Section 3.2.1, Section 3.4.2
circular references: Section 4.1.1
`CLASS`: Section 6.2.1
`CLC`: Section B.4.20
`CLD`: Section B.4.20
`%clear`: Section 4.8
`CLFLUSH`: Section B.4.21
`CLI`: Section B.4.20
`CLTS`: Section B.4.20
`c16.mac`: Section 7.4.5, Section 7.5.3
`c32.mac`: Section 8.1.4
`CMC`: Section B.4.22
`CMOVcc`: Section B.4.23
`CMP`: Section B.4.24
`CMPccPD`: Section B.4.25
`CMPccPS`: Section B.4.26
`CMPccSD`: Section B.4.28
`CMPccSS`: Section B.4.29
`CMPEQPD`: Section B.4.25
`CMPEQPS`: Section B.4.26
`CMPEQSD`: Section B.4.28
`CMPEQSS`: Section B.4.29
`CMPLEPD`: Section B.4.25
`CMPLEPS`: Section B.4.26
`CMPLESD`: Section B.4.28
`CMPLESS`: Section B.4.29
`CMPLTPD`: Section B.4.25
`CMPLTPS`: Section B.4.26
`CMPLTSD`: Section B.4.28
`CMPLTSS`: Section B.4.29
`CMPNEQPD`: Section B.4.25
`CMPNEQPS`: Section B.4.26
`CMPNEQSD`: Section B.4.28
`CMPNEQSS`: Section B.4.29
`CMPNLEPD`: Section B.4.25
`CMPNLEPS`: Section B.4.26
`CMPNLESD`: Section B.4.28
`CMPNLESS`: Section B.4.29
`CMPNLTPD`: Section B.4.25
`CMPNLTPS`: Section B.4.26
`CMPNLTSD`: Section B.4.28
`CMPNLTSS`: Section B.4.29
`CMPORDPD`: Section B.4.25
`CMPORDPS`: Section B.4.26
`CMPORDSD`: Section B.4.28
`CMPORDSS`: Section B.4.29
`CMPSB`: Section B.4.27
`CMPSD`: Section B.4.27
`CMPSW`: Section B.4.27
`CMPUNORDPD`: Section B.4.25
`CMPUNORDPS`: Section B.4.26
`CMPUNORDSD`: Section B.4.28
`CMPUNORDSS`: Section B.4.29
`CMPXCHG`: Section B.4.30
`CMPXCHG486`: Section B.4.30
`CMPXCHG8B`: Section B.4.31
`coff`: Section 2.1.1, Section 6.4
colon: Section 3.1
`.COM`: Section 6.1, Section 7.2
`COMISD`: Section B.4.32
`COMISS`: Section B.4.33
command-line: Section 2.1, Chapter 6
commas in macro parameters: Section 4.3.3
`COMMON`: Section 5.6, Section 6.2.1
`COMMON`, `elf` extensions to: Section 6.5.4
`COMMON`, `obj` extensions to: Section 6.2.8
Common Object File Format: Section 6.4
common variables: Section 5.6
common variables, alignment in `elf`: Section 6.5.4
common variables, element size: Section 6.2.8
`comp.lang.asm.x86`: Section 1.1.1, Section 1.2
`comp.os.linux.announce`: Section 1.2
`comp.os.msdos.programmer`: Section 7.3
concatenating macro parameters: Section 4.3.7
condition codes: Section B.2.2
condition codes as macro parameters: Section 4.3.8
condition predicates: Section B.4.25, Section B.4.26, Section B.4.28, Section B.4.29
conditional assembly: Section 4.4
conditional jump: Section B.4.128
conditional jumps: Section 10.1.2
conditional-return macro: Section 4.3.8
`configure`: Section 1.3.2
constants: Section 3.4
context stack: Section 4.7, Section 4.7.5
context-local labels: Section 4.7.2
context-local single-line macros: Section 4.7.3
control registers: Section B.2.1
counting macro parameters: Section 4.3.5
`CPU`: Section 5.7
`CPUID`: Section 3.4.2, Section B.4.34
creating contexts: Section 4.7.1
critical expression: Section 3.2.2, Section 3.2.4, Section 3.8, Section 4.1.5, Section 5.3
`CVTDQ2PD`: Section B.4.35
`CVTDQ2PS`: Section B.4.36
`CVTPD2DQ`: Section B.4.37
`CVTPD2PI`: Section B.4.38
`CVTPD2PS`: Section B.4.39
`CVTPI2PD`: Section B.4.40
`CVTPI2PS`: Section B.4.41
`CVTPS2DQ`: Section B.4.42
`CVTPS2PD`: Section B.4.43
`CVTPS2PI`: Section B.4.44
`CVTSD2SI`: Section B.4.45
`CVTSD2SS`: Section B.4.46
`CVTSI2SD`: Section B.4.47
`CVTSI2SS`: Section B.4.48
`CVTSS2SD`: Section B.4.49
`CVTSS2SI`: Section B.4.50
`CVTTPD2DQ`: Section B.4.51
`CVTTPD2PI`: Section B.4.52
`CVTTPS2DQ`: Section B.4.53
`CVTTPS2PI`: Section B.4.54
`CVTTSD2SI`: Section B.4.55
`CVTTSS2SI`: Section B.4.56
`CWD`: Section B.4.19
`CWDE`: Section B.4.19
`-D` option: Section 2.1.12
`-d` option: Section 2.1.12
`DAA`: Section B.4.57
`DAS`: Section B.4.57
`.data`: Section 6.5.1, Section 6.6, Section 6.7, Section 6.8, Section 6.9
`_DATA`: Section 7.4.2
`data`: Section 6.5.3, Section 6.9.3
data structure: Section 7.4.4, Section 8.1.3
`DB`: Section 3.2, Section 3.2.1, Section 3.4.3
`dbg`: Section 6.10
`DD`: Section 3.2, Section 3.2.1, Section 3.4.3, Section 3.4.4
debug information: Section 2.1.6
debug information format: Section 2.1.5
debug registers: Section B.2.1
`DEC`: Section B.4.58
declaring structures: Section 4.8.5
default macro parameters: Section 4.3.4
default name: Chapter 6
default-`WRT` mechanism: Section 6.2.7
`%define`: Section 2.1.12, Section 4.1.1
defining sections: Section 5.2
design goals: Section 2.2.2
DevPac: Section 3.2.3, Section 3.9
disabling listing expansion: Section 4.3.9
`DIV`: Section B.4.59
division: Section 3.5.6
`DIVPD`: Section B.4.60
`DIVPS`: Section B.4.61
`DIVSD`: Section B.4.62
`DIVSS`: Section B.4.63
DJGPP: Section 6.4, Chapter 8
`djlink`: Section 7.1.1
DLL symbols, exporting: Section 6.2.5
DLL symbols, importing: Section 6.2.4
DOS: Section 1.3.1, Section 2.1.8, Section 2.1.9
DOS archive: Section 1.3.1
DOS source archive: Section 1.3.1
`DQ`: Section 3.2, Section 3.2.1, Section 3.4.3, Section 3.4.4
`.drectve`: Section 6.3.1
`DT`: Section 3.2, Section 3.2.1, Section 3.4.3, Section 3.4.4
`DUP`: Section 2.2.7, Section 3.2.5
`DW`: Section 3.2, Section 3.2.1, Section 3.4.3
`DWORD`: Section 3.1
`-E` option: Section 2.1.8
`-e` option: Section 2.1.14, Section A.3.4
effective addresses: Section 3.1, Section 3.3, Section 3.8, Section B.2.5
element size, in common variables: Section 6.2.8
ELF: Section 2.1.1, Section 6.5
ELF, shared libraries: Section 6.5.2
ELF, 16-bit code and: Section 6.5.5
`%elif`: Section 4.4, Section 4.4.4
`%elifctx`: Section 4.4.3
`%elifdef`: Section 4.4.1
`%elifid`: Section 4.4.6
`%elifidn`: Section 4.4.5
`%elifidni`: Section 4.4.5
`%elifmacro`: Section 4.4.2
`%elifnctx`: Section 4.4.3
`%elifndef`: Section 4.4.1
`%elifnid`: Section 4.4.6
`%elifnidn`: Section 4.4.5
`%elifnidni`: Section 4.4.5
`%elifnmacro`: Section 4.4.2
`%elifnnum`: Section 4.4.6
`%elifnstr`: Section 4.4.6
`%elifnum`: Section 4.4.6
`%elifstr`: Section 4.4.6
`%else`: Section 4.4
e-mail: Section 1.2
`EMMS`: Section B.4.64
`endproc`: Section 7.4.5, Section 8.1.4
`%endrep`: Section 4.5
`ENDSTRUC`: Section 4.8.5, Section 5.3
`ENTER`: Section B.4.65
environment: Section 2.1.22
`EQU`: Section 3.2, Section 3.2.4, Section 3.8
`%error`: Section 4.4.7
error messages: Section 2.1.8, Section 2.1.9
error reporting format: Section 2.1.7
`EVEN`: Section 4.8.7
`.EXE`: Section 6.2, Section 7.1
`EXE_begin`: Section 7.1.2
`EXE2BIN`: Section 7.2.2
`exebin.mac`: Section 7.1.2
`exec`: Section 6.5.1
Executable and Linkable Format: Section 6.5
`EXE_end`: Section 7.1.2
`EXE_stack`: Section 7.1.2
`%exitrep`: Section 4.5
`EXPORT`: Section 6.2.5
`export`: Section 6.9.3
exporting symbols: Section 5.5
expressions: Section 2.1.14, Section 3.5
extension: Section 2.1.1, Chapter 6
`EXTERN`: Section 5.4
`EXTERN`, `obj` extensions to: Section 6.2.7
`-F` option: Section 2.1.5
`-f` option: Section 2.1.2, Chapter 6
`FABS`: Section B.4.67
`FADD`: Section B.4.68
`FADDP`: Section B.4.68
far call: Section 2.2.5, Section B.4.18
far common variables: Section 6.2.8
far jump: Section B.4.130
far pointer: Section 3.6
`FARCODE`: Section 7.4.5, Section 7.5.3
`FBLD`: Section B.4.69
`FBSTP`: Section B.4.69
`FCHS`: Section B.4.70
`FCLEX`: Section B.4.71
`FCMOVcc`: Section B.4.72
`FCOM`: Section B.4.73
`FCOMI`: Section B.4.73
`FCOMIP`: Section B.4.73
`FCOMP`: Section B.4.73
`FCOMPP`: Section B.4.73
`FCOS`: Section B.4.74
`FDECSTP`: Section B.4.75
`FDIV`: Section B.4.77
`FDIVP`: Section B.4.77
`FDIVR`: Section B.4.77
`FDIVRP`: Section B.4.77
`FEMMS`: Section B.4.78
`FFREE`: Section B.4.79
`FIADD`: Section B.4.80
`FICOM`: Section B.4.81
`FICOMP`: Section B.4.81
`FIDIV`: Section B.4.82
`FIDIVR`: Section B.4.82
`FILD`: Section B.4.83
`__FILE__`: Section 4.8.4
`FIMUL`: Section B.4.84
`FINCSTP`: Section B.4.85
`FINIT`: Section B.4.86
`FIST`: Section B.4.83
`FISTP`: Section B.4.83
`FISUB`: Section B.4.87
`FLAT`: Section 6.2.1
flat memory model: Chapter 8
flat-form binary: Section 6.1
`FLD`: Section B.4.88
`FLDCW`: Section B.4.90
`FLDENV`: Section B.4.91
`FLDxx`: Section B.4.89
floating-point: Section 2.2.6, Section 3.1, Section 3.2.1, Section 3.4.4
floating-point, constants: Section 3.4.4
floating-point, registers: Section B.2.1
`FMUL`: Section B.4.92
`FMULP`: Section B.4.92
`FNINIT`: Section B.4.86
`FNOP`: Section B.4.93
`follows=`: Section 6.1.3
format-specific directives: Chapter 5
forward references: Section 3.8
`FPATAN`: Section B.4.94
`FPREM`: Section B.4.95
`FPREM1`: Section B.4.95
`FPTAN`: Section B.4.94
frame pointer: Section 7.4.3, Section 7.5.1, Section 8.1.2
FreeBSD: Section 6.7, Section 8.2
FreeLink: Section 7.1.1
`FRNDINT`: Section B.4.96
`FRSTOR`: Section B.4.97
`FSAVE`: Section B.4.97
`FSCALE`: Section B.4.98
`FSETPM`: Section B.4.99
`FSIN`: Section B.4.100
`FSINCOS`: Section B.4.100
`FSQRT`: Section B.4.101
`FST`: Section B.4.102
`FSTCW`: Section B.4.103
`FSTENV`: Section B.4.104
`FSTP`: Section B.4.102
`FSTSW`: Section B.4.105
`FSUB`: Section B.4.106
`FSUBP`: Section B.4.106
`FSUBR`: Section B.4.106
`FSUBRP`: Section B.4.106
`ftp.kernel.org`: Section 1.2
`ftp.simtel.net`: Section 7.1.1
`FTST`: Section B.4.107
`FUCOMxx`: Section B.4.108
`function`: Section 6.5.3, Section 6.9.3
functions, C calling convention: Section 7.4.3, Section 8.1.2
functions, Pascal calling convention: Section 7.5.1
`FXAM`: Section B.4.109
`FXCH`: Section B.4.110
`FxDISI`: Section B.4.76
`FxENI`: Section B.4.76
`F2XM1`: Section B.4.66
`FXRSTOR`: Section B.4.111
`FXSAVE`: Section B.4.112
`FXTRACT`: Section B.4.113
`FYL2X`: Section B.4.114
`FYL2XP1`: Section B.4.114
`-g` option: Section 2.1.6
`gas`: Section 1.1.1
`gcc`: Section 1.1.1
general purpose register: Section B.1
`GLOBAL`: Section 5.5
`GLOBAL`, `aoutb` extensions to: Section 6.5.3
`GLOBAL`, `elf` extensions to: Section 6.5.3
`GLOBAL`, `rdf` extensions to: Section 6.9.3
global offset table: Section 8.2
`_GLOBAL_OFFSET_TABLE_`: Section 6.5.2
`gnu-elf-extensions`: Section 2.1.18
`..got`: Section 6.5.2
`GOT` relocations: Section 8.2.3
GOT: Section 6.5.2, Section 8.2
`..gotoff`: Section 6.5.2
`GOTOFF` relocations: Section 8.2.2
`..gotpc`: Section 6.5.2
`GOTPC` relocations: Section 8.2.1
graphics: Section 3.2.3
greedy macro parameters: Section 4.3.3
`GROUP`: Section 6.2.2
groups: Section 3.6
`-h`: Section A.3
hex: Section 3.4.1
`HLT`: Section B.4.115
hybrid syntaxes: Section 2.2.2
`-I` option: Section 2.1.10
`-i` option: Section 2.1.10, Section A.3.3
`%iassign`: Section 4.1.5
`ibiblio.org`: Section 1.2
`IBTS`: Section B.4.116
`ICEBP`: Section B.4.123
`%idefine`: Section 4.1.1
`IDIV`: Section B.4.117
`IEND`: Section 4.8.6
`%if`: Section 4.4, Section 4.4.4
`%ifctx`: Section 4.4.3, Section 4.7.5
`%ifdef`: Section 4.4.1
`%ifid`: Section 4.4.6
`%ifidn`: Section 4.4.5
`%ifidni`: Section 4.4.5
`ifmacro`: Section 4.4.2
`%ifnctx`: Section 4.4.3
`%ifndef`: Section 4.4.1
`%ifnid`: Section 4.4.6
`%ifnidn`: Section 4.4.5
`%ifnidni`: Section 4.4.5
`%ifnmacro`: Section 4.4.2
`%ifnnum`: Section 4.4.6
`%ifnstr`: Section 4.4.6
`%ifnum`: Section 4.4.6
`%ifstr`: Section 4.4.6
`%imacro`: Section 4.3
immediate operand: Section B.1
`IMPORT`: Section 6.2.4
import library: Section 6.2.4
importing symbols: Section 5.4
`IMUL`: Section B.4.118
`IN`: Section B.4.119
`INC`: Section B.4.120
`INCBIN`: Section 3.2, Section 3.2.3, Section 3.4.3
`incbin`: Section 2.1.10
`%include`: Section 2.1.10, Section 2.1.11, Section 4.6
include search path: Section 2.1.10
including other files: Section 4.6
inefficient code: Section 10.1.1
infinite loop: Section 3.5
informational section: Section 6.3.1
`INSB`: Section B.4.121
`INSD`: Section B.4.121
`INSTALL`: Section 1.3.2
installing: Section 1.3.1
instances of structures: Section 4.8.6
`INSW`: Section B.4.121
`INT`: Section B.4.122
`INT01`: Section B.4.123
`INT1`: Section B.4.123
`INT3`: Section B.4.123
integer overflow: Section 3.5
Intel number formats: Section 3.4.4
`INTO`: Section B.4.124
`INVD`: Section B.4.125
`INVLPG`: Section B.4.126
`IRET`: Section B.4.127
`IRETD`: Section B.4.127
`IRETW`: Section B.4.127
`ISTRUC`: Section 4.8.6
iterating over macro parameters: Section 4.3.6
`Jcc`: Section B.4.128
`Jcc NEAR`: Section 10.1.2
`JCXZ`: Section B.4.129
`JECXZ`: Section B.4.129
`JMP`: Section B.4.130
`JMP DWORD`: Section 9.1
jumps, mixed-size: Section 9.1
`-k`: Section A.3.4
`-l` option: Section 2.1.3
label prefix: Section 3.9
`LAHF`: Section B.4.131
`LAR`: Section B.4.132
`ld86`: Section 6.8
`LDMXCSR`: Section B.4.133
`LDS`: Section B.4.134
`LEA`: Section B.4.135
`LEAVE`: Section B.4.136
`LES`: Section B.4.134
`LFENCE`: Section B.4.137
`LFS`: Section B.4.134
`LGDT`: Section B.4.138
`LGS`: Section B.4.134
`LIBRARY`: Section 6.9.1
licence: Section 1.1.2
`LIDT`: Section B.4.138
`%line`: Section 4.10.1
`__LINE__`: Section 4.8.4
linker, free: Section 7.1.1
Linux, `a.out`: Section 6.6
Linux, `as86`: Section 6.8
Linux, ELF: Section 6.5
listing file: Section 2.1.3
little-endian: Section 3.4.2
`LLDT`: Section B.4.138
`LMSW`: Section B.4.139
`LOADALL`: Section B.4.140
`LOADALL286`: Section B.4.140
`%local`: Section 4.9.3
local labels: Section 3.9
`LODSB`: Section B.4.141
`LODSD`: Section B.4.141
`LODSW`: Section B.4.141
logical AND: Section 4.4.4
logical OR: Section 4.4.4
logical XOR: Section 4.4.4
`LOOP`: Section B.4.142
`LOOPE`: Section B.4.142
`LOOPNE`: Section B.4.142
`LOOPNZ`: Section B.4.142
`LOOPZ`: Section B.4.142
`LSL`: Section B.4.143
`LSS`: Section B.4.134
`LTR`: Section B.4.144
`-M` option: Section 2.1.4
`%macro`: Section 4.3
macro library: Section 2.1.10
macro processor: Chapter 4
macro-local labels: Section 4.3.2
`macro-params`: Section 2.1.18
macros: Section 3.2.5
`macro-selfref`: Section 2.1.18
`make`: Section 1.3.2
makefile dependencies: Section 2.1.4
makefiles: Section 1.3.1, Section 1.3.2
`Makefile.unx`: Section 1.3.2
man pages: Section 1.3.2
map files: Section 6.1.4
`MASKMOVDQU`: Section B.4.145
`MASKMOVQ`: Section B.4.146
`MASM`: Section 1.1.1
MASM: Section 2.2, Section 3.2.5, Section 6.2
`MAXPD`: Section B.4.147
`MAXPS`: Section B.4.148
`MAXSD`: Section B.4.149
`MAXSS`: Section B.4.150
memory models: Section 2.2.5, Section 7.4.2
memory operand: Section 3.1
memory references: Section 2.2.2, Section 3.3, Section B.1
`MFENCE`: Section B.4.151
Microsoft OMF: Section 6.2
Minix: Section 6.8
`MINPD`: Section B.4.152
`MINPS`: Section B.4.153
`MINSD`: Section B.4.154
`MINSS`: Section B.4.155
`misc` subdirectory: Section 7.1.2, Section 7.4.5, Section 8.1.4
mixed-language program: Section 7.4
mixed-size addressing: Section 9.2
mixed-size instruction: Section 9.1
MMX registers: Section B.2.1
ModR/M byte: Section B.2, Section B.2.5
`MODULE`: Section 6.9.2
modulo operators: Section 3.5.6
`MOV`: Section B.4.156
`MOVAPD`: Section B.4.157
`MOVAPS`: Section B.4.158
`MOVD`: Section B.4.159
`MOVDQA`: Section B.4.161
`MOVDQ2Q`: Section B.4.160
`MOVDQU`: Section B.4.162
`MOVHLPS`: Section B.4.163
`MOVHPD`: Section B.4.164
`MOVHPS`: Section B.4.165
`MOVLHPS`: Section B.4.166
`MOVLPD`: Section B.4.167
`MOVLPS`: Section B.4.168
`MOVMSKPD`: Section B.4.169
`MOVMSKPS`: Section B.4.170
`MOVNTDQ`: Section B.4.171
`MOVNTI`: Section B.4.172
`MOVNTPD`: Section B.4.173
`MOVNTPS`: Section B.4.174
`MOVNTQ`: Section B.4.175
`MOVQ`: Section B.4.176
`MOVQ2DQ`: Section B.4.177
`MOVSB`: Section B.4.178
`MOVSD`: Section B.4.178, Section B.4.179
`MOVSS`: Section B.4.180
`MOVSW`: Section B.4.178
`MOVSX`: Section B.4.181
`MOVUPD`: Section B.4.182
`MOVUPS`: Section B.4.183
`MOVZX`: Section B.4.181
MS-DOS: Section 6.1
MS-DOS device drivers: Section 7.3
`MUL`: Section B.4.184
`MULPD`: Section B.4.185
`MULPS`: Section B.4.186
`MULSD`: Section B.4.187
`MULSS`: Section B.4.188
multi-line macros: Section 2.1.18, Section 4.3
multipass optimization: Section 2.1.16
multiple section names: Section 6.1
multiplication: Section 3.5.6
`multipush` macro: Section 4.3.6
`Multisection`: Section 6.1.3
`nasm.1`: Section 1.3.2
NASM version: Section 4.8.1
nasm version id: Section 4.8.2
nasm version string: Section 4.8.3
`__NASMDEFSEG`: Section 6.2
`nasm-devel`: Section 1.2
`nasm.exe`: Section 1.3.1
`nasm -f <format> -y`: Section 2.1.5
`nasm -hf`: Section 2.1.2
`__NASM_MAJOR__`: Section 4.8.1
`__NASM_MINOR__`: Section 4.8.1
`nasm.out`: Section 2.1.1
`___NASM_PATCHLEVEL__`: Section 4.8.1
`__NASM_SUBMINOR__`: Section 4.8.1
`__NASM_VER__`: Section 4.8.3
`__NASM_VERSION_ID__`: Section 4.8.2
`nasmw.exe`: Section 1.3.1
`nasmXXXs.zip`: Section 1.3.1
`nasm-X.XX.tar.gz`: Section 1.3.2
`nasmXXX.zip`: Section 1.3.1
`ndisasm.1`: Section 1.3.2
ndisasm: Appendix A
`ndisasm.exe`: Section 1.3.1
`ndisasmw.exe`: Section 1.3.1
near call: Section 2.2.5, Section B.4.18
near common variables: Section 6.2.8
near jump: Section B.4.130
`NEG`: Section B.4.189
NetBSD: Section 6.7, Section 8.2
new releases: Section 1.2
`noalloc`: Section 6.5.1
`nobits`: Section 6.1.3, Section 6.5.1
`noexec`: Section 6.5.1
`.nolist`: Section 4.3.9
`NOP`: Section B.4.190
`NOT`: Section B.4.189
`nowait': Section 2.2.6
`nowrite`: Section 6.5.1
`number-overflow`: Section 2.1.18
numeric constants: Section 3.2.1, Section 3.4.1
`-o` option: Section 2.1.1, Section A.3.1
`o16`: Section 9.3, Section B.4.244, Section B.4.263
`o32`: Section 9.3, Section B.4.244, Section B.4.263
`.OBJ`: Section 7.1
`obj`: Section 2.1.1, Section 6.2
`object`: Section 6.5.3, Section 6.9.3
octal: Section 3.4.1
`OF_DBG`: Section 6.10
`OF_DEFAULT`: Section 2.1.2
`OFFSET`: Section 2.2.2
OMF: Section 6.2
omitted parameters: Section 4.3.4
`-On` option: Section 2.1.16
one's complement: Section 3.5.7
OpenBSD: Section 6.7, Section 8.2
operands: Section 3.1
operand-size prefixes: Section 3.1
operating system: Section 6.1
operating system, writing: Section 9.1
operators: Section 3.5
`OR`: Section B.4.191
`ORG`: Section 6.1.1, Section 7.2.1, Section 7.2.2, Section 10.1.3
`ORPD`: Section B.4.192
`orphan-labels`: Section 2.1.18, Section 3.1
`ORPS`: Section B.4.193
OS/2: Section 6.2, Section 6.2.1
other preprocessor directives: Section 4.10
`OUT`: Section B.4.194
out of range, jumps: Section 10.1.2
output file format: Section 2.1.2
output formats: Chapter 6
`OUTSB`: Section B.4.195
`OUTSD`: Section B.4.195
`OUTSW`: Section B.4.195
overlapping segments: Section 3.6
`OVERLAY`: Section 6.2.1
overloading, multi-line macros: Section 4.3.1
overloading, single-line macros: Section 4.1.1
`-P` option: Section 2.1.11
`-p` option: Section 2.1.11, Section 4.6
`PACKSSDW`: Section B.4.196
`PACKSSWB`: Section B.4.196
`PACKUSWB`: Section B.4.196
`PADDB`: Section B.4.197
`PADDD`: Section B.4.197
`PADDQ`: Section B.4.198
`PADDSB`: Section B.4.199
`PADDSIW`: Section B.4.200
`PADDSW`: Section B.4.199
`PADDUSB`: Section B.4.201
`PADDUSW`: Section B.4.201
`PADDW`: Section B.4.197
`PAND`: Section B.4.202
`PANDN`: Section B.4.202
paradox: Section 3.8
`PASCAL`: Section 7.5.3
Pascal calling convention: Section 7.5.1
passes, assembly: Section 3.8
`PATH`: Section 1.3.1
`PAUSE`: Section B.4.203
`PAVEB`: Section B.4.204
`PAVGB`: Section B.4.205
`PAVGUSB`: Section B.4.206
`PAVGW`: Section B.4.205
`PCMPxx`: Section B.4.207
`PDISTIB`: Section B.4.208
period: Section 3.9
Perl: Section 1.3.1
perverse: Section 2.1.10
`PEXTRW`: Section B.4.209
`PFACC`: Section B.4.212
`PFADD`: Section B.4.213
`PFCMPEQ`: Section B.4.214
`PFCMPGE`: Section B.4.214
`PFCMPGT`: Section B.4.214
`PFCMPxx`: Section B.4.214
`PF2ID`: Section B.4.210
`PF2IW`: Section B.4.211, Section B.4.228
`PFMAX`: Section B.4.215
`PFMIN`: Section B.4.216
`PFMUL`: Section B.4.217
`PFNACC`: Section B.4.218
`PFPNACC`: Section B.4.219
`PFRCP`: Section B.4.220
`PFRCPIT1`: Section B.4.221
`PFRCPIT2`: Section B.4.222
`PFRSQIT1`: Section B.4.223
`PFRSQRT`: Section B.4.224
`PFSUB`: Section B.4.225
`PFSUBR`: Section B.4.226
PharLap: Section 6.2.1
PIC: Section 6.5.2, Section 6.7, Section 8.2
`PI2FD`: Section B.4.227
`PINSRW`: Section B.4.229
`..plt`: Section 6.5.2
`PLT` relocations: Section 6.5.2, Section 8.2.4, Section 8.2.5
plt relocations: Section 8.2.5
`PMACHRIW`: Section B.4.230
`PMADDWD`: Section B.4.231
`PMAGW`: Section B.4.232
`PMAXSW`: Section B.4.233
`PMAXUB`: Section B.4.234
`PMINSW`: Section B.4.235
`PMINUB`: Section B.4.236
`PMOVMSKB`: Section B.4.237
`PMULHRIW`: Section B.4.238
`PMULHRWA`: Section B.4.239
`PMULHRWC`: Section B.4.238
`PMULHUW`: Section B.4.240
`PMULHW`: Section B.4.241
`PMULLW`: Section B.4.241
`PMULUDQ`: Section B.4.242
`PMVccZB`: Section B.4.243
`%pop`: Section 4.7, Section 4.7.1
`POP`: Section B.4.244
`POPAx`: Section B.4.245
`POPFx`: Section B.4.246
`POR`: Section B.4.247
position-independent code: Section 6.5.2, Section 6.7, Section 8.2
`--postfix`: Section 2.1.21
precedence: Section 3.5
pre-defining macros: Section 2.1.12, Section 4.1.1
preferred: Section 3.6
`PREFETCH`: Section B.4.248
`PREFETCHh`: Section B.4.249
`PREFETCHNTA`: Section B.4.249
`PREFETCHT0`: Section B.4.249
`PREFETCHT1`: Section B.4.249
`PREFETCHT2`: Section B.4.249
`--prefix`: Section 2.1.21
pre-including files: Section 2.1.11
preprocess-only mode: Section 2.1.14
preprocessor: Section 2.1.14, Section 2.1.15, Section 3.2.4, Section 3.5.6, Chapter 4
preprocessor expressions: Section 2.1.14
preprocessor loops: Section 4.5
preprocessor variables: Section 4.1.5
primitive directives: Chapter 5
`PRIVATE`: Section 6.2.1
`proc`: Section 6.9.3, Section 7.4.5, Section 8.1.4
procedure linkage table: Section 6.5.2, Section 8.2.4, Section 8.2.5
processor mode: Section 5.1
`progbits`: Section 6.1.3, Section 6.5.1
program entry point: Section 6.2.6, Section 7.1.1
program origin: Section 6.1.1
`PSADBW`: Section B.4.250
pseudo-instructions: Section 3.2
`PSHUFD`: Section B.4.251
`PSHUFHW`: Section B.4.252
`PSHUFLW`: Section B.4.253
`PSHUFW`: Section B.4.254
`PSLLx`: Section B.4.255
`PSRAx`: Section B.4.256
`PSRLx`: Section B.4.257
`PSUBSIW`: Section B.4.260
`PSUBSxx`: Section B.4.259
`PSUBUSx`: Section B.4.259
`PSUBx`: Section B.4.258
`PSWAPD`: Section B.4.261
`PSWAPW`: Section B.4.261
`PUBLIC`: Section 5.5, Section 6.2.1
`PUNPCKxxx`: Section B.4.262
pure binary: Section 6.1
`%push`: Section 4.7, Section 4.7.1
`PUSH`: Section B.4.263
`PUSHAx`: Section B.4.264
`PUSHFx`: Section B.4.265
`PXOR`: Section B.4.266
quick start: Section 2.2
`QWORD`: Section 3.1
`-r`: Section A.3
`RCL`: Section B.4.267
`RCPPS`: Section B.4.268
`RCPSS`: Section B.4.269
`RCR`: Section B.4.267
`rdf`: Section 2.1.1, Section 6.9
`RDMSR`: Section B.4.270
`rdoff` subdirectory: Section 1.3.2, Section 6.9
`RDPMC`: Section B.4.271
`RDSHR`: Section B.4.272
`RDTSC`: Section B.4.273
redirecting errors: Section 2.1.8
register push: Section B.4.263
relational operators: Section 4.4.4
Relocatable Dynamic Object File Format: Section 6.9
relocations, PIC-specific: Section 6.5.2
removing contexts: Section 4.7.1
renaming contexts: Section 4.7.4
`%rep`: Section 3.2.5, Section 4.5
repeating: Section 3.2.5, Section 4.5
`%repl`: Section 4.7.4
reporting bugs: Section 10.2
`RESB`: Section 2.2.7, Section 3.2, Section 3.2.2, Section 3.8
`RESD`: Section 3.2, Section 3.2.2
`RESQ`: Section 3.2, Section 3.2.2
`REST`: Section 3.2, Section 3.2.2
restricted memory references: Section B.1
`RESW`: Section 3.2, Section 3.2.2
`RET`: Section B.4.274
`RETF`: Section B.4.274
`RETN`: Section B.4.274
`ROL`: Section B.4.275
`ROR`: Section B.4.275
`%rotate`: Section 4.3.6
rotating macro parameters: Section 4.3.6
`RPL`: Section B.4.13
`RSDC`: Section B.4.276
`RSLDT`: Section B.4.277
`RSM`: Section B.4.278
`RSQRTPS`: Section B.4.279
`RSQRTSS`: Section B.4.280
`RSTS`: Section B.4.281
`-s` option: Section 2.1.9, Section A.3.2
`SAHF`: Section B.4.282
`SAL`: Section B.4.283
`SALC`: Section B.4.284
`SAR`: Section B.4.283
`SBB`: Section B.4.285
`SCASB`: Section B.4.286
`SCASD`: Section B.4.286
`SCASW`: Section B.4.286
searching for include files: Section 4.6
`__SECT__`: Section 5.2.1, Section 5.3
`SECTION`: Section 5.2
`SECTION`, `elf` extensions to: Section 6.5.1
`SECTION`, `win32` extensions to: Section 6.3.1
section alignment, in `bin`: Section 6.1.2
section alignment, in `elf`: Section 6.5.1
section alignment, in `obj`: Section 6.2.1
section alignment, in `win32`: Section 6.3.1
section, bin extensions to: Section 6.1.2
`SEG`: Section 3.5.7, Section 3.6, Section 6.2
`SEGMENT`: Section 5.2
`SEGMENT`, `elf` extensions to: Section 6.2.1
segment address: Section 3.5.7, Section 3.6
segment alignment, in `bin`: Section 6.1.2
segment alignment, in `obj`: Section 6.2.1
segment names, Borland Pascal: Section 7.5.2
segment override: Section 2.2.4, Section 3.1
segment registers: Section B.2.1
segments: Section 3.6
segments, groups of: Section 6.2.2
separator character: Section 2.1.22
`SETcc`: Section B.4.287
`SFENCE`: Section B.4.288
`SGDT`: Section B.4.289
shared libraries: Section 6.7, Section 8.2
shared library: Section 6.5.3
`shift` command: Section 4.3.6
`SHL`: Section B.4.290
`SHLD`: Section B.4.291
`SHR`: Section B.4.290
`SHRD`: Section B.4.291
`SHUFPD`: Section B.4.292
`SHUFPS`: Section B.4.293
SIB byte: Section B.2, Section B.2.5
`SIDT`: Section B.4.289
signed division: Section 3.5.6
signed modulo: Section 3.5.6
single-line macros: Section 4.1
size, of symbols: Section 6.5.3
`SLDT`: Section B.4.289
`SMI`: Section B.4.294
`SMINT`: Section B.4.295
`SMINTOLD`: Section B.4.295
`SMSW`: Section B.4.296
Solaris x86: Section 6.5
`-soname`: Section 8.2.6
sound: Section 3.2.3
source code: Section 1.3.1
source-listing file: Section 2.1.3
`SQRTPD`: Section B.4.297
`SQRTPS`: Section B.4.298
`SQRTSD`: Section B.4.299
`SQRTSS`: Section B.4.300
square brackets: Section 2.2.2, Section 3.3
sse condition predicates: Section B.2.3
`STACK`: Section 6.2.1
`stack frame`: Section B.4.65
`%stacksize`: Section 4.9.2
standard macros: Section 4.8
standardised section names: Section 5.2, Section 6.3.1, Section 6.5.1, Section 6.6, Section 6.7, Section 6.8, Section 6.9
`..start`: Section 6.2.6, Section 7.1.1
`start=`: Section 6.1.3
status flags: Section B.2.4
`STC`: Section B.4.301
`STD`: Section B.4.301
`stderr`: Section 2.1.8
`stdout`: Section 2.1.9
`STI`: Section B.4.301
`STMXCSR`: Section B.4.302
`STOSB`: Section B.4.303
`STOSD`: Section B.4.303
`STOSW`: Section B.4.303
`STR`: Section B.4.304
`STRICT`: Section 3.7
string constant: Section 3.2.1
string handling in macros: Section 4.2
string length: Section 4.2.1
`%strlen`: Section 4.2, Section 4.2.1
`STRUC`: Section 4.8.5, Section 5.3, Section 7.4.4, Section 8.1.3
stub preprocessor: Section 2.1.15
`SUB`: Section B.4.305
`SUBPD`: Section B.4.306
`SUBPS`: Section B.4.307
`SUBSD`: Section B.4.308
`SUBSS`: Section B.4.309
`%substr`: Section 4.2, Section 4.2.2
sub-strings: Section 4.2.2
subtraction: Section 3.5.5
suppressible warning: Section 2.1.18
suppressing preprocessing: Section 2.1.15
`SVDC`: Section B.4.310
`SVLDT`: Section B.4.311
`SVTS`: Section B.4.312
switching between sections: Section 5.2
`..sym`: Section 6.5.2
symbol sizes, specifying: Section 6.5.3
symbol types, specifying: Section 6.5.3
symbols, exporting from DLLs: Section 6.2.5
symbols, importing from DLLs: Section 6.2.4
`synchronisation`: Section A.3.2
`.SYS`: Section 6.1, Section 7.3
`SYSCALL`: Section B.4.313
`SYSENTER`: Section B.4.314
`SYSEXIT`: Section B.4.315
`SYSRET`: Section B.4.316
`-t`: Section 2.1.17
`TASM`: Section 1.1.1, Section 2.1.17
tasm: Section 2.2, Section 6.2
tasm compatible preprocessor directives: Section 4.9
`TBYTE`: Section 2.2.7
`TEST`: Section B.4.317
`test` subdirectory: Section 7.1.1
test registers: Section B.2.1
testing, arbitrary numeric expressions: Section 4.4.4
testing, context stack: Section 4.4.3
testing, exact text identity: Section 4.4.5
testing, multi-line macro existence: Section 4.4.2
testing, single-line macro existence: Section 4.4.1
testing, token types: Section 4.4.6
`.text`: Section 6.5.1, Section 6.6, Section 6.7, Section 6.8, Section 6.9
`_TEXT`: Section 7.4.2
`TIMES`: Section 3.2, Section 3.2.5, Section 3.8, Section 10.1.3, Section 10.1.4
`TLINK`: Section 7.2.2
trailing colon: Section 3.1
two-pass assembler: Section 3.8
`TWORD`: Section 2.2.7, Section 3.1
type, of symbols: Section 6.5.3
`-U` option: Section 2.1.13
`-u` option: Section 2.1.13, Section A.3
`UCOMISD`: Section B.4.318
`UCOMISS`: Section B.4.319
`UD0`: Section B.4.320
`UD1`: Section B.4.320
`UD2`: Section B.4.320
`UMOV`: Section B.4.321
unary operators: Section 3.5.7
`%undef`: Section 2.1.13, Section 4.1.4
undefining macros: Section 2.1.13
underscore, in C symbols: Section 7.4.1
uninitialised: Section 3.2, Section 3.2.2
uninitialised storage: Section 2.2.7
Unix: Section 1.3.2
Unix, SCO: Section 6.5
Unix, source archive: Section 1.3.2
Unix, System V: Section 6.5
UnixWare: Section 6.5
`UNPCKHPD`: Section B.4.322
`UNPCKHPS`: Section B.4.323
`UNPCKLPD`: Section B.4.324
`UNPCKLPS`: Section B.4.325
unrolled loops: Section 3.2.5
unsigned division: Section 3.5.6
unsigned modulo: Section 3.5.6
`UPPERCASE`: Section 2.2.1, Section 6.2.3
`USE16`: Section 5.1.1, Section 6.2.1
`USE32`: Section 5.1.1, Section 6.2.1
user-defined errors: Section 4.4.7
user-level assembler directives: Section 4.8
user-level directives: Chapter 5
`-v` option: Section 2.1.19
VAL: Section 7.1.1
valid characters: Section 3.1
variable types: Section 2.2.3
`VERR`: Section B.4.326
version: Section 2.1.19
version number of NASM: Section 4.8.1
`VERW`: Section B.4.326
`vfollows=`: Section 6.1.3
Visual C++: Section 6.3
`vstart=`: Section 6.1.3
`-w` option: Section 2.1.18
`WAIT`: Section B.4.327
warnings: Section 2.1.18
`[warning +warning-name]`: Section 2.1.18
`[warning -warning-name]`: Section 2.1.18
`WBINVD`: Section B.4.328
Win32: Section 1.3.1, Section 2.1.1, Section 6.2, Section 6.3, Chapter 8
Windows: Section 7.1
Windows 95: Section 1.3.1
Windows NT: Section 1.3.1
`write`: Section 6.5.1
writing operating systems: Section 9.1
`WRMSR`: Section B.4.329
`WRSHR`: Section B.4.330
`WRT`: Section 3.6, Section 6.2, Section 6.5.2, Section 6.7
`WRT ..got`: Section 8.2.3
`WRT ..gotoff`: Section 8.2.2
`WRT ..gotpc`: Section 8.2.1
`WRT ..plt`: Section 8.2.5
`WRT ..sym`: Section 8.2.4
WWW page: Section 1.2
`www.cpan.org`: Section 1.3.1
`www.delorie.com`: Section 7.1.1
`www.pcorner.com`: Section 7.1.1
`-X` option: Section 2.1.7
`XADD`: Section B.4.331
`XBTS`: Section B.4.332
`XCHG`: Section B.4.333
`%xdefine`: Section 4.1.2
`x2ftp.oulu.fi`: Section 7.1.1
`%xidefine`: Section 4.1.2
`XLATB`: Section B.4.334
`XOR`: Section B.4.335
`XORPD`: Section B.4.336
`XORPS`: Section B.4.337
`-y` option: Section 2.1.20

Contents