汇编中数组的加法运算-包含进位

;***************************************************************
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
;************************************************************************


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

世纪殇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值