这是东南大学《微机原理与接口技术》里第三章的习题,请各位编程高手帮帮忙~~~~

来源:百度知道 编辑:UC知道 时间:2024/06/25 20:23:40
在当前数据段1000H开始的顺序10个单元中,存放10位同学某门课程的考试成绩(0~100),编写程序统计大于等于90分,80~89分,70~79分,60~69分,以及<60分的人数,并将结果放到2000H开始的单元中

帮你看了下,下面这段程序应该可以
DATA SEGMENT
N DB 5 DUP(?) 内存空间开辟5个字节分别存放5个分数段的人数
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE; DS:DATA;
MOV CX 10
LEA BX N
MOV SI 1000H
A:MOV AX [SI] 取第一个学生成绩
CMP AX 60; JB P1 与60比较,低于60则执行P1,下面至P4相类似
CMP AX 70; JB P2
CMP AX 80; JB P3
CMP AX 90; JB P4
CMP AX 90; JZ P5 与90比较,等于90则执行P5
JMP NEXT
P1:INC[BX]; JMP NEXT 将<60分的人数加1,以下至P5类似
P2:INC[BX+1]; JMP NEXT
P3:INC[BX+2]; JMP NEXT
P4:INC[BX+3]; JMP NEXT
P5:INC[BX+4]; JMP NEXT
NEXT: INC SI SI加1使之指向下一个学生成绩
LOOP A 将CX置数器减一,CX≠0则循环A段
MOV CX 6
MOV DI 0 A段完成统计工作,B段将完成存放工作
B:MOV AL [BX+DI] 取变量第一单元,即小于60分人数
MOV [2000H+DI] AL 存入2000H单元
INC DI DI加一,指向变量下一单元,及存放空间的下一单元
LOOP B; 将CX置数器减一,CX≠0则循环B段,直至结束
MOV AH 4CH;
INT 21H
C