例:累加数组中的元素(通过存储器传送参数) data segment dw1,2,3,4,5,6,7,8,9,10 count dw 10 sum dw data ends code segment proadd proc near maIn proc far push ax assume cs: code, ds: data push CX push ds sh si sub ax ax lea g ary push mov CX, count ax Xor ax. ax mov ax. data next add ax, [si] mov ds. ax add si, 2 call proadd loop next ret mov sum, ax endp pop s code ends CX end ax main pop ret proadd endp
11 例:累加数组中的元素(通过存储器传送参数) data segment ary dw 1,2,3,4,5,6,7,8,9,10 count dw 10 sum dw ? data ends code segment main proc far assume cs:code,ds:data push ds sub ax, ax push ax mov ax, data mov ds, ax call proadd ret main endp code ends end main proadd proc near push ax push cx push si lea si, ary mov cx, count xor ax, ax next: add ax, [si] add si, 2 loop next mov sum,ax pop si pop cx pop ax ret proadd endp
如果数据段定义如下: data segment ary dW1,2,3,4,5,6,7,8,9,10 count d 10 sum ary1dw10,20,30,40,50,60,70,80,90,100 count1 dw 10 sum1 dw data ends 如果直接访问内存变量,那么累加数组ary 和数组ary1中的元素不能用同一个子程序 prada
12 如果数据段定义如下: data segment ary dw 1,2,3,4,5,6,7,8,9,10 count dw 10 sum dw ? ary1 dw 10,20,30,40,50,60,70,80,90,100 count1 dw 10 sum1 dw ? data ends 如果直接访问内存变量,那么累加数组ary 和数组ary1中的元素不能用同一个子程序 proadd