汇编语言多模块程序结构

Posted BkbK-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编语言多模块程序结构相关的知识,希望对你有一定的参考价值。

多模块程序结构

在这里插入图片描述

一、多模块方法

(1)源文件包含

使用源文件包含伪指令INCLUDE

include 文件名;将指定文件内容插入主体源程序文件

大型源程序可以合理地分放在若干个文本文件中

  • 各种常量定义、声明语句等组织在包含文件(*.INC)
  • 常用的或有价值的宏定义存放在宏定义文件(*.MAC)
  • 常用的子程序形成汇编语言源文件(*.ASM)
  • 任何文本文件

源文件包含的使用:

  • 被包含文件
    ►文件名要符合操作系统规范
    ►只能是文本文件
    ►内容被插入源文件包含include语句所在的位置
  • 实质仍然是一个源程序
    ►只是分开在若干个文件中
    ►只需针对主体源程序文件进行汇编、连接

(2)模块连接

;定义标识符的模块使用

public 标识符 [,标识符 …] 

;调用标识符的模块使用

extern 标识符:类型 [,标识符:类型 …]
  • 子程序单独编写一个源程序文件
    ►使用共用伪指令PUBLIC和外部伪指令EXTERN声明
    ►子程序在代码段,与主程序文件采用相同的存储模型
    ►没有开始执行和结束执行点,但有汇编结束语句
    ►处理好子程序与主程序之间的参数传递问题

  • 子程序源文件汇编形成目标模块OBJ文件

  • 连接时输入子程序目标模块文件名

(3)子程序库和库文件包含

1.子程序库

子程序库的概念

  • 子程序库是子程序模块的集合,便于统一管理子程序
  • 编写存入库文件的子程序
    ►遵循更加严格的子程序模块要求
    ►应该遵循一致的规则(以免在使用时造成混乱)
  • 子程序文件编写完成、汇编形成目标模块
  • 利用库管理工具程序把子程序模块加入到子程序库

子程序库的使用

  • 子程序单独编写一个源程序文件
  • 子程序源文件汇编形成目标模块OBJ文件
  • 利用库管理工具把子程序模块加入到子程序库
  • 在连接主程序时提供子程序库文件名

2.库文件包含

使用库文件包含伪指令INCLUDELIB

includelib 文件名
;使用库文件中的子程序

二、宏汇编

(1)宏汇编的定义

  • 宏(Macro)是具有宏名的一段汇编语句序列
  • 宏需要先使用MACRO/ENDM伪指令进行定义
  • 然后在程序中使用宏名(带参数)进行宏调用
  • 源程序进行汇编时,宏名被汇编程序用宏定义的,代码序列替代,实现宏展开

(2)宏定义、宏调用和宏展开

宏定义

宏名 macro [形参表];宏定义体
endm

宏调用

宏名  [实参表]

宏展开
在这里插入图片描述

(3)宏汇编的特点

  • 宏需要先定义后使用,且不必在任何段中
    ►常书写于源程序开始位置
    ►常用的宏定义可以单独写成一个宏定义文件
  • 宏定义中更改了寄存器内容,最好进行保护和恢复
  • 宏定义的参数灵活,宏定义允许嵌套和递归调用
  • 宏调用不需要控制的转移与返回
    ►宏调用将相应的语句序列复制到宏指令的位置
    ►宏展开被嵌入源程序,成为一体

以上是关于汇编语言多模块程序结构的主要内容,如果未能解决你的问题,请参考以下文章

多片段层次结构中的菜单膨胀问题

译文:18个实用的JavaScript代码片段,助你快速处理日常编程任务

如何使用模块化代码片段中的LeakCanary检测内存泄漏?

for循环结构

用C语言编写DLL

如何使用导航架构组件修复动态功能模块中片段的发布版本中的ClassNotFoundException?