;***************************************************************

 TITLE 数组求和

 ;***************************************************************


 ;***************************************************************

 ;*程序的运行环境,最低环境是386,数据段和代码段公用4GB空间,函数

 ;*是stdcall的调用方式,大小写敏感

 .386

 .model flat,stdcall

 option casemap:None

 ;***************************************************************



 ;***************************************************************

 ;*文件包含

 INCLUDE Irvine32.inc

 ;***************************************************************


 ;***************************************************************

 ;*数据段定义

 .data

 arrayB byte 0F0h,0F0h,30h

 arrayBLength byte $-arrayB

 ;***************************************************************


 ;***************************************************************

 ;*代码段

 .code


 main proc  

   ;*ebx清空,存放结果

   xor ebx,ebx

   ;*将自动计数器清空

   xor ecx,ecx

   ;*获得数组长度

   mov cl,arrayBLength;

   ;*数组索引应该是长度-1,作为指向数组中最后一个元素

   dec cl;

   mov esi,offset arrayB;  

   SumOut:

   mov al,[esi+ecx]

   ;*取数组元素  

   add bl,al;

   ;如果产生了进位则要进行进位

   jc L1;

   jmp L2;

   L1:

     inc bh;

   L2:

   loopd SumOut;

   ;因为当cx是1的时候不再执行,也就是说第一个元素没有计算到

   add bl,[esi];

   jc L3;

   jmp L4;

   L3:

     inc bh

   L4:

   invoke DumpRegs

   exit  

 main endp

 end main
;***************************************************************

另一个数组运算程序
;************************************************************************
 ;*程序运行平台要求
 .386
 .model flat,stdcall
 option casemap:none
 ;************************************************************************

 ;************************************************************************
 ;*包含文件
 INCLUDE Irvine32.inc
 INCLUDELIB kernel32.lib
 INCLUDELIB user32.lib
 INCLUDELIB msvcrt.lib
 ;************************************************************************

 ;************************************************************************
 ;*数据段定义
 .DATA
 source BYTE "123456789",0
 target BYTE 10 DUP(0)
 ;************************************************************************


 ;************************************************************************
 ;*代码段定义
 .code
 main proc    
    ;*目的地址的索引值
    MOV edi,0
    MOV ecx,sizeof source
    dec ecx
    L1:
       MOV al,source[edi];
       MOV target[edi],al;
       INC edi;
    loopw L1;  
    mov edx,offset target
    invoke printf,edx;
    invoke ExitProcess,0
 main endp
 end main
 ;************************************************************************