在此章节之前,创建的程序全部是只用一个模块的,也就是程序中只用了一个END指令,这里通过创建ArraySum例子程序演示创建多模块程序的方法。
首先通过使用ENTERN伪指令创建传统的多模块程序,这里的ENTERN伪指令实际上只起了调用其他模块里的过程前对此过程的声明作用。这里的被调用过程与一个模块表达式没有书写格式上的变化,源程序如下:
(_prompt.asm模块)
TITLE Prompt For Integers (_prompt.asm)
INCLUDE Irvine32.inc
.code
;----------------------------------------------------
PromptForIntegers PROC
; 提示用户输入三个整数,调用ReadInt读取输入返回到eax中,
; 然后把值插入到数组中.
; 参数:
; ptrPrompt:PTR BYTE ; 提示用户的字符串
; ptrArray:PTR DWORD ; 数组首地址
; arraySize:DWORD ; 数组的长度
; 返回值:无
;-----------------------------------------------------
arraySize EQU [ebp+16]
ptrArray EQU [ebp+12]
ptrPrompt EQU [ebp+8] ; [ebp+8]指向调用此模块(call指令)之前的入栈数据
enter 0,0
; enter指令自动为被调用过程创建堆栈框架(此处相当于push ebp;mov ebp,esp;sub esp,0),
; 并为局部变量创建堆栈空间(e