微机原理汇编语言,对输入的一些成绩进行分类汇总

发布时间:2024-11-06

(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

jb jw6

cmp [bx],60

jb jw1

cmp [bx],70

jb jw2

cmp [bx],80

jb jw3

cmp [bx],90

jb jw4

cmp [bx],100

jb jw5

ja jw6

jw1: ;xiaoyu60

add 0to60,1

jmp jw7

jw2: ;

add 60to70,1

jmp jw7

jw3: ;

add 70to80,1

jmp jw7

jw4: ;

add 80to90,1

jmp jw7

jw5: ;

add 90to100,1

jmp jw7

jw6: ;

add wrong,1

jmp jw7

jw7:

inc bx

(a)所有数字由键盘输入;(b)输入的成绩个数为任意个(小于100);(c)对成绩进行归类并输出显示在屏幕:·显示最高成绩、最低成绩、平均成绩·显示90-100分人数,80-89分人数,70-79分人数,60-69分人数,低于60分人数,·显示无效数字个数(非数字或大于100数字个数)

loop L12

;xianshichengxu

push dx

push ax

lea dx,string1

mov ah ,09h

int 21h

lea dx,string2

mov ah ,09h

int 21h

pop ax

pop dx

mov ax,highest

mov dx,0

call shujuxianshi

call konggexianshi

push dx

push ax

lea dx,string3

mov ah ,09h

int 21h

pop ax

pop dx

mov ax,lowest

mov dx,0

call shujuxianshi

call konggexianshi

push dx

push ax

lea dx,string10

mov ah ,09h

int 21h

pop ax

pop dx

mov ax,average

mov dx,0

call shujuxianshi

call konggexianshi

push dx

(a)所有数字由键盘输入;(b)输入的成绩个数为任意个(小于100);(c)对成绩进行归类并输出显示在屏幕:·显示最高成绩、最低成绩、平均成绩·显示90-100分人数,80-89分人数,70-79分人数,60-69分人数,低于60分人数,·显示无效数字个数(非数字或大于100数字个数)

lea dx,string4

mov ah ,09h

int 21h

pop ax

pop dx

mov ax,0to60

mov dx,0

call shujuxianshi

call konggexianshi

push dx

push ax

lea dx,string5

mov ah ,09h

int 21h

pop ax

pop dx

mov ax,60to70

mov dx,0

call shujuxianshi

call konggexianshi

push dx

push ax

lea dx,string6

mov ah ,09h

int 21h

pop ax

pop dx

mov ax,70to80

mov dx,0

call shujuxianshi

call konggexianshi

push dx

push ax

lea dx,string7

mov ah ,09h

int 21h

pop ax

pop dx

mov ax,80to90

mov dx,0

call shujuxianshi

call konggexianshi

push dx

(a)所有数字由键盘输入;(b)输入的成绩个数为任意个(小于100);(c)对成绩进行归类并输出显示在屏幕:·显示最高成绩、最低成绩、平均成绩·显示90-100分人数,80-89分人数,70-79分人数,60-69分人数,低于60分人数,·显示无效数字个数(非数字或大于100数字个数)

lea dx,string8

mov ah ,09h

int 21h

pop ax

pop dx

mov ax,90to100

mov dx,0

call shujuxianshi

call konggexianshi

push dx

push ax

lea dx,string9

mov ah ,09h

int 21h

pop ax

pop dx

mov ax,wrong

mov dx,0

call shujuxianshi

call konggexianshi

;;;;;;;;;;;;;;;;;;;;;;;;;;

konggexianshi proc near

push ax

push dx

mov ah,09

mov dx ,offset kongge

int 21h

pop dx

pop ax

ret

konggexianshi endp

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

xianshidangeshuzi proc near

push dx

push ax

mov dx,0

mov dl,al

xor ax,ax

(a)所有数字由键盘输入;(b)输入的成绩个数为任意个(小于100);(c)对成绩进行归类并输出显示在屏幕:·显示最高成绩、最低成绩、平均成绩·显示90-100分人数,80-89分人数,70-79分人数,60-69分人数,低于60分人数,·显示无效数字个数(非数字或大于100数字个数)

mov ah,02h

int 21h

pop ax

pop dx

ret

xianshidangeshuzi endp

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

shujuxianshi proc near

push cx

push ds

mov cx,10000

div cx

push dx ;保存余数

mov shuzi_w,al

cmp shuzi_w,0

je j1

add al,30h

call xianshidangeshuzi

j1:

pop ax;取余数

mov dx,0

mov cx,1000

div cx

push dx;保存余数

mov shuzi_q,al

add shuzi_w,al

cmp shuzi_w,0

je j2

add al,30h

call xianshidangeshuzi

j2:

(a)所有数字由键盘输入;(b)输入的成绩个数为任意个(小于100);(c)对成绩进行归类并输出显示在屏幕:·显示最高成绩、最低成绩、平均成绩·显示90-100分人数,80-89分人数,70-79分人数,60-69分人数,低于60分人数,·显示无效数字个数(非数字或大于100数字个数)

pop ax;取余数

mov dx,0

mov cx,100

div cx

push dx;保存余数

mov shuzi_b,al

add shuzi_w,al

cmp shuzi_w,0

je j3

add al,30h

call xianshidangeshuzi

j3:

pop ax;取余数

mov dx,0

mov cx,10

div cx

push dx;保存余数

mov shuzi_s,al

add shuzi_w,al

cmp shuzi_w,0

je j4

add al,30h

call xianshidangeshuzi

j4:

pop dx

add dl,30h

mov al,dl

call xianshidangeshuzi

xor ax,ax ;chushuhua mov shuzi_w,al

mov shuzi_q,al

mov shuzi_b,al

mov shuzi_g,al

(a)所有数字由键盘输入;(b)输入的成绩个数为任意个(小于100);(c)对成绩进行归类并输出显示在屏幕:·显示最高成绩、最低成绩、平均成绩·显示90-100分人数,80-89分人数,70-79分人数,60-69分人数,低于60分人数,·显示无效数字个数(非数字或大于100数字个数)

pop ds

pop cx

ret

shujuxianshi endp

mov ax, 4c00h ; exit to operating system. int 21h

ends

end start ; set entry point and stop the assembler.

微机原理汇编语言,对输入的一些成绩进行分类汇总.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219