微机原理汇编语言,对输入的一些成绩进行分类汇总
时间:2025-02-21
时间:2025-02-21
(a)所有数字由键盘输入;(b)输入的成绩个数为任意个(小于100);(c)对成绩进行归类并输出显示在屏幕:·显示最高成绩、最低成绩、平均成绩·显示90-100分人数,80-89分人数,70-79分人数,60-69分人数,低于60分人数,·显示无效数字个数(非数字或大于100数字个数)
汇编语言程序
成绩汇总
对输入的一些成绩进行分类汇总。
要求:
(a)所有数字由键盘输入;
(b)输入的成绩个数为任意个(小于100);
(c)对成绩进行归类并输出显示在屏幕:
·显示最高成绩、最低成绩、平均成绩
·显示90-100分人数,80-89分人数,70-79分人数,60-69分人数,低于60分人数,
·显示无效数字个数(非数字或大于100数字个数)
data segment
save DW 100 dup(0) ;输入数据的存放位置
buffer dw 0 ;暂时存放当前输入的数字
n db 1 ; 总共输入的数字个数
highest dw 0
lowest dw 0
average dw 0
0to60 dw 0
60to70 dw 0
70to80 dw 0
80to90 dw 0
90to100 dw 0
wrong dw 0
shuzi_w db 0
shuzi_q db 0
shuzi_b db 0
shuzi_s db 0
shuzi_g db 0 ;将排序好的数字显示出来,需要每一位转换成ASCII码
string db 'input numbers:',0dh,0ah,24h
string1 db 'output: ',0dh,0ah,24h
string2 db 'highest:',0dh,0ah,24h
string3 db 'lowest: ',0dh,0ah,24h
string4 db '0~59: ',0dh,0ah,24h
(a)所有数字由键盘输入;(b)输入的成绩个数为任意个(小于100);(c)对成绩进行归类并输出显示在屏幕:·显示最高成绩、最低成绩、平均成绩·显示90-100分人数,80-89分人数,70-79分人数,60-69分人数,低于60分人数,·显示无效数字个数(非数字或大于100数字个数)
string5 db '60~69: ',0dh,0ah,24h
string6 db '70~79: ',0dh,0ah,24h
string7 db '80~89: ',0dh,0ah,24h
string8 db '90~99: ',0dh,0ah,24h
string9 db 'wrong: ',0dh,0ah,24h
string10 db 'average:',0dh,0ah,24h
kongge db 0dh, 0ah,24h
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
; set segment registers:
xor ax,ax
push ax
mov ax, data
mov ds, ax
mov es, ax
lea dx , string
mov ah, 09h
int 21h ;显示请输入数据
;>>>>>>>>>>>>>>>>>>>>数
入>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
mov di , offset save
mov ax , 0
mov buffer,ax
shurushuzi:
mov ah,01h
int 21h
cmp al,0dh
je stopinput
据的输
(a)所有数字由键盘输入;(b)输入的成绩个数为任意个(小于100);(c)对成绩进行归类并输出显示在屏幕:·显示最高成绩、最低成绩、平均成绩·显示90-100分人数,80-89分人数,70-79分人数,60-69分人数,低于60分人数,·显示无效数字个数(非数字或大于100数字个数)
cmp al,'0'
jb shurukongge
cmp al,'9'
ja shurukongge
;将输入的字符转为对应的数字
sub al,30h ;ascll码转为相应的十进制数
mov ah,0
mov bx,ax ;buffer保存的为前一个数字,ax为当前输入的字符,buffer*10+ax即为输入的十进制数
mov dx,buffer
mov ax,10
mul dx
add ax,bx
mov buffer,ax
mov [di],ax ;将转化好的数字放入储存空间
jmp shurushuzi; 输入大于10 的数字的下一位
;输入了空格,开始为输入下一个数字做准备
shurukongge:
call konggexianshi
add di,2 ;指向下一个储存单元
inc n
mov ax,0
mov buffer,ax ;当前数字存入缓冲区等待处理
jmp shurushuzi
stopinput:
call konggexianshi
;>>>>>>>>>>>>>>>>>>>>数据处理部分>>>>>>>>>>>>>>>>>>>>>>>>>
;比较全部数据,找出最高成绩
mov cl,n
mov ch,0
(a)所有数字由键盘输入;(b)输入的成绩个数为任意个(小于100);(c)对成绩进行归类并输出显示在屏幕:·显示最高成绩、最低成绩、平均成绩·显示90-100分人数,80-89分人数,70-79分人数,60-69分人数,低于60分人数,·显示无效数字个数(非数字或大于100数字个数)
mov bx,offset save
mov ax,[bx]
lab1:
cmp ax,[bx]
ja lab2
mov ax,[bx]
lab2:
inc bx
inc bx
loop lab1
mov highest,ax
;比较全部数据,找出最低成绩
mov cl,n
xor ch,ch
mov bx,offset save
mov ax,[bx]
lab3:cmp ax,[bx]
jb lab4
mov ax,[bx]
lab4:
inc bx
inc bx
loop lab3
mov lowest,ax
;求平均值
mov cl,n
xor ch,ch
mov bx,offset save
mov ax,0
lab5:
add ax,[bx]
adc AX,0
inc bx
inc bx
loop lab5
mov bl,n
(a)所有数字由键盘输入;(b)输入的成绩个数为任意个(小于100);(c)对成绩进行归类并输出显示在屏幕:·显示最高成绩、最低成绩、平均成绩·显示90-100分人数,80-89分人数,70-79分人数,60-69分人数,低于60分人数,·显示无效数字个数(非数字或大于100数字个数)
xor ah,ah
mov average,ax
;各段人数统计
mov cl,n
mov bx,offset save
L12:
cmp [bx],0
…… 此处隐藏:4322字,全部文档内容请下载后查看。喜欢就下载吧 ……