
汇编程序有点小毛病,大家帮忙看看!!
题目:编写统计学生程序,设有十个学生成绩分别是:566984827388996310080,统计低于60分,60~69,70~79,80~89,90~99及100分的人数...
题目:编写统计学生程序,设有十个学生成绩分别是:56 69 84 82 73 88 99 63 100 80,统计低于60分,60~69,70~79,80~89,90~99及100分的人数,并存放到S5, S6, S7, S8, S9, S10的单元中,并显示。
我的程序是:DATA SEGMENT
NUMBER DB 56,69,84,82,73,88,99,63,100,80
S5 DB 0
S6 DB 0
S7 DB 0
S8 DB 0
S9 DB 0
S10 DB 0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
AND BX,0000H
AND AL,00H
MOV BX,OFFSET NUMBER
AGAIN:MOV AL,[BX]
CMP AL,100
JS NEXT0
INC S5
JMP STO
NEXT0:CMP AL,90
JS NEXT1
INC S6
JMP STO
NEXT1:CMP AL,80
JS NEXT2
INC S7
JMP STO
NEXT2:CMP AL,70
JS NEXT3
INC S8
JMP STO
NEXT3:CMP AL,60
JS NEXT4
INC S9
JMP STO
NEXT4:INC S10
STO: INC BX
LOOP AGAIN
DISP:
CMP S5,0AH
JS DONE
ADD AL,7
DONE: ADD S5,30
MOV DL,S5
MOV AH,02
INT 21H
MOV DL,32
MOV AH,02
INT 21H
DISP1: CMP S6,0AH
JS DONE1
ADD S6,7
DONE1: ADD S6,30H
MOV DL,S6
MOV AH,02
INT 21H
MOV DL,32
MOV AH,02
INT 21H
DISP2: CMP S7,0AH
JS DONE2
ADD S7,7
DONE2: ADD S7,30H
MOV DL,S7
MOV AH,02
INT 21H
MOV DL,32
MOV AH,02
INT 21H
DISP3: CMP S8,0AH
JS DONE3
ADD S8,7
DONE3:ADD S8,30H
MOV DL,S8
MOV AH,02
INT 21H
MOV DL,32
MOV AH,02
INT 21H
DISP4: CMP S9,0AH
JS DONE4
ADD S9,7
DONE4:ADD S9,30H
MOV DL,S9
MOV AH,02
INT 21H
MOV DL,32
MOV AH,02
INT 21H
DISP5: CMP S10,0AH
JS DONE5
ADD S10,7
DONE5: ADD S10,30H
MOV DL,S10
MOV AH,02
INT 21H
MOV DL,32
MOV AH,02
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
输出结果: s5,s6,s7,s8,s9,s10的数值都不对.
请各位朋友帮忙,谢谢!
我没有学过汇编语言, 但这句话里js不需要换成jB,错误我已经改好了,是没有控制循环的次数, 现在显示正确了, 多谢大家的帮忙。 展开
我的程序是:DATA SEGMENT
NUMBER DB 56,69,84,82,73,88,99,63,100,80
S5 DB 0
S6 DB 0
S7 DB 0
S8 DB 0
S9 DB 0
S10 DB 0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
AND BX,0000H
AND AL,00H
MOV BX,OFFSET NUMBER
AGAIN:MOV AL,[BX]
CMP AL,100
JS NEXT0
INC S5
JMP STO
NEXT0:CMP AL,90
JS NEXT1
INC S6
JMP STO
NEXT1:CMP AL,80
JS NEXT2
INC S7
JMP STO
NEXT2:CMP AL,70
JS NEXT3
INC S8
JMP STO
NEXT3:CMP AL,60
JS NEXT4
INC S9
JMP STO
NEXT4:INC S10
STO: INC BX
LOOP AGAIN
DISP:
CMP S5,0AH
JS DONE
ADD AL,7
DONE: ADD S5,30
MOV DL,S5
MOV AH,02
INT 21H
MOV DL,32
MOV AH,02
INT 21H
DISP1: CMP S6,0AH
JS DONE1
ADD S6,7
DONE1: ADD S6,30H
MOV DL,S6
MOV AH,02
INT 21H
MOV DL,32
MOV AH,02
INT 21H
DISP2: CMP S7,0AH
JS DONE2
ADD S7,7
DONE2: ADD S7,30H
MOV DL,S7
MOV AH,02
INT 21H
MOV DL,32
MOV AH,02
INT 21H
DISP3: CMP S8,0AH
JS DONE3
ADD S8,7
DONE3:ADD S8,30H
MOV DL,S8
MOV AH,02
INT 21H
MOV DL,32
MOV AH,02
INT 21H
DISP4: CMP S9,0AH
JS DONE4
ADD S9,7
DONE4:ADD S9,30H
MOV DL,S9
MOV AH,02
INT 21H
MOV DL,32
MOV AH,02
INT 21H
DISP5: CMP S10,0AH
JS DONE5
ADD S10,7
DONE5: ADD S10,30H
MOV DL,S10
MOV AH,02
INT 21H
MOV DL,32
MOV AH,02
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
输出结果: s5,s6,s7,s8,s9,s10的数值都不对.
请各位朋友帮忙,谢谢!
我没有学过汇编语言, 但这句话里js不需要换成jB,错误我已经改好了,是没有控制循环的次数, 现在显示正确了, 多谢大家的帮忙。 展开
展开全部
大概看了下你的程序,应该是JS用错了
如:
MOV AL,[BX]
CMP AL,100
JS NEXT0
INC S5
JMP STO
JS与SF标志位相关,这里不应该用JS.
程序原意应该是AL<100时跳转,应该用JB,表示AL<100时跳转
同理,程序中所有JS都应该用JB替换
如:
MOV AL,[BX]
CMP AL,100
JS NEXT0
INC S5
JMP STO
JS与SF标志位相关,这里不应该用JS.
程序原意应该是AL<100时跳转,应该用JB,表示AL<100时跳转
同理,程序中所有JS都应该用JB替换
已赞过
已踩过<
评论
收起
你对这个回答的评价是?

2024-10-23 广告
深圳思驰科技是国内先进入芯片解密领域的公司,拥有数十年的丰富经验,成功帮助国内外企业、政府及知名科研机构攻克多个技术难题。在医疗电子、工控设备、军事航天、通信设备、广电设备、交通设备、汽车电子、家用电子等行业都成功推出了多款创新产品,熟悉这...
点击进入详情页
本回答由深圳思驰科技有限公司_提供
展开全部
经过修改后在程序如下:
DATA SEGMENT
NUMBER DB 56,69,84,82,73,88,99,63,100,80
S5 DB 30H ;0-59
S6 DB 30H ;60-69
S7 DB 30H ;70-79
S8 DB 30H ;80-89
S9 DB 30H ;90-99
S10 DB 30H ;100
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
AND BX,0000H
AND AL,00H
MOV BX,OFFSET NUMBER
mov cx,S5-NUMBER ;总人数
AGAIN:MOV AL,[BX]
CMP AL,100
JS NEXT_90 ;如果AL等于100(0110 0100),没有产生借位
INC S10
JMP STO
NEXT_90:CMP AL,90
JS NEXT_80
INC S9
JMP STO
NEXT_80:CMP AL,80
JS NEXT_70
INC S8
JMP STO
NEXT_70:CMP AL,70
JS NEXT_60
INC S7
JMP STO
NEXT_60:CMP AL,60
JS NEXT_50
INC S6
JMP STO
NEXT_50:INC S5
STO: INC BX
LOOP AGAIN
MOV CX,6H
MOV BX,OFFSET S5
DISP:
MOV DL,[BX]
INC BX
MOV AH,02
INT 21H
MOV DL,0 ;在各级人数之间显示空格
MOV AH,02
INT 21H
LOOP DISP
MOV AH,4CH
INT 21H
CODE ENDS
END START
运行结果:
1 2 1 4 1 1
DATA SEGMENT
NUMBER DB 56,69,84,82,73,88,99,63,100,80
S5 DB 30H ;0-59
S6 DB 30H ;60-69
S7 DB 30H ;70-79
S8 DB 30H ;80-89
S9 DB 30H ;90-99
S10 DB 30H ;100
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
AND BX,0000H
AND AL,00H
MOV BX,OFFSET NUMBER
mov cx,S5-NUMBER ;总人数
AGAIN:MOV AL,[BX]
CMP AL,100
JS NEXT_90 ;如果AL等于100(0110 0100),没有产生借位
INC S10
JMP STO
NEXT_90:CMP AL,90
JS NEXT_80
INC S9
JMP STO
NEXT_80:CMP AL,80
JS NEXT_70
INC S8
JMP STO
NEXT_70:CMP AL,70
JS NEXT_60
INC S7
JMP STO
NEXT_60:CMP AL,60
JS NEXT_50
INC S6
JMP STO
NEXT_50:INC S5
STO: INC BX
LOOP AGAIN
MOV CX,6H
MOV BX,OFFSET S5
DISP:
MOV DL,[BX]
INC BX
MOV AH,02
INT 21H
MOV DL,0 ;在各级人数之间显示空格
MOV AH,02
INT 21H
LOOP DISP
MOV AH,4CH
INT 21H
CODE ENDS
END START
运行结果:
1 2 1 4 1 1
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
嗯。。看到汇遍真的想睡。
第一看不懂
第二还是看不懂
第三还是个看不懂
第一看不懂
第二还是看不懂
第三还是个看不懂
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看了你写的程序~~
我才发现·~啊
我们现在学的C真的太简单了
我才发现·~啊
我们现在学的C真的太简单了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
就是,你好强啊,我们都是刚学c语言呢!想帮都帮不了啊!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询