汇编高手来帮忙,从1累加到100的程序.
答案:2 悬赏:10
解决时间 2021-02-17 11:39
- 提问者网友:藍了天白赴美
- 2021-02-17 01:17
汇编高手来帮忙,从1累加到100的程序.
最佳答案
- 二级知识专家网友:第幾種人
- 2021-02-17 01:33
DATA SEGMENT
BUF2 DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AX,0
MOV CX,100
KK: ADD AX,CX
LOOP KK
MOV BUF2,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
这样就行了。
1、最开始没有DATA SEGMENT
2、BUF DB 1,2,3,4,.......,100 这一行,我编译不过
3、BUF2 DW?。。问号前面要有空格。。BUF2 DW ?
4、LODE ENDS。。。是code ends
5、MOV AX,DATA MOV DS,AX。之后要mov ax,0
6、完全没有必要像你那样做。
BUF2 DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AX,0
MOV CX,100
KK: ADD AX,CX
LOOP KK
MOV BUF2,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
这样就行了。
1、最开始没有DATA SEGMENT
2、BUF DB 1,2,3,4,.......,100 这一行,我编译不过
3、BUF2 DW?。。问号前面要有空格。。BUF2 DW ?
4、LODE ENDS。。。是code ends
5、MOV AX,DATA MOV DS,AX。之后要mov ax,0
6、完全没有必要像你那样做。
全部回答
- 1楼网友:傲气稳了全场
- 2021-02-17 02:25
如果你不嫌麻烦把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
真正实现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
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |