【任务】
  编程序宏定义和宏调用计算数组中所有元素之和。
  编写的宏定义SUMMING,功能为求出字数组中所有元素之和,并把结果保存下来。该宏定义的哑元为数组首址ARRAY、数组长度COUNT和结果存放单元RESULT。
  数据已经如下给出:

.data 
A1 dw 2345, 7865, 3219, 849,876
R1 dw ?
A2 1,2,3,4,5,6,7,8,9
R2 dw 2

  要求求出A1数组中5个元素之和,存储在R1中,求出A2数组中9个元素之和,存储在R2中。

【参考解答】

.8086
.MODEL small
.data
.data
   A1 dw 2345, 7865, 3219, 849,876
   R1 dw ?
   A2 dw 1,2,3,4,5,6,7,8,9
   R2 dw 2
.stack 100H
.code
cal macro array, count, result  ;宏定义
  local beg
  mov ax, 0
  lea si, array
  mov cx, count
beg:
  add ax, [si]
  inc si
  inc si
  loop beg

  mov result, ax

endm

start:
   mov ax,@data
   mov ds,ax

   cal A1, 5, R1  ;宏调用
   cal A2, 9, R2

 stop: mov ax,4c00h
       int 21h
end start