新手求助来分析程序!谢谢!
题目要求:
定义一数组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




