prog_seg     segment
            org 100h
            assume cs:prog_seg,ds:prog_seg,ss:prog_seg
   main       proc    near
            mov     ax,prog_seg
            mov     ds,ax
            ……
   ; 建立地址表
            mov     table,offset   ary
            mov     table+2,offset  count
            mov     table+4,offset  sum
            mov     bx,offset     table ; 地址表首地址送bx
            call    proadd         ; 调用子程序proadd
            ……
            mov     ax,4c00h
            int     21h
   main       endp

  ; 子程序proadd
   proadd      proc    near
            push    ax          ; 保存寄存器
            push    cx
            push    si
            push    di
            mov     si,[bx]       ; 数组ary首地址送si
            mov     di,[bx+2]      ; count单元地址送di
            mov     cx,[di]       ; count单元内容送cx
            mov     di,[bx+4]      ; 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
            ret
  proadd       endp
 ; 数据定义
            ary     dw 100 dup(?)
            count    dw 100
            sum     dw ?
            table    dw 3 dup(?)     ; 地址表
  prog_seg      ends
  end         main