CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他开发语言 >  汇编语言

新手求助来分析程序!谢谢!

楼主hougy()2005-06-02 14:59:57 在 其他开发语言 / 汇编语言 提问

题目要求:  
  定义一数组GRADE存放有100个学生某门功课的考试成绩,请用主--子程序方式编写程序,统计各分数段的人数。即要求统计90--100分,80--89分,70--79分,60--69分以及60分以下的各有多少人。  
  源代码如下:  
  DATA     SEGMENT  
              ORG     0010H  
  GRADE   DW     98,56,87,12…………;共100个数据  
  COUNT   EQU   ($-GRADE)/2  
  DA0       DW       ?       ;定义的这个变量起了什么作用?  
  DA6       DW       ?  
  DA7       DW       ?  
  DA8       DW       ?  
  DA9       DW       ?  
  DA10     DW       ?  
  DATA     ENDS    
  CODE     SEGMENT  
              ASSUME     CS:CODE,DS:DATA  
  BEG:     MOV     AX,DATA  
              MOV     DS,AX  
              MOV     CX,COUNT  
              CALL   SUB1  
              MOV     AH,4CH  
              INT     21H  
  SUB1     PROC  
              MOV     SI,0  
  DON:     MOV     AX,GRADE[SI]  
              MOV     BX,10  
              DIV     BL  
              MOV     BL,AL  
              CBW  
              SUB     BX,5  
              CMP     BX,0  
              JG       NEXT  
              MOV     BX,0  
  NEXT:   SAL     BX,1     ;为什么扩大2倍?  
              INC     DA0[BX]     ;这条命令该如何理解?为什么要这样做?有什么作用?  
              ADD     SI,2  
              LOOP     DON  
              RET  
  SUB1     ENDP  
  CODE     ENDS  
              END     BEG  
  为什么没有看到其他5个变量被用在程序中?那么又如何来区分各个分数段的人数是多少呢?这是一道例题,我看了几遍了,都找不出原因。谢谢高手指教!立刻结贴!  
  对了,顺便问问,哪位有没有debug的详细用法说明,是不是用这个调试程序能够找出问题的所在?我是新手,一次也没有用过,不好意思。多谢!  
  问题点数:0、回复次数:6Top

1 楼csdsjkk()回复于 2005-06-02 15:37:31 得分 0

da0记录不及格的人数  
  得分处以10,商在0--10之间,把0-5(不及格)归为一档放在da0,  
  6-10分的分别归在da6--da10,  
   
   
   
  Top

2 楼hougy()回复于 2005-06-02 16:20:08 得分 0

da0记录不及格的人数  
  得分处以10,商在0--10之间,把0-5(不及格)归为一档放在da0,(这些我能理解)  
   
  6-10分的分别归在da6--da10,(可是这些每个分数段的分类并没有在程序中体现出来,没有按题目要求来编程序)  
  (主要是这两条指令理解不透:NEXT:   SAL     BX,1     ;为什么扩大2倍?  
                                                          INC     DA0[BX]     ;这条命令该如何理解?为什么要这样做?有什么作用?)  
  Top

3 楼csdsjkk()回复于 2005-06-02 16:26:21 得分 0

DA0       DW       ?  
  DA6       DW       ?  
  DA7       DW       ?  
  DA8       DW       ?  
  DA9       DW       ?  
  DA10     DW       ?  
  要当作一个数组来理解,  
  bx是数组的下标,因为数组类型是字(两字节),因此把bx*2来访问数组  
  Top

4 楼csdsjkk()回复于 2005-06-02 16:30:40 得分 0

DA0       DW       ?         =   da0[0*2]           ,   bx=0  
  DA6       DW       ?         =   da0[1*2]           ,   bx=6-5  
  DA7       DW       ?         =   da0[2*2]           ,   bx=7-5  
  DA8       DW       ?         =   da0[3*2]           ,   bx=8-5  
  DA9       DW       ?         =   da0[4*2]           ,   bx=9-5  
  DA10     DW       ?         =   da0[5*2]           ,   bx=10-5  
   
   
  Top

5 楼kongguangming(Fly)回复于 2005-06-02 17:44:23 得分 0

debug   帮助  
   
  assemble           A   [address]  
  compare             C   range   address  
  dump                   D   [range]  
  enter                 E   address   [list]  
  fill                   F   range   list  
  go                       G   [=address]   [addresses]  
  hex                     H   value1   value2  
  input                 I   port  
  load                   L   [address]   [drive]   [firstsector]   [number]  
  move                   M   range   address  
  name                   N   [pathname]   [arglist]  
  output               O   port   byte  
  proceed             P   [=address]   [number]  
  quit                   Q  
  register           R   [register]  
  search               S   range   list  
  trace                 T   [=address]   [value]  
  unassemble       U   [range]  
  write                 W   [address]   [drive]   [firstsector]   [number]  
  allocate   expanded   memory                 XA   [#pages]  
  deallocate   expanded   memory             XD   [handle]  
  map   expanded   memory   pages               XM   [Lpage]   [Ppage]   [handle]  
  display   expanded   memory   status     XSTop

6 楼hougy()回复于 2005-06-06 16:41:45 得分 0

在大家的指点下,我的理解进步了很多,真是万分感谢,可是我还是有点迷惑,因为:  
  DA0       DW       ?  
  DA6       DW       ?  
  DA7       DW       ?  
  DA8       DW       ?  
  DA9       DW       ?  
  DA10     DW       ?  
  既然要当作一个数组来理解,说明该数组共六个变量,大家已经提示说:“把0-5(不及格)归为一档放在da0”,可是为什么还要INC     DA0[BX]这个呢?即DA0[BX],我把该条指令理解为:DA0+[BX]我感觉这样理解不对,Top

相关问题

  • 语法分析程序
  • 急!程序分析,修改
  • 救助!c++程序错误分析
  • 高分求助!!词法分析程序
  • 100分求助语法分析程序
  • 请帮忙分析一段程序
  • 帮忙分析下程序(面试题)
  • 词法分析程序设计问题
  • 分析一个奇怪的程序
  • 分析《程序员大本营2000》的源程序。

关键词

  • da
  • bx
  • dw
  • 数组
  • 程序
  • 不及格
  • 理解
  • 人数
  • 分数段
  • grade

得分解答快速导航

  • 帖主:hougy

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo