parm_seg
segment
ary dw 100 dup(?)
count dw 100
sum dw ?
parm_seg ends
; 協吶均媚粁
stack_seg segment
dw 100 dup(?)
tos label word
stack_seg ends
; 協吶旗鷹粁code1
code1 segment
main proc far
assume cs:code1,ds:parm_seg,ss:stack_seg
start:
; 譜崔ss才sp篠贋匂
mov ax,stack_seg
mov ss,ax
mov sp,offset tos
push ds
sub ax,ax
push ax
mov ax,parm_seg
mov ds,ax
mov bx,offset ary
push bx ; 方怏ary遍仇峽儿秘均媚
mov bx,offset count
push bx ; count汽圷仇峽儿秘均媚
mov bx,offset sum
push bx ; sum汽圷仇峽儿秘均媚
call far
ptr proadd ; 垓距喘徨殻會proadd
´´
ret
main endp
code1 ends
; 協吶旗鷹粁code2
code2 segment
assume cs:code2
; 徨殻會proadd
proadd proc far
push bp ; 隠贋bp
mov bp,sp ; 聞喘bp贋函歌方
push ax ; 隠贋凪万篠贋匂
push cx
push si
push di
mov si,[bp+0ah] ; 方怏ary遍仇峽僕si
mov di,[bp+8] ; count汽圷仇峽僕di
mov cx,[di] ; count汽圷坪否僕cx
mov di,[bp+6] ; sum汽圷仇峽僕di
xor ax,ax
next: add ax,[si]
add si,2
loop next
mov [di],ax ; 拙紗才僕sum汽圷
pop di ; 志鹸篠贋匂
pop si
pop cx
pop ax
pop bp
ret 6 ; 揮羨軸方卦指
proadd endp
code2 ends
end start