如果你不嫌麻烦把1,2,3,4,.......,100 这一百个数补齐,?号前加空格再修改倒数第二行LODE ENDS为CODE ENDS的话,你的程序编译通过,但我告诉你你的程序还是有问题,你定义的BUFF存放1到~100是字节型的单元,但你加的时候ADD AX,[SI] 取的数是两个单元的字,所以原来的数就不再是1到~100了,所以你还要改,把BUFF定义为DW字,后面取数时后移不是INC SI而是ADD SI,2取一个字大小的数据,但我想说其实最主要的问题是你的程序根本就没必要写这么多。。。
真正实现1加到100只需:
MOV CX,100
NEXT:
ADD SUM,CX;定义SUM=0
LOOP NEXT
完整程序加输出:
;程序实现功能:从1到100进行累加,并把计算结果保存在[SUM]单元里
DATAS SEGMENT
SUM DW 0
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV CX,100
NEXT:
ADD SUM,CX
LOOP NEXT
CALL DISPLAY
MOV AH,4CH
INT 21H
DISPLAY PROC NEAR
;以下代码段实现输出正整型数
;**************************************************
MOV AX,SUM
MOV BX,10
CONTINUE:
CWD
DIV BX
PUSH DX
INC CX
CMP AX,0
JNZ CONTINUE
NEXT1:
POP DX
AND DX,0FFH
ADD DL,30H
MOV AH,02
INT 21H
LOOP NEXT1
;**************************************************
RET
DISPLAY ENDP
CODES ENDS
END START
温馨提示:答案为网友推荐,仅供参考