DATAS SEGMENT
;此处输入数据段代码
SUM DW ?
CNT DW ?
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
XOR AX,AX ;累加数,保存累加结果
;因为AX开始不大于5000,AX最大能保存十进制无符号数65535,所以用一个16位寄存起来保存结果就已经足够
XOR BX,BX ;加数,同时也是循环进行累加运算的循环循环次数N,也是循环结束后得到的最大加数N
L1:
INC BX
ADD AX,BX
CMP AX,5000 ;累加结果与5000比较
JNA L1 ;不大于5000则继续循环
MOV SUM,AX ;计算结果为5050
MOV CNT,BX ;累加的自然数个数为100个
MOV AH,4CH
INT 21H
CODES ENDS
END START
code segment;
assume cs:code,ds:code
org 100h ;COM格式
start:
push cs
pop ds
xor ax,ax
mov bx,ax
next:
inc bx
inc CNT
add ax,bx
cmp ax,5000
jbe next
mov SUM,ax
lea dx,mes2;提示完成
mov ah,9
int 21h
mov ah,0;暂停
int 16h
mov ah,4ch;结束
int 21h
CNT dw 0 ;统计被累加自然数的个数
SUM dw 0 ;放累加和
mes2 db 0dh,0ah,09,'Save done! $'
code ends
end start
#include
void main()
{
int i,SUM,CNT;
for(i=1;i<=5000;i++)
SUM+=i;
CNT=i;
printf("%d",SUM,CNT);
}