微机原理汇编语言,MASA编程遇到的一些问题!!求帮助,提供源代码,不知道哪里出问题了,谢谢!!
DATASEGMENTADB5DUP(?)SUMDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DSMOVD...
DATA SEGMENT
A DB 5 DUP(?)
SUM DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DS
MOV DX,AX
MOV CX,5
MOV SI,0
LEA DX,A
MOV AH,0AH
INT 21H
LP: ADD AL,A[SI]
AAA
INC SI
LOOP LP
PUT: MOV SUM,AL
ADD AX,3030H
DAA
MOV BH,AH
MOV AH,2
MOV DL,BH
INT 21H
MOV DL,AL
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
要求是从键盘输入最多五个数,求他们的和,存入SUM,能形成exe文件,但是结果不对,哪位大神给看一下哪里出问题了?如果问题解决的话,多给分!!!谢谢!!! 展开
A DB 5 DUP(?)
SUM DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DS
MOV DX,AX
MOV CX,5
MOV SI,0
LEA DX,A
MOV AH,0AH
INT 21H
LP: ADD AL,A[SI]
AAA
INC SI
LOOP LP
PUT: MOV SUM,AL
ADD AX,3030H
DAA
MOV BH,AH
MOV AH,2
MOV DL,BH
INT 21H
MOV DL,AL
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
要求是从键盘输入最多五个数,求他们的和,存入SUM,能形成exe文件,但是结果不对,哪位大神给看一下哪里出问题了?如果问题解决的话,多给分!!!谢谢!!! 展开
2个回答
展开全部
你有很多问题
1.不懂装载.. start第一句就是错答缓的。。
2.不了解十号功能的使用
3.不了解键盘的读取
4. 乱用指令。。。
还是先看旅誉看书清镇模再提问吧
下面这个程序能输入最多80个数字,不过都是一位的,而且加起来不超过256就行
DATA SEGMENT
BUF DB 81,?
A DB 81 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA DX,BUF
MOV AH,0AH
INT 21H
MOV AX,0
MOV CL,BUF[1]
MOV CH,0
MOV SI,0
LP:
ADD AL,A[SI]
SUB AL,30H
INC SI
LOOP LP
PUSH AX
MOV DL,13
MOV AH,2
INT 21H
MOV DL,10
INT 21H
POP AX
PUT:
MOV BL,10
DIV BL
PUSH AX
INC CX
MOV AH,0
CMP AL,0
JNE PUT
MOV AH,2
OUTP:
POP DX
MOV DL,DH
ADD DL,30H
INT 21H
LOOP OUTP
MOV AH,4CH
INT 21H
CODE ENDS
END START
1.不懂装载.. start第一句就是错答缓的。。
2.不了解十号功能的使用
3.不了解键盘的读取
4. 乱用指令。。。
还是先看旅誉看书清镇模再提问吧
下面这个程序能输入最多80个数字,不过都是一位的,而且加起来不超过256就行
DATA SEGMENT
BUF DB 81,?
A DB 81 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA DX,BUF
MOV AH,0AH
INT 21H
MOV AX,0
MOV CL,BUF[1]
MOV CH,0
MOV SI,0
LP:
ADD AL,A[SI]
SUB AL,30H
INC SI
LOOP LP
PUSH AX
MOV DL,13
MOV AH,2
INT 21H
MOV DL,10
INT 21H
POP AX
PUT:
MOV BL,10
DIV BL
PUSH AX
INC CX
MOV AH,0
CMP AL,0
JNE PUT
MOV AH,2
OUTP:
POP DX
MOV DL,DH
ADD DL,30H
INT 21H
LOOP OUTP
MOV AH,4CH
INT 21H
CODE ENDS
END START
展开全部
主要有以下错误
(1)在做加法之前,你首先得将AL清零,一般用XOR ax,ax来做这个事
(2)输入的数据是从A+2地址开始放的,A的顷禅第1个数是缓区长度,第2数是你输入的实际长度
所以:SI初始化应该毕乎尺用:LEA SI,A+2
(3)使用DOS 0ah调用时对输入区格式有要求,你输入5个数,就要第一数为6才对,这个我记的不太清楚具体要求了,你看下资料。
你不会说,你不会改程序吧手高?哈…希望能帮到你。
(1)在做加法之前,你首先得将AL清零,一般用XOR ax,ax来做这个事
(2)输入的数据是从A+2地址开始放的,A的顷禅第1个数是缓区长度,第2数是你输入的实际长度
所以:SI初始化应该毕乎尺用:LEA SI,A+2
(3)使用DOS 0ah调用时对输入区格式有要求,你输入5个数,就要第一数为6才对,这个我记的不太清楚具体要求了,你看下资料。
你不会说,你不会改程序吧手高?哈…希望能帮到你。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询