### NASM手册知识点总结 #### 第一章:介绍NASM **1.1 什么是NASM** - **定义**:NASM(Netwide Assembler)是一款高性能、跨平台的汇编器,支持从32位到64位的Intel x86架构。 - **背景**:尽管已经有多种汇编器存在,但NASM的设计目标在于提供更高的性能、更丰富的功能以及更好的跨平台兼容性。 **1.1.1 为什么还需要一个汇编器** - **性能**:相比其他汇编器,NASM在速度上有显著优势。 - **功能**:NASM支持更多的高级特性,如宏处理等。 - **兼容性**:NASM旨在支持广泛的平台,确保代码可以在不同的操作系统上编译和运行。 **1.1.2 许可条件** - **开源协议**:NASM遵循宽松的许可证条款,允许开发者自由地使用、修改和分发其源代码。 **1.3 安装** - **1.3.1 在DOS和Windows下安装NASM** - 下载适用于Windows系统的预编译二进制文件。 - 将NASM的目录添加到系统环境变量PATH中。 - **1.3.2 在Unix下安装NASM** - 通过包管理器(如apt-get、yum等)安装。 - 或者从源码编译安装。 #### 第二章:NASM命令行语法 本章详细介绍了NASM的各种命令行选项,帮助用户更好地控制汇编过程。 **2.1 NASM命令行语法** - **"-o"选项**:指定输出文件名。 - **"-f"选项**:设置输出文件格式,如obj、coff等。 - **"-l"选项**:生成列表文件,便于查看汇编过程中的详细信息。 - **"-M"选项**:生成Makefile依赖关系,方便后续构建过程。 - **"-F"选项**:选择调试信息格式。 - **"-g"选项**:启用调试信息。 - **"-E"选项**:将错误信息输出到指定文件。 - **"-s"选项**:将错误信息输出到标准输出。 - **"-i"选项**:指定包含文件的搜索路径。 - **"-p"选项**:预包含一个文件。 - **"-d"选项**:预定义宏。 - **"-u"选项**:取消宏定义。 - **"-e"选项**:只进行预处理操作。 - **"-a"选项**:跳过预处理阶段。 - **"-On"选项**:设置多遍优化级别。 - **"-t"选项**:使用TASM兼容模式。 - **"-w"选项**:控制警告信息的显示。 - **"-v"选项**:打印版本信息。 - **"NASMENV"环境变量**:用于配置全局设置。 **2.2 MASM用户速成** - **2.2.1 大小写敏感性**:与MASM不同,NASM区分大小写。 - **2.2.2 内存地址引用**:使用方括号表示内存地址。 - **2.2.3 变量类型**:NASM不自动保存变量类型。 - **2.2.4 "ASSUME"机制**:NASM没有类似MASM的“ASSUME”语句。 - **2.2.5 内存模型**:NASM不支持MASM的内存模型概念。 - **2.2.6 浮点处理**:NASM的浮点处理方式与MASM有所不同。 - **2.2.7 其它不同**:列举了更多NASM与MASM之间的差异。 #### 第三章:NASM语言指令 这一章深入探讨了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 "<<" 和 ">>" 运算符**:左移和右移位运算。 - **3.5.5 "+" 和 "-" 运算符**:加法和减法运算。 - **3.5.6 "*","/","//"","%" 和 "%%" 运算符**:乘法、除法、整除、取模运算。 - **3.5.7 一元运算符**:“+”、“-”、“~” 和 “SEG”。 **3.6 "SEG" 和 "WRT"** - **功能**:用于访问段寄存器和指定指令集。 **3.7 "STRICT"**:限制对某些指令的优化,确保代码的准确性。 **3.8 临界表达式** - **定义**:解释了临界表达式的含义和用途。 **3.9 本地Labels** - **功能**:用于在局部范围内标记代码位置。 #### 第四章:NASM预处理器 此章节详细讲解了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 字符串处理宏** - **4.2.1 求字符串长度**:“%"strlen”。 - **4.2.2 取子字符串**:“%"substr”。 **4.3 多行宏** - **4.3.1 多行宏的定义**:“%"macro”。 - **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" 和 "%ifidni"**:比较两个宏是否相等。 - **4.4.6 "%ifid", "%ifnum", "%ifstr"**:测试记号的类型。 - **4.4.7 "%error"**:报告用户自定义的错误信息。 **4.5 预处理器循环**:“%rep” - **功能**:用于循环执行宏或指令。 以上内容全面覆盖了NASM手册中提到的关键知识点,帮助读者更好地理解和掌握NASM汇编语言及其预处理器的使用技巧。
- qq520160002013-01-23很清楚,非常好
- 粉丝: 2
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 英国地铁站SHP矢量数据集
- 2014年Q2中国主要城市交通分析报告.pdf
- MATLAB环境下2D 3D局部边坡估计和结构滤波方法 算法运行环境为matlab r2018a,执行一种2D 3D局部边坡估计和结构滤波方法 %% calculate SNR snrn=str-s
- 2014年度户外广告市场及2015年发展趋势.pdf
- 2014年世界杯赛事热点概览.pdf
- 2014年世界杯营销启点报告.pdf
- 2014年中国智能电视用户及用户行为研究报告.pdf
- 2015-2016年京东全球购消费白皮书.pdf
- 2014中国网络房产服务行业报告.pdf
- 2015-2016年中国手机地图市场研究报告.pdf
- 2015-2016年年中国手机浏览器市场研究报告.pdf
- 2015-2016年中国移动DSP行业发展研究报告.pdf
- 2015-2016网生世代流行文化观察系列报告.pdf
- 2015-2016中国APP年度排行榜.pdf
- 2015-2016中国手机新闻客户端市场研究报告.pdf
- 2015-2016中国手机音乐客户端市场研究报告.pdf