============
第一章: 简介
1.1 什么是NASM
1.1.1 为什么还需要一个汇编器?
1.1.2 许可条件
1.2 联系信息
1.3 安装
1.3.1 在dos和Windows下安装NASM
1.3.2 在unix下安装NASM
第二章 运行NASM
2.1 NASM命令行语法
2.1.1 '-o'选项:指定输出文件的文件名。
2.1.2 `-f'选项:指定输出文件的格式。
2.1.3 `-l' 选项: 产生列表文件
2.1.4 `-M'选项: 产生Makefile依赖关系.
2.1.5 `-F'选项: 选择一个调试格式
2.1.6 `-g' 选项:使调试信息有效。
2.1.7 `-E' 选项: 把错误信息输入到文件。
2.1.8 `-s' 选项: 把错误信息输出到'stdout'
2.1.9 `-i'选项: 包含文件搜索路径
2.1.10 `-p' 选项: 预包含一个文件
2.1.11 `-d'选项: 预定义一个宏。
2.1.12 `-u' 选项: 取消一个宏定义。
2.1.13 `-e'选项: 仅预处理。
2.1.14 `-a' 选项: 不需要预处理。
2.1.15 `-On'选项: 指定多遍优化。
2.1.16 `-t'选项: 使用TASM兼容模式。
2.1.17 `-w'选项: 使汇编警告信息有效或无效。
2.1.18 `-v'选项: 打印版本信息。
2.1.19 `NASMENV'环境变量。
2.2 MASM用户速成。
2.2.1 NASM是大小写敏感的。
2.2.2 NASM需要方括号来引用内存地址。
2.2.3 NASM不存储变量的类型。
2.2.4 NASM不会 `ASSUME'
2.2.5 NASM不支持内存模型。
2.2.6 浮点处理上的不同。
2.2.7 其他不同。
第三章 NASM语言
3.1 NASM源程序行的组成。
3.2 伪指令。
3.2.1 `DB'一类的伪指令: 声明已初始化的数据。
3.2.2 `RESB'类的伪指令: 声明未初始化的数据。
3.2.3 `INCBIN':包含其他二进制文件。
3.2.4 `EQU': 定义常数。
3.2.5 `TIMES': 重复指令或数据。
3.3 有效地址
3.4 常数
3.4.1 数值常数。
3.4.2 字符型常数。
3.4.3 字符串常数。
3.4.4 浮点常量
3.5 表达式
3.5.1 `|': 位或运算符。
3.5.2 `^': 位异或运算符。
3.5.3 `&': 位与运算符。
3.5.4 `<<' and `>>': 位移运算符。
3.5.5 `+' and `-': 加与减运算符。
3.5.6 `*', `/', `//', `%'和`%%': 乘除法运算符。
3.5.7 一元运算符: `+', `-', `~'和`SEG'
3.6 `SEG'和`WRT'
3.7 `STRICT': 约束优化。
3.8 临界表达式。
3.9 本地Labels
第四章 NASM预处理器。
4.1 单行的宏。
4.1.1 最常用的方式: `%define'
4.1.2 %define的增强版: `%xdefine'
4.1.3 : 连接单行宏的符号: `%+'
4.1.4 取消宏定义: `%undef'
4.1.5 预处理器变量 : `%assign'
4.2 字符串处理宏: `%strlen' and `%substr'
4.2.1 求字符串长度: `%strlen'
4.2.2 取子字符串: `%substr'
4.3 多行宏: `%macro'
4.3.1 多行宏的重载
4.3.2 Macro-Local Labels
4.3.3 不确定的宏参数个数.
4.3.4 缺省宏参数.
4.3.5 `%0': 宏参数个数计数器.
4.3.6 `%rotate': 循环移动宏参数.
4.3.7 连结宏参数。
4.3.8 条件代码作为宏参数。
4.3.9 禁止列表扩展。
4.4 条件汇编
4.4.1 `%ifdef': 测试单行宏是否存在。
4.4.2 `ifmacro': 测试多行宏是否存在。
4.4.3 `%ifctx': 测试上下文栈。
4.4.4 `%if': 测试任意数值表达式。
4.4.5 `%ifidn' and `%ifidni': 测试文本相同。
4.4.6 `%ifid', `%ifnum', `%ifstr': 测试记号的类型。
4.4.7 `%error': 报告用户自定义错误。
4.5 预处理器循环: `%rep'
4.6 包含其它文件。
4.7 上下文栈。
4.7.1 `%push' and `%pop': 创建和删除上下文。
4.7.2 Context-Local Labels
4.7.3 Context-Local单行宏。
4.7.4 `%repl': 对一个上下文改名。
4.7.5 使用上下文栈的例子: Block IFs
4.8 标准宏。
4.8.1 `__NASM_MAJOR__', `__NASM_MINOR__', `__NASM_SUBMINOR__'和
`___NASM_PATCHLEVEL__': NASM版本宏。
4.8.2 `__NASM_VERSION_ID__': NASM版本ID。
4.8.3 `__NASM_VER__': NASM版本字符串。
4.8.4 `__FILE__' and `__LINE__': 文件名和行号。
4.8.5 `STRUC' and