汇编教程:多文件联合编译、宏与全局变量处理

需积分: 10 0 下载量 109 浏览量 更新于2024-08-29 收藏 313KB PDF 举报
本资源主要介绍了汇编编程中的多个关键知识点,包括函数的调用约定、宏的使用、跳转指令、多文件联合编译、全局变量与外部声明、函数声明、头文件的管理、结构体的定义和访问、指针操作以及防止头文件重复包含的方法。 1. **函数调用约定**:讲解了两种传递参数的方式,即传址(使用lea指令)和传值,强调了局部变量在函数未调用前的地址不可用。对于函数参数,使用lea更恰当。 2. **宏的使用**:宏相当于C语言中的#define,提供了代码重用的功能,如通过宏定义和注释来简化复杂的表达式。宏注释使用分号;以及特殊符号如&&、<>等。 3. **控制转移指令**:如jmp指令用于进行条件或无条件跳转,如$+2表示跳到下一条指令的起始处,而WIN32特有的标号处理规则允许跳跃到前后相邻的标签。 4. **多文件联合编译**:通过将多个源文件分别编译成.obj文件,其中非入口文件需在结尾添加end标志。多个.obj文件通过link16命令链接在一起。 5. **全局变量**:默认情况下,全局变量在数据段中定义,属于文件作用域。使用public声明可以使其成为外部可见的全局变量。 6. **函数声明和参数类型**:详细说明了函数声明的形式,包括参数类型标记(如dword、word、byte)和不同的调用约定(protofar/near/C/stdcall)。 7. **头文件管理**:inc文件与C语言的.h文件类似,用于组织和共享代码。通过包含指令在源文件中引用头文件,防止头文件的重复包含。 8. **结构体与数组**:结构体的定义、数组成员、重复次数等概念被深入解析,以及如何声明和初始化结构体变量。 9. **结构体嵌套和访问**:讲解了如何定义嵌套结构体以及结构体成员的访问方式。 10. **结构体成员偏移计算**:介绍如何计算结构体成员相对于其起始位置的偏移量。 11. **指针操作**:涉及指针声明和访问结构体成员,强调了使用assume指令来确保指针类型的正确性。 12. **防止头文件重复包含**:提供了类似于C语言的#ifndef和endif预处理指令,用于控制头文件的唯一包含。 13. **实际操作示例**:给出了多文件联合编译的实际命令行步骤,以及如何使用花指令(可能引起混淆的指令)来避免代码混乱。 这些知识点涵盖了汇编语言中的基础和进阶概念,对于理解和编写高效的汇编程序非常实用。