汇编 输入成绩,排序输出,平均值,及格,不及格人数,最大最小值
简单成绩统计系统(汇编)
从键盘接受各个学生成绩,将各个学生成绩按降序排列,并求出最高的分数,最低的分数,及格人数,不及格人数,平均数
代码
简单成绩统计程序
先输入成绩,以空格键分隔,用Enter键表示输入完成。
// 成绩统计程序
data segment
string1 db 'please input score: $'
string2 db 'output score : $'
string3 db '| max score | $'
string4 db '| min score | $'
string5 db '| Passers-by | $'
string6 db '| Not Passer-by | $'
string7 db '| Average score | $'
string8 db '+----------------+-------+$'
kong db ' $'
string9 db ' | $'
string0 db 'Press any key to continue...$'
pas dw 0000H
npa dw 0000H
avg dw 0000H
num dw 0000H
avg2 dw 0000H
score dw 60 dup(0)
data endsstack segment
dw 64 dup(0)
stack endscode segmentassume cs:code,ds:data,ss:stack
main proc far
start:
t:call readycall inputcall sortcall countcall output jmp t
main endp
;========================ready=============================
ready:mov ax,datamov ds,ax ;ds数据段寄存器mov ax,stackmov ss,ax ;ss站段寄存器mov dx,offset string1mov ah,09hint 21h xor bx,bx ;临时存放输入进来的数xor cx,cx ;xor si,si ;score的指针xor di,di ;计数ret
;==========================input==========================
input:mov ah,1 int 21h cmp al,0dh jz over cmp al,20h jz savesub al,30hmov cl,4shl bx,cl add bl,al jmp input
save: mov score[si],bx add si,2 inc dixor bx,bxjmp input
over:mov score[si],bx inc di mov dl,0ah mov ah,02hint 21h mov cx,didec cx xor bx,bx ret
;===========================sort=========================
sort: ;bx=0,用冒泡排序,bx为要改变的哪一位的坐标mov si,2 mov dx,cx
cmp2:mov ax,score[bx]cmp ax,score[bx+si]jnc cmp3 ;大于或相等时转xchg ax,score[bx+si] mov score[bx],ax
cmp3:add si,2 dec dx jnz cmp2add bx,2 ;loop sort mov dx,offset string2mov ah,09hint 21hsub si,si ;si清零ret;==========================count==============================
count: ;si=0 mov num,di
count1:mov bx,score[si]xor ax,axclc ;cf=0mov ax,avgadd al,bldaa jc avg1
y: add ah,bhmov avg,ax clc ;cf=0cmp bx,60Hjl NPass ;有符号,jl小于跳转jge Pass ;有符号,jgl大于等于跳转
avg1: ;高位加一add ah,1Hdaajmp y
x:add si,2 dec di cmp di,0 jnz count1 sub si,si mov di,num ret
NPass: inc npa ;npa++jmp x
Pass:inc pasjmp x
;===========================output================================
output: ;si=0,di为输入的个数mov cx,di
output3: ;-------sort output---------mov bx,score[si] call outputh1 mov dl,20h mov ah,02hint 21h add si,2 dec di cmp di,0 jnz output3 output2:call line_feed; --------------max,min,pass,not pass output----- call hangmov dx,offset string4mov ah,09hint 21h ;显示string4mov bx,score[si-2] call outputh1 ;输出score中最后一个数call hou ;格子封口call line_feed ;回车换行call hang ;输出+---------------+---------+mov dx,offset string3mov ah,09hint 21h mov bx,score[0] call outputh1call houcall line_feedcall hangmov dx,offset string5mov ah,09hint 21hmov bx,pas call outputh1call houcall line_feedcall hangmov dx,offset string6mov ah,09hint 21hmov bx,npa call outputh1call houcall line_feed call hangmov dx,offset string7mov ah,09hint 21h ;---------10 to 16----------avg中是输入值的总和,以10进制保存,但计算是以16进制计算,mov bx,avg ;个位mov ah,0mov al,bland al,0fh ;保留al低四位(个位)的值mov avg2,axmov al,bl mov cl,4 ;十位shr al,cl mov cl,10mul cl ;ax=al*cl mov dx,0add avg2,ax mov al,bh ;百位and al,0fh ;保留ah低四位(百位)的值mov cx,100 ;同上mul cxmov dx,0add avg2,ax ;----------average-----------mov cx,nummov ax,avg2cwd div cx ;商放在ax中;-------16 to 10-----------除完了,就恢复10进制保存,方便以后输出 ;mov bh,0mov cl,10div clmov bl,ah ;余数(个位)给blcmp al,0h jz zcbwdiv clmov dl,ah ;余数(十位)给dlmov cl,4shl dl,cladd bl,dl ;个位和十位放在一起,cmp al,0hjz zmov cl,10cbwdiv clmov bh,ah ;将百位放入bh前
z:call outputh1call houcall line_feed call hangcall line_feedmov dx,offset string0mov ah,09hint 21hmov ah,01hint 21hmov avg,0mov avg2,0mov npa,0mov pas,0mov al,0 mov bh,07mov cx,0 mov dh,40 mov dl,60mov ah,06h int 10h mov bh,0 mov dh,0 mov dl,0mov ah,02h int 10hretmov ah,4chint 21h
;--------------------输出-------------------
outputh1:mov ch,1 ;用于判断前面是否全为0mov dl,bhmov cl,4 shr dl,cl ;千位,cmp dl,0 ;dl为零,不输出jz out01mov ch,0add dl,30hmov ah,02hint 21hjmp outputh2 ;为了跳过out01
out01: mov dx,offset kongmov ah,09hint 21h
outputh2: mov dl,bh and dl,0fh ;百位cmp ch,0 jz outputh21cmp dl,0 jz out02outputh21:mov ch,0add dl,30hmov ah,02hint 21hjmp outputl1
out02:mov dx,offset kongmov ah,09hint 21h
outputl1:mov dl,blmov cl,4 shr dl,cl ;十位cmp ch,0jz outputl11 ;同上cmp dl,0jz out03
outputl11: add dl,30hmov ah,02hint 21hjmp outputl2
out03:mov dx,offset kongmov ah,09hint 21h
outputl2: mov dl,bl and dl,0fh ;个位add dl,30hmov ah,02hint 21hret
line_feed: ;--------------换行-----------mov dl,0ahmov ah,02hint 21hmov dl,0dhmov ah,02hint 21hret
hang: ;输出|----------------+----------mov dx,offset string8mov ah,09hint 21hcall line_feed ret
hou: ;显示 |mov dx,offset string9mov ah,09hint 21hret
code endsend start
输出结果
我没有学过汇编,临时看书,百度写出来的,若有问题请各位大佬指出
曾百度参考一些大佬,因自己原因忘了出处,若有发现希望能够指出,谢谢!
汇编 输入成绩,排序输出,平均值,及格,不及格人数,最大最小值相关推荐
- C++:录入班级数学成绩,计算最大值、平均值、不及格人数
录入班级数学成绩,计算最大值.平均值.不及格人数 #include<iostream> using namespace std; int main() {float a=0;float s ...
- 输入十个学生的成绩,判断及格不及格人数,得到不及格人的学号
int[] xs = new int[10]; int [] cj=new int [3]; for (int i=0;i<10 ;i++ ) { Console.Write("请输入 ...
- python统计及格不及格人数_Python一次输入多个值(列出存储信息),python,一次性,数值,列表...
今天在完成python的PTA编程题的时候认识到自己知识的巨大漏洞: 7-1 成绩统计 现有某班级Python考试成绩,请你帮老师做一下成绩统计,找出最高分.最低分,算出平均分,统计出不及格人数 输入 ...
- [C语言]统计成绩问题:输入某班学生某门课的成绩(最多不超过40人,具体人数由用户键盘输入),用函数编程统计不及格人数。
输入 输入包含两行: 第一行是一个整数n,表示班级人数. 第二行是n个整数,表示n个学生的成绩,相邻两项之间用一个空格隔开. 输出 输出不及格人数. 输入示例 3 70 90 58 ...
- python用一维数组存储学号和成绩_用一维数组存储学号和成绩,然后,按成绩排序输出...
输入描述: 输入第一行包括一个整数N(1<=N<=100),代表学生的个数.接下来的N行每行包括两个整数p和q,分别代表每个学生的学号和成绩. 输出描述: 按照学生的成绩从小到大进行排序, ...
- Java学生成绩排序输出的三种不同方法
要实现学生成绩的排序,要从两方面来考虑如何设计程序. 第一方面是选择存储方式 第二方面是选择什么样的排序方式 以下是三种不同类型的实现: 使用对象数组存储学生信息,冒泡法实现排序 使用List存储学生 ...
- 8.4 输入某班学生某门课的成绩,(最多不超过40人,具体人数由用户键盘输入),用函数编程统计不及格人数
#include<stdio.h> main() { int n,a[40],i,count=0; printf("请输入学生人数:"); scanf("%d ...
- C语言输入成绩等级输出对应分数段
#include <stdio.h> #include <stdlib.h>/* run this program using the console pauser or ad ...
- Java实现成绩判断优秀 良好 及格 不及格
package Day04.Multi;public class Scoretest {public static void main(String[] args) {java.util.Scanne ...
最新文章
- 游戏外挂技术:编程实现内存检索(检索内存中指定数据)
- hls之m3u8、ts流格式详解
- eclipse启动tomcat无法访问
- B君的圆锥(51Nod-1629)
- 用两种方法求解九宫算问题
- 算法工程师常用Linux命令总结
- bzoj 4537: [Hnoi2016]最小公倍数 分块+并查集
- BScroll 使用(Vue)
- Macbook pro 2015 13寸丐版更换512G固态流程记录
- Excel点击按钮隐藏指定行
- jQuery each()跳出循环
- 我知道你在淘宝买过很多东西,但是你买过一所大学吗
- 2021年茶艺师(中级)考试报名及茶艺师(中级)免费试题
- 微信开发者工具下载及调试
- 猫眼网历史日票房数据爬取
- 使用sendBeacon进行前端数据上报
- ioppc技术_广东电网有限责任公司河源供电局基于IOPPC线路光纤网络智能态势感知技术研究技术服务等5个项目采购公告...
- 微信小程序如何修改小程序名称
- 数字图像处理第八章----图像压缩
- Suzy找到实习了吗Day 7 | 哈希表结束啦 454. 四数相加 II,383. 赎金信,15. 三数之和,18. 四数之和