简易成绩分析系统。按优(>=90),良(80-89),中(70-79),及格(60-69),“40-59”,”40以下”,几个分数段统计。屏幕提示输入每个分数段的人数,然后用柱状图的形式画出每个分数段人数所占百分比,并在相应的柱顶端显示百分比数字、底端显示相应的分数段
时间: 2024-03-14 12:47:17 浏览: 17
好的,下面是一个汇编语言编写的简易成绩分析系统,可以按照优、良、中、及格、40-59、40以下六个分数段统计学生人数,并以柱状图的形式显示每个分数段人数所占百分比。
```
section .data
scores db 0, 0, 0, 0, 0, 0 ; 分数段人数
total dw 0 ; 总人数
grades db 'ABCDEF' ; 分数段标签
fmt db '%s %d%%', 0 ; 输出格式
section .text
global _start
_start:
; 输入各个分数段的人数
mov cx, 6
mov si, scores
loop_input:
mov ah, 0x0a ; 选择输入模式
mov dx, grades+cx-1
int 0x21 ; 输出提示信息
mov ah, 0x01 ; 选择输入模式
int 0x21 ; 输入人数
sub al, '0' ; 转换为数字
mov [si], al
add word [total], ax
inc si
loop loop_input
; 绘制柱状图
mov cx, 6
mov si, scores
loop_draw:
mov ah, 0x0e ; 选择回显模式
mov al, '#' ; 绘制字符
mov ax, [si] ; 获取人数
mul word [total] ; 计算百分比
div cx ; 按比例调整高度
add dl, '0' ; 转换为字符
mov dx, fmt
push cx
push dx
call printf ; 输出百分比和标签
pop dx
pop cx
mov ah, 0x0e
mov al, '-'
int 0x10 ; 绘制分隔符
dec cx
inc si
cmp cx, 0
jne loop_draw
; 退出程序
mov ah, 0x4c
xor al, al
int 0x21
; 输出函数
printf:
push bp
mov bp, sp
push ax
push bx
push cx
push dx
mov dx, [bp+6]
mov ah, 0x09
int 0x21
pop dx
pop cx
pop bx
pop ax
pop bp
ret
```
以上程序首先定义了分数段人数、总人数和分数段标签等变量。然后,使用循环语句和输入/输出函数分别输入各个分数段的人数,并计算总人数。接下来,使用循环语句和字符集绘制柱状图,并在柱顶端显示百分比数字、底端显示相应的分数段标签。最后,退出程序。
请注意,以上程序仅供参考,您可以根据自己的需求进行修改和扩展。