完整汇编程序:设有10个学生的成绩分别为46、68、88、87、76、89、99、65、100和80分。试编制程序统计低于60分、60~69分、70~79分、80~89分、90~99分及100分的人数,并存放到S5、S6、S7、S8、S9及S10单元中。
时间: 2023-10-29 21:06:34 浏览: 52
以下是一份使用汇编语言编写的统计学生成绩的程序:
```
ORG 1000H ; 将程序加载到内存地址1000H处
MOV SI, 2000H ; 将SI寄存器指向存放学生成绩的数组的起始地址
MOV CX, 10 ; 学生人数为10
MOV BX, 0 ; 初始化计数器
LOOP1:
MOV AL, [SI] ; 将当前学生的成绩读入AL寄存器中
CMP AL, 60 ; 判断是否低于60分
JB COUNT1 ; 如果是,则跳转到COUNT1标签
CMP AL, 70 ; 判断是否在60-69分之间
JB COUNT2 ; 如果是,则跳转到COUNT2标签
CMP AL, 80 ; 判断是否在70-79分之间
JB COUNT3 ; 如果是,则跳转到COUNT3标签
CMP AL, 90 ; 判断是否在80-89分之间
JB COUNT4 ; 如果是,则跳转到COUNT4标签
CMP AL, 100 ; 判断是否等于100分
JNE NEXT ; 如果不是,则跳转到NEXT标签
INC BX, 1 ; 否则计数器加1,跳转到NEXT标签
JMP NEXT
COUNT1:
INC BYTE PTR [S5] ; 将S5单元中的值加1
JMP NEXT
COUNT2:
INC BYTE PTR [S6] ; 将S6单元中的值加1
JMP NEXT
COUNT3:
INC BYTE PTR [S7] ; 将S7单元中的值加1
JMP NEXT
COUNT4:
INC BYTE PTR [S8] ; 将S8单元中的值加1
JMP NEXT
NEXT:
INC SI ; 将指针指向下一个学生的成绩
LOOP LOOP1 ; 继续循环
MOV AH, 4CH ; 结束程序
INT 21H
; 数据段
ORG 2000H
DB 46, 68, 88, 87, 76, 89, 99, 65, 100, 80
DB 0, 0, 0, 0, 0, 0
```
在这个程序中,我们首先定义了一个存放学生成绩的数组,然后使用循环来遍历数组中的每个元素,并根据成绩的范围来对应地增加相应的计数器。最后,我们将每个范围内的学生人数存储在不同的内存单元中,以便以后使用。
请注意,这个程序是基于汇编语言编写的,因此需要使用汇编编译器来将其编译成可执行文件。