| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1507 人关注过本帖
标题:关于100名学生成绩统计的程序,有点问题,请看看!
只看楼主 加入收藏
ewenyxw0331
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-11-20
收藏
 问题点数:0 回复次数:4 
关于100名学生成绩统计的程序,有点问题,请看看!
若已将某年级100名学生电路分析课的成绩以压缩型BCD码形式存入变量BUF中,试编写程序段,统计成绩高于85分,在60--85分,,60分下的学生人数,仍以压缩BCD码形式存入GOOD.BAD, PASS变量中,并计算平均成绩.也以压缩型BCD码形式存入变量AVRG中(假定平均成绩低于100分,且舍去小数点后面的数)
  

DATA SEGMENT
BUF DB100 DUP(?)
GOOD DB?
PASS DB?
BAD  DB?
AVRG DB?
DATA ENDS
CODE  SEGMENT
ASSUME  CS:CODE,DS:DATA
START: MOV AX,DATA
                  MOV  DS,AX
                 MOV AX,0
                   MOV  BX,0
                 MOV  BX,OFFSET  BUF
                 MOV CX,100
L1:     INC BX
                   ADD   AX  ,[BX]
                    MOV  AVRG  ,X
                   MOV   AX ,0
                   CMP 85 ,[BX]
                   JA  L2
                   MOV AX,1
                   ADD GOOD,AX
                        JMP L1
L2:     CMP 60, [BX];
          JA  L3
                   MOV  AX,1
                     ADD PASS  AX
                       JMP L1
L3:       ADD BAD  AX
                       DEC  CX
                       JNZ  L1
                     MOV  AX   AVRG
                    DIV   BX   
                      MOV   AVRG  AX

请各位,看看我写的程序对不对,帮我修改一下,谢谢各位了。
搜索更多相关主题的帖子: DATA 学生 BCD 变量 
2007-11-25 20:42
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
有几个问题

1、循环前BX要先减1,不然第一个学生的成绩被跳过了
2、ADD   AX  ,[BX]。ax是16位寄存器,而分数是8位的压缩BCD码,不能这么写
3、压缩BCD码的处理,需要用到daa以及其他几个调整指令
4、MOV  AX   AVRG,两个操作数用逗号分隔,而不是空格

从BFS(Breadth First Study)到DFS(Depth First Study)
2007-11-25 21:37
ewenyxw0331
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-11-20
收藏
得分:0 
好的,谢谢班主,
1,那我要怎样做呢?题目不是说了,它已经是压缩型的BCD码了吗?为什么还要转呢?
2, ADD  AL ,[BX]  这样写可以吗?
请教教我,我不会呀!!
2007-11-26 10:16
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
1 压缩BCD码只是我们自己知道而已,编译器并不认为那是压缩BCD码,所以还是按正常的加法计算,对于结果就必须使用调整的指令,使之变成压缩BCD码,举个例子,比如5+7,用BCD码表示就是00000101+00000111,用add指令后,结果变为00001100B,也就是12D,但是12的压缩BCD码应该是00010010,所以这个时候就需要用到压缩BCD码的调整指令daa
2 这样就对了

从BFS(Breadth First Study)到DFS(Depth First Study)
2007-11-26 12:56
ewenyxw0331
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-11-20
收藏
得分:0 
哦,我再看看书,明白一点点了,现在主要是BCD码上有点问题,其它部分你再帮我看看,谢谢!!!
2007-11-26 15:50
快速回复:关于100名学生成绩统计的程序,有点问题,请看看!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027165 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved