to protale():第一个参数指明后面有几个参数是一种办法;象printf第一个参数是字符串指针,由这个字符串中有几个‘%’号决定后面还有几个参数,这也是一种办法;再一种办法是用一个特别的数字作为最后个参数的标记(比如0),则可以从第一个参数开始处理,当出现参数为标记时结束。
“即便如此,编译如何通过... ”,什么意思,怎么会通不过的?
我就写一个第一种办法的例子(16bit),把他编译成COM文件用调试器调试看看(我没有输出结果):
add proc near ;返回值在ax
push bp
mov bp,sp
push si
;
mov si,04h
mov cx,[bp+si] ;第一个参数作为后面还有几个参数的记数
xor ax,ax
jcxz @add_end
@add_loop:
inc si
inc si
add ax,[bp+si]
loop @add_loop
@add_end:
;
pop si
pop bp
ret
add endp