大型源文件难于管理且汇编速度慢,可以把单个文件拆分为多个子文件,但是,对其中任何子文件的修改仍需对所有的文件进行整体汇编。更好的方法是把一个程序按模块(module)(汇编单位)分割。每个模块可以单独汇编,因此,对一个模块源代码的修改就只需要重汇编这个模块。
链接器将所有汇编好的模块(OEJ 文件)组合为一个可执行文件的速度是相当快的,链接大量目标模块比汇编同样数量的源代码文件花费的时间要少得多。
新建多模块程序有两种常用方法:
默认情况下,MASM 使所有的过程都是 public 属性,即允许它们能被同一程序中任何其他模块调用。使用限定词 PRIVATE 可以覆盖这个属性:
使过程为 private 属性,可以利用封装原则将过程隐藏在模块中,如果其他模块有相同过程名,就还需避免潜在的重名冲突。
在源模块中隐藏过程的另一个方法是,把 OPTION PROC:PRIVATE 伪指令放在文件顶部。则所有的过程都默认为 private,然后用 PUBLIC 伪指令指明那些希望其可见的过程:
PUBLIC 伪指令用逗号分隔过程名:
或者,也可以单独指定过程为 public 属性:
如果程序的启动模块使用了 OPTION PROC:PRIVATE,那么就应该将它(通常为 main)指定为 PUBLIC,否则操作系统加载器无法发现该启动模块。比如: