汇编语言实验六 学生成绩管理系统设计实验

合集下载

汇编语言-学生信息管理系统实验报告(含源代码)

汇编语言-学生信息管理系统实验报告(含源代码)

北京邮电大学计算机学院《微机原理与接口技术》学生信息管理系统实验报告姓 名: 许伟林学 号: 08211306指导教师: 倪晖日 期: 2010/12/22内容目录一、实验目的 (3)二、实验环境 (3)三、实验任务 (3)四、实验设计 (3)四.一、关键数据结构 (3)学生信息 (3)排序序列 (4)菜单跳转表 (4)四.二、关键子程序和宏定义 (4)部分宏定义 (4)部分子程序 (5)四.三、子程序调用关系图 (5)0、输入学生信息 (5)1、按学号排序输出 (6)2、按成绩排序输出 (6)3、统计并输出平均成绩 (6)4、统计并输出各分数段人数 (6)四.四、程序源代码 (6)五、程序运行效果 (25)六、实验总结 (28)一、实验目的掌握8086汇编程序设计的基本方法了解用汇编语言写程序的麻烦,坚定学好高级语言的信心二、实验环境Windows XPMASMPlus 1.2集成实验环境三、实验任务编写学生信息管理系统,详细要求见课本119页。

四、实验设计四.一、关键数据结构学生信息student struc;学生的数据结构,32字节,2^5,便于计算地址xname db14dup('$')class db14dup('$')num dw0score dw0;为保存1位小数,以10倍值保存student endsstu_size equ 32;32=2^5stu_db student100dup(<'x','y',6,500>);100名学生的空间stu_num db0;已保存的学生人数学生信息结构体长32字节,即2^5,便于计算地址。

姓名和班级以字符串保存,限长13字节;学号和成绩以16位整数保存。

为精确到1位小数,成绩域保存的是真实成绩的10倍值。

程序申请了保存100名学生信息的连续内存空间,并以stu_num变量记录已输入的学生人数。

汇编学生管理系统实验报告

汇编学生管理系统实验报告

《汇编语言程序设计》综合程序设计实验报告题目:简单学生成绩管理一、项目简介本程序为一简单的学生成绩管理程序,通过学生姓名对学生成绩进行相应的增删改查操作,同时加入音乐程序让系统更加生动、形象。

语言为80x86汇编语言,运行环境为MASM6.0 二、小组成员具体分工小组成员共同商讨完成程序的需求分析,设计好程序的各个功能模块。

具体分工:曹玉松:完成学生成绩的查询,输出,排序,程序整合 吕盼举:音乐播放、清屏、图形输出、实验报告撰写 三、需求分析与设计(对项目的详细分析步骤)成绩管理系 统学生成绩查询显示音乐频率波状图音乐播放清屏(设置背景色)输出学生信息 对学生成绩排序输出选择乐曲播放本程序综合运用课上所学知识,主在完成学生成绩的管理工作,首先,有一个菜单界面,用来给用户提示信息,提供七个菜单选项,包括成绩的查询,学生信息的输出,成绩的排序、增加、删除等,另外还有一个让人劳逸结合的音乐播放功能,有音乐的选择、播放功能,在放音乐的同时可以将音乐的频率随着音乐同步以柱状图形显示在屏幕上,模拟mp3音乐播放的功能。

四、代码及分析亮点一:子程序综合运用各种子程序,嵌套调用,既有段内也有段间子程序亮点二:宏多次使用宏定义,通过宏的调用使程序代码简化亮点三:音乐播放选择乐曲进行播放,亮点四:图形动态显示调用时钟中断,绘制图像,动态显示亮点五:伪操作代码:output macro s mov dl,sadd dl,30hmov ah,2int 21hendmshow macro xingcan lea dx,xingcanmov ah,9int 21hendmshuru macro aLEA SI, ds:MUS_FREQ&a ;取发声的频率(音阶)表首地址LEA BP, ds:MUS_TIME&a ;endmhuanhang macromov ah,2mov dl,10int 21hmov ah,4chmov ah,2mov dl,13int 21hmov ah,4chendmshowkongge macro mov ah,2mov dl,00hint 21hmov ah,4chendmSTACK SEGMENT PARA STACK 'STACK' ;定义堆栈段DB 64 DUP ('STACK...') STACK ENDS ;以上定义堆栈段;************************** ****************DATAS SEGMENTMUS_FREQ0 DW 330,294,262,294,3 dup(330)dw 3 dup(294),330,392,392DW330,294,262,294,4dup(330),294,294,330,294,262,-1MUS_TIME0 DW 6 dup(25),50DW 2 dup(25,25,50)DW 12 dup(25),100 MUS_FREQ1 dw 330,392,330,294,330,392,330,29 4,330dw330,392,330,294,262,294,330,39 2,294dw260,262,220,196,220,262,294,33 0,262,-1MUS_TIME1 dw 3 dup(50),25,25,50,25,25,100dw 2 dup(50,50,25,25),100dw 3 dup(50,25,25),100MUS_FREQ2 DW 262, 262, 294, 262, 349, 330, 262dw 262, 294, 262,392, 349, 262, 262DW 294, 440, 349, 330, 294, 466dw 466,440,262, 392, 349, -1MUS_TIME2 DW 25, 25, 50, 50, 50, 100DW 25, 25, 50, 50, 50, 100DW 25, 25, 50, 50, 50, 50, 150DW 25, 25, 50, 50, 50, 100score dw 64,71,66,61,78,80,83,89,79N=$-scoren1=N/2name1 db 'aa$'db 'bb$'db 'cc$'db 'dd$'db 'ee$'db 'ff$'db 'gg$'db 'hh$'db 'ii$'x equ $-name1ww equ x/2len_s equ 2str_d db 30,?,30 dup(?) mess1 db 'match$'mess2 db 'no name!$'nam db 13,10,'name grade',13,10,'$'string db 10,13,'********************* 'db 10,13,'1.output the name and grade'db 10,13,'2.seek'db 10,13,'3.paixu'db 10,13,'4.tongji'db 10,13,'5.qingping'db 10,13,'oyijiehe'db 10,13,'7.Quit'db10,13,'********************* 'db 10,13,'select:','$'function1 db 10,13,'output:',10,13,'$'function2 db 10,13,'input:','$'function3 db 10,13,'***********Goodbye!***********','$'temp1 dw ?temp2 dw ?a db 10b dw ?hc db 1MUS_LST DB'****************', 0DH, 0AHDB '0 MUSIC 0', 0DH, 0AHDB '1 MUSIC 1', 0DH, 0AHDB '2 MUSIC 2', 0DH, 0AHDB '3 exit ', 0DH, 0AHDB'****************', 0DH, 0AH, '$'DATAS ENDSCODES SEGMENTASSUMECS:CODES,DS:DATAS,SS: STACKSTART:MOV AX,DATASMOV DS,AXMOV ES,AXhaha: mov ah, 00hmov al, 10h ;选择显示方式10h(16色图形)int 10hmov ah, 0bhmov bh, 00hmov bl, 01h ;背景设为蓝色int 10hcall functionfunction:lea dx,stringmov ah,9int 21hmov ah,1int 21hcmp al,'1'je case1cmp al,'2'je case2cmp al,'3'je case3cmp al,'4'je case4cmp al,'5'je case5cmp al,'6'je case6cmp al,'7'je case7jmp functioncase1: lea dx,function1mov ah,9int 21hmov cx,n1mov bp,offset name1 xianshixingming:mov dx,bpmov ah,9int 21hshowkonggeadd bp,3loop xianshixingminghuanhangMOV CX,N/2call showscorejmp functioncase2:show function2lea dx,str_dmov ah,0ahint 21hmov cl,wwLEA SI,name1mov di,0push dibijiao:push cxpush dx;比较字符串长度是否一致XOR bX,bXMOV bL,str_d+1CMP bX,len_sJNE MS;比较字符串中各元素是否一致LEA DI,str_d+2mov cl,len_slea bp,scorepush siMAD:MOV AL,DS:[SI]MOV BL,ES:[DI]CMP AL,BLJNE MSINC SIINC DILOOP MADpop siMOV CX,1huanhangpop dimov si,0 push dicall showscoreMS: pop diadd di,2push dipop cxloop bijiaolea dx,mess2 SHOW3:;输出匹配结果信息MOV AH,09HINT 21HMOV AH,4CHjmp functioncase3:call maopaocase4: call tongji case5: jmp hahacase6:push axpush bxpush cxpush dxpush sipush bppush dicall MP3pop dipop bppop sipop dxpop cxpop bxpop axjmp functioncase7: lea dx,function3mov ah,9int 21hMOV AH,4CHINT 21H MP3 proccall waitfa5:lea dx,mus_lstmov ah,09int 21hmov ah,01int 21hcmp al,'0'jz a1cmp al,'1'jz a2cmp al,'2'jz a3cmp al,'3'jz end_musjmp a5ac: call waitfa1: shuru 0call waitfjmp a4a2: shuru 1call waitfjmp a4a3: shuru 2call waitfa4: mov cx,0mov bl,0FREQ:MOV DI, ds:[si] ;读取频率值CMP DI, -1 ;歌曲结束了吗?JE a5mov bl,01mov dx,disub dx,190mov b,dx aa: mov ah, 0ch ;写像素点mov al, blint 10hinc dxcmp dx, 400jne aamov dx,bpush axsub ax,axinc cxsub a,5mov ax,cxdiv amov a,10cmp ah,0pop axjnz aaMOV BX, DS:[BP] ;读取节拍CALL SOUNDF ;调通用发声子程序inc cx; aainc cx; jne aainc cx; jne aainc cx; jne aainc cxadd cx,5cmp cx,150jbe abcall waitfmov cx,0ab: ADD SI, 2ADD BP, 2; ad:inc cxJMP FREQEND_MUS:; mov ax,4c00h;int 21hretMP3 endpSOUNDF PROC nearPUSH AXPUSH BXPUSH CXPUSH DXPUSH DIMOV AL, 0b6H ;写定时器8253的工作方式OUT 43H, ALMOV DX, 12H ;根据频率求8253的计数值,即533H*896/freqMOV AX, 348ch ;(DX),(AX)=123280H=53 3H*896DIV di ;(DI) = freqOUT 42H, AL ;向8253送计数值MOV AL, AHOUT 42H, ALIN AL, 61H ;取8255的PB口当前内容,并保护MOV AH, ALOR AL, 3 ;开始发声,PB1=1,PB0=1OUT 61H, ALWAIT1: MOV CX, 28000 ;延时(BX)×10msdelay: loop delaydec bxjnz WAIT1MOV AL, AHAND AL, 0FCH ;停止发声,PB1=0,PB0=0OUT 61H, ALPOP DIPOP DXPOP CXPOP BXPOP AXRETSOUNDF ENDP;************************** ****************WAITF PROC NEARPUSH AXmov ah, 00hmov al, 10h ;选择显示方式10h(16色图形)int 10hmov ah, 0bhmov bh, 00hmov bl, 01h ;背景设为蓝色int 10hmov ah, 0bhmov bh, 01hmov bl, 00h ;设置调色板0#int 10hPOP AXRETWAITF ENDP;CSEG ENDS ;以上定义代码段;************************** ****************showscore procCODES SEGMENTASSUMECS:CODES,DS:DATASMOV AX,DATASMOV DS,AXMOV DI,0MOV BP,N+5 SHOW2:PUSH CXMOV DX,0MOV AX,[SI]CALL DTOC2CALL SHOW_STR2ADD SI,2POP CXLOOP SHOW2call functionDTOC2 PROCS:MOV CX,10CALL DIVDW2ADD CL,30HMOV DS:[BP],CL INC DIPUSH AXADD AX,DXJZ BACKPOP AXDEC BPJMP SBACK:POP AX RETDTOC2 ENDP DIVDW2 PROC PUSH AXMOV AX,DX MOV DX,0DIV CXMOV BX,AX POP AXDIV CXMOV CX,DX MOV DX,BX RET DIVDW2 ENDP SHOW_STR2 PROC S2: MOV AH,2MOV DL,DS:[BP]INT 21HINC BPDEC DIJZ OKJMP S2OK: MOV AH,2MOV DL,0INT 21HRETSHOW_STR2 ENDP codes ends showscore endpmaopao proc CODES SEGMENTpush cspush dspush axASSUME CS:CODESMOV SI,0MOV CX,N/2-1CALL BUBBLEMOV CX,N/2MOV SI,0MOV DI,0MOV BP,N+5call showscoreBUBBLE PROCL1:PUSH CXLEA SI,scoreL2:MOV AX,score[SI]CMP AX,score[SI+2]JBE NEXTXCHG AX,score[SI+2]MOV score[SI],AX NEXT:ADD SI,2LOOP L2POP CXLOOP L1huanhangRETBUBBLE ENDPretpop axpop cxpop dxCODES ENDS maopao endpclr_screen proc near mov ah,06hmov cx,temp1mov dx,temp2int 10hmov ah,02hmov dh,24mov dl,80mov bh,0int 10hretclr_screen endptongji procDATAS SEGMENTnum_under60 db 0num_60to69 db 0num_70to79 db 0num_80to89 db 0num_90to99 db 0num_100 db 0string10 db ' the number under 60:$'string20 db 'the number between 60 and 69:$'string30 db 'the number between 70 and 79:$'string40 db 'the number between 80 and 89:$'string50 db 'the number between 90 and 99:$'string60 db ' the number which is 100:$'DATAS ENDSCODES SEGMENTASSUMECS:CODES,DS:DATASMOV AX,DATASMOV DS,AXxor ax,axmov cx,9lea bx,scorecompare:cmp byte ptr[bx],60jl under60is60to69:cmp byte ptr [bx],70jl _60to69is70to79:cmp byte ptr[bx],80jl _70to79is80to89:cmp byte ptr [bx],90jl _80to89is90to99:cmp byte ptr [bx],100jl _90to99jz equal100under60:add num_under60,1 jmp con_60to69:add num_60to69,1 jmp con_70to79:add num_70to79,1 jmp con_80to89:add num_80to89,1 jmp con_90to99:add num_90to99,1 jmp conequal100:add num_100,1 con:lea bx,[bx+2]loop comparelast:huanhangshow string10 output num_under60 huanhangshow string20 output num_60to69 huanhangshow string30 output num_70to79 huanhangshow string40 output num_80to89 huanhangshow string50output num_90to99 huanhangshow string60 output num_100 huanhangmov ah,4chjmp functionCODES ENDS tongji endp CODES ENDS END START五、总结本次大作业采用汇编语言编写一比较大型的程序,采用数组、栈等形式进行操作,从开始设计到实现,我们复习到了课本上学到的知识,也对没有学到的图形和声音的应用领域有了一些涉猎。

汇编语言课程设计学生成绩管理系统

汇编语言课程设计学生成绩管理系统

汇编语言课程设计课题名称:学生成绩管理系统小组成员:班级:指导教师:日期:2014.06.18 一、选题目的:熟悉汇编语言程序设计的实验环境,主要是熟悉汇编程序的基本结构,编译、连接和调试等基本操作。

利用该题目进行汇编语言程序设计运用的综合性训练,综合运用汇编语言循环程序和子程序编程方法,巩固以及提高汇编语言程序设计能力运用水平,为后续的开发和实验工作打好基础。

二、功能设计:编制一个程序,要求接收从键盘收入的一个班的学生成绩,并存放于50字节的GRADE 数组中,其中GRADE+N保存学号N+1的学生成绩,然后根据GRADE得学生成绩,把学生名次填入50自己的RANK数组中,其中RANK+N的内容是学号N+1学生的名次,在按学号把学生顺序学生名次显示出来。

三、算法流程图:四、运行结果:从键盘输入三个学生的姓名和成绩,按学生成绩升序排序,并显示出排序结果五、程序源代码:data segmentinfor0 db 0ah,0dh,'sort=$'infor1 db 0ah,0dh,'input name:$'infor2 db 0ah,0dh,'input score:$'n equ 8 姓名长度m equ 4 成绩长度(3位+回车符)p equ 3 输入的人数q equ 3 成绩的位数buff1 db n,?,n dup(0),'$' 姓名缓冲区,加$字符以便输入时用 buff2 db m,?,m dup(0),'$' 成绩缓冲区sname db p dup(n+1 dup(0)) 保存姓名score1 dw p dup(m+1 dup(0)) 保存成绩score2 dw p dup(m+1 dup(0))mingci db p dup(0) 名次x dw ?sign1 dw 0sign2 dw 0cont db '1' 计数data endscode segmentassume cs:code, ds:datamain proc farstart:mov ax,datamov ds,axmov es,axmov bx,0mov cx,0call inputcall sortcall printmov ah,4chint 21hmain endpinput procinc bx 输入次数统计cmp bx,p 输入次数>p?ja exitlea dx,infor1 显示提示2mov ah,9int 21hlea dx,buff1 输入姓名mov ah,10int 21hmov al,buff1+1 实际输入个数——a1add al,2 +2.包含bufferl的0、1号单元mov ah,0mov si,ax 回车0d所在位置,跟在最后一个字符后 mov buff1[si],0 将0d换为0,便于输出显示lea dx,infor2 显示提示2mov ah,9int 21hlea dx,buff2 输入成绩mov ah,10int 21hmov al,buff2+1 实际输入个数add al,2 个数+2,包含0、1单元,为找到0dmov ah,0mov si,axmov buff2[si],0 将0d换为0,便于输出显示mov mingci[bx-1],bl bx为输入次数,保存输入的次序cmp bx,1 第一次输入转let1jz let1add sign1,n+1 姓名间隔为n+1add sign2,q 成绩间隔为qlet1: 子程序嵌套call copyjmp inputexit:retinput endpcopy procmov cx,n+1 姓名长度+3(包含$)lea si,buff1+2lea di,sname 姓名传递到snameadd di,sign1 加上间隔值cldrep movsbmov cx,nmov ax,'$' 用$覆盖姓名区,清除已输入的姓名 lea si,buff2+2lea di,score1 成绩传递到score1add di,sign2 加上间隔符cldrep movsblea si,buff2+2mov di,sign2call change 二进制成绩score2retcopy endpchange procmov x,0mov cx,[si-1] 成绩的位数cxmov cx,000fh 保留低四位rept2:mov al,[si] 按位取出成绩cmp al,30h 是否在0、9之间jl exit1cmp al,39hjg exit1and ax,000fhxchg ax,xmov dx,10 将ax中前一次形成的书扩大十倍mul dx 保存到xadd x,axinc siloop rept2mov ax,x 按十进制形成的成绩以二进制保存 mov score2[di],ax 二进制成绩送入score2mov x,0add sign2,2 下一个成绩单元exit1:retchange endpsort procmov cx,p 数组长度dec cxloop1:push cx 保存外循环次数mov bx,0mov si,0loop2: mov ax,score2[bx]cmp ax,score2[bx+m+1] m+1=5jge next 降序xchg ax,score2[bx+m+1] 交换成绩mov score2[bx],axmov al,mingci[si]xchg al,mingci[si+1] 交换名次mov mingci[si],alnext:add bx,m+1inc si 下一个成绩loop loop2pop cx 恢复外循环次数loop loop1retsort endpprint proclea dx,infor0 显示结果提示mov ah,9int 21hmov cx,pmov bx,0mov ax,0mov di,0rept3:mov dl,0ah 回车换行mov ah,2int 21hmov dl,0dhint 21hmov dl,cont 显示名次序号mov ah,2int 21hinc contmov dl,0ah 回车换行mov ah,2int 21hmov dl,0dhint 21hmov ax,0mov al,mingci[di] 取名次dec al 位置-1,因为地址从0开始 mov bl,9mul bllea dx,snameadd dx,ax 偏移地址+姓名位移量mov ah,9 显示姓名int 21hmov dl,0ah 回车换行mov ah,2int 21hmov dl,0dhint 21hmov ax,0mov bx,0mov al,mingci[di] 取名次dec al 地址从0开始mov bl,5mul bllea dx,score1add dx,axmov ah,9 显示成绩int 21hinc diloop rept3retprint endpcode endsend start六、自我评价:本次大作业做的是显示学生名次表,重要考察的是复杂程序设计中,采用模板块结构可以划分功能,分解程序,在各个程序之间存在参数传递问题,强调了传递方式和嵌套调用层次的运用。

汇编语言课程设计---学生成绩管理程序

汇编语言课程设计---学生成绩管理程序

郑重声明:本篇文档为从百度文库中下载的经过原文修改后的!目录第一章设计课题概述 (2)1.1 课程设计目的 (2)1.2设计内容及要求 (2)第二章总体设计 (3)2.1总体设计思路 (3)2.2 各版块功能描述 (3)第三章详细设计 (5)3.1 程序功能设计 (5)3.2各模块程序详细流程 (5)3.3 源代码及注释 (8)第四章调试过程及结果 (32)4.1 显示所有成绩 (32)4.2 插入成绩 (32)4.3 查询学生成绩 (33)4.4 删除学生成绩 (34)4.5 修改学生成绩 (35)4.6输出数学成绩 (36)第五章总结 (37)参考资料 (38)第一章设计课题概述1.1 课程设计目的当今社会是一个信息时代的社会,计算机的使用也是越来越普遍了,各行业在管理职员都采用了一些管理软件,不管是银行、学校,大大小小的各种企业,都是使用的相应的管理软件管理企业的各种信息,我选择的这个汇编语言课程设计题就是一个简单学生信息管理程序,虽然只能处理一些简单操作,但是其意义却是非凡,同过此课程设计,让我了解了一些简单的管理软件的基本原理,更深刻的理解了汇编语言的特点,对汇编语言有了一个跟深层次的理解。

利用汇编程序编写一个小型学生成绩管理程序,实现学生信息成绩的插入、修改、显示所有学生的各科成绩,并且可根据输入学生姓名插询该生的各科成绩,可统计所有成绩个各分数段的人数。

1.2设计内容及要求设计一个学生管理程序,主要实现以下功能(1)各科成绩的录入、修改、和删除。

(2)按姓名查询每个学生哥们成绩。

(3)显示查询结果(4)统计各分数段的成绩的人数个分数段的人数。

程序运行时,在出现的主菜单中,按l键,将浏览学生的各科成绩;按i键后,将执行插入功能,可以插入新的学生成绩,按m键,键输入需要修改的学生成绩,也包括不修改的科目;按d键输入要删除的学生姓名,将使其成绩全部变成0;按q键输入查询的学生的姓名,将其各科成绩显示出来;按下c键将按数学成绩分段结果。

汇编学生成绩程序设计报告

汇编学生成绩程序设计报告

《汇编语言程序设计》综合程序设计实验报告题目:学生成绩管理系统一、项目简介此学生成绩管理系统实现了对学生成绩的基本管理功能,可以完成学生的显示,分数段人数统计,成绩排名以及插入查找等基本功能,并且成功实现了将学生信息写入文件以及从文件中读取的功能。

该项目运用了多个主程序的分支以及多个子程序,还有宏的定义和使用,基本涵盖了本学期所学知识,还应用了很多课外拓展的知识。

此项目是我们小组三人共同努力的结晶。

二、小组成员具体分工闫立新完成部分:主要完成程序的显示所有学生,文件的写入、读出和代码段定义部分。

王伟光完成部分:主要完成程序的所有学生排名,学生的查找、添加和代码段定义部分。

宋景超完成部分:主要完成程序的分数段统计,屏幕清屏、子程序和代码段定义部分。

三、需求分析与设计学生成绩管理系统,最基本的功能是实现最学生的显示和以及成绩的排名,和分数段的统计,以便分析教学效果。

我们的系统可以说完全达到了这个要求。

在这个系统的第一个功能就实现了所有学生的显示和他们对应的成绩。

此分支采用了内存存储单元中读取数据的方法,通过地址的不断增加来实现对学生姓名和成绩存储和输出。

统计学生分数段人数部分采用了多个跳转指令来实现,符合条件则使相应的分数段人数加1,不符合该分数段人数则跳转到相应的分数段并使该分数段人数加1。

对学生的排名,我们则选择了经典的冒泡排序来实现。

运用三条循环指令,lopi,lopj,lopk。

对学生的添加,我们设置了一个全局变量n来记录多少个数据,增加几个数据n就加几,然后输入姓名到新的内存中,输入成绩时因为成绩初始化时是以ASICC保存的,而输入的是字符,所以使用0FH现将其变成真正的数字然后通过*10等运算将其转化为ASICC即可对学生的查找,我们通过使用字符串比较来进行查找,使用bp来进行地址的改变,同时使用n5进行判断是否已经完成了查找已经是否找到了数据,找到数据则输出,找不到则输出错误文件的写入部分首先用dos指令3CH来创建一个文件,然后用dos指令40H 写入内容,在BX中装入文件代号,要写入的字节数放在CX中,输入缓冲区的地址放在DX中。

学生成绩统计汇编语言

学生成绩统计汇编语言

学生成绩统计汇编语言1. 引言学生成绩统计是学校管理和评估学生学习成果的重要工作之一。

为了高效地进行学生成绩统计,我们可以利用汇编语言来编写一个简单而有效的程序。

本文将介绍如何使用汇编语言来实现学生成绩的统计功能。

2. 程序设计思路我们将使用汇编语言来设计一个学生成绩统计程序,主要包括以下几个步骤: -输入学生信息和成绩; - 统计总分和平均分; - 输出成绩排名和各科目的最高分和最低分。

3. 程序实现步骤3.1 输入学生信息和成绩首先,我们需要定义一个数据结构来存储学生的信息和成绩。

可以使用数组或者结构体来实现。

每个学生的信息包括姓名、年龄、性别等,每个学生的成绩包括语文、数学、英语等科目。

student_info db "Tom", 18, "M"student_scores db 85, 90, 953.2 统计总分和平均分接下来,我们需要编写代码来实现对所有学生的总分和平均分的统计。

可以使用循环来遍历所有学生的成绩,并累加总分。

最后,将总分除以学生人数即可得到平均分。

mov ax, 0 ; 初始化总分为0mov cx, 0 ; 初始化学生人数为0loop_start:add ax, [student_scores] ; 累加总分add cx, 1 ; 学生人数加1add student_info, 3 ; 移动到下一个学生的信息add student_scores, 3 ; 移动到下一个学生的成绩cmp cx, num_of_students ; 判断是否遍历完所有学生jl loop_startdiv cx ; 将总分除以学生人数,得到平均分3.3 输出成绩排名和各科目的最高分和最低分最后,我们需要编写代码来输出成绩排名和各科目的最高分和最低分。

可以使用排序算法对学生成绩进行排序,并输出排名。

同时,也可以遍历所有学生的每个科目成绩,找出最高分和最低分。

汇编课程设计成绩管理系统

汇编课程设计成绩管理系统

汇编课程设计成绩管理系统一、课程目标知识目标:1. 理解汇编语言的基本概念,掌握汇编指令的使用方法。

2. 学会使用汇编语言进行程序设计,实现简单的成绩管理系统。

3. 了解计算机内存管理的基本原理,理解汇编语言在内存操作中的应用。

技能目标:1. 能够运用汇编语言编写简单的程序,实现数据的存储和查询功能。

2. 掌握使用汇编语言进行条件判断和循环操作的方法,实现成绩管理系统的逻辑功能。

3. 学会使用调试工具对汇编程序进行调试,解决程序中的错误。

情感态度价值观目标:1. 培养学生良好的编程习惯,注重代码的结构和可读性。

2. 增强学生的团队合作意识,学会在项目开发中分工与协作。

3. 激发学生对计算机硬件和底层编程的兴趣,提高学生的计算机素养。

分析课程性质、学生特点和教学要求:1. 课程性质:本课程属于计算机科学与技术领域,以汇编语言为核心,结合成绩管理系统实例,培养学生的编程能力和计算机硬件理解。

2. 学生特点:学生已具备一定的计算机基础知识和编程能力,对汇编语言有初步了解,但实际应用能力有待提高。

3. 教学要求:注重理论与实践相结合,以项目为导向,培养学生的实际操作能力和团队协作能力。

二、教学内容1. 汇编语言基础知识:- 汇编语言概述:了解汇编语言的发展历程,认识汇编语言与机器语言的关系。

- 汇编指令系统:掌握汇编指令的分类、格式及功能,学会使用常用汇编指令。

2. 程序设计方法:- 数据表示:学习数据在汇编语言中的表示方法,掌握各种数据类型的使用。

- 流程控制:了解汇编语言中的条件判断和循环结构,学会编写分支和循环程序。

- 子程序设计:掌握子程序的编写和调用方法,提高代码复用性。

3. 内存管理:- 内存分配与使用:了解内存空间分配方法,掌握汇编语言在内存操作中的应用。

- 数据存储:学习如何在内存中存储和访问数据,实现成绩管理系统中的数据结构。

4. 成绩管理系统项目实践:- 功能模块设计:明确成绩管理系统的需求,划分功能模块,进行模块化设计。

学生成绩管理系统设计实验(汇编语言)

学生成绩管理系统设计实验(汇编语言)

实验六学生成绩管理系统设计实验一、实验目的1、熟悉汇编语言程序结构;2、熟悉INT 21H的文件操作功能调用;3、熟悉INT 21H的1、9号功能和INT 10H常用功能的使用方法;4、掌握多子程序复杂问题程序设计方法;5、掌握利用汇编语言实现字符串的输入输出程序设计方法;6、了解多模块程序设计方法。

二、实验原理我们把可以多次调用、具有通用性、能完成特定功能的程序段编写成的独立程序模块称为子程序。

子程序是把一个程序划分成若干模块所用的主要手段,它便于独立设计、测试程序和编制程序文件。

三、实验内容1、实验要求设计一个学生成绩管理系统,要求完成文件建立、学生成绩录入、显示指定学号的学生记录、删除一个学生的记录、修改学生记录、返回等工作。

学生成绩包括学号(XH)、姓名(XM)、数学(SX)、语文(YW)、外语(WY)字段。

至少包括30名学生信息,每名学生学号字段为4个字符,姓名字段为15个字符(最大),每门成绩字段为3个字符(最大)。

程序设计步骤如下:1、编写主程序main.asm;2、编写文件创建子程序create,实现在指定盘指定文件夹“d:\chengji\2009\”下建立一个指定名称的文件2009doc.dat;3、编写成绩录入子程序append,实现在指定文件尾部插入一个学生的成绩记录;4、编写显示子程序display,实现按指定学号显示一个学生的记录;5、编写修改子程序modify,实现按指定学号修改一个学生的记录字段(不需修改直接回车);6、编写删除子程序,实现按指定学号、姓名删除一个学生的记录;7、编译、链接、调试,产生可执行文件main.exe。

2、程序流程图3、程序代码程序代码如下:DATAS SEGMENTMSG1 DB '1. Append a record$'MSG2 DB '2. Display a record$'MSG3 DB '3. Modify a record$'MSG4 DB '4. Delete a record$'MSG5 DB '5. Create file$'MSG6 DB '6. Return DOS$'MSGC DB 'Please input 1--6:$'MSGE DB 'Error!$'MSGC1 DB 'Please input filename:$'MAXLEN DB 25ACTLEN DB ?STRING DB 25 DUP(?)MAXLEN1 DB 25ACTLEN1 DB ?STRING1 DB 25 DUP(?)PATHNM DB 'D:\chengji\2009\\',23 DUP(?)PATH DB 'D:\chengji\2009\2009doc.dat',00MSGA1 DB 'Please input XH:$'MSGA2 DB 'Please input XM:$'MSGA3 DB 'Please input SX:$'MSGA4 DB 'Please input YW:$'MSGA5 DB 'Please input WY:$'HANDLE DW ?MSGXH DB 'Xuehao: $'MSGXM DB 'Xingming: $'MSGSX DB 'Shuxue:$'MSGYW DB 'Yuwen: $'MSGWY DB 'Waiyu: $'BUFFER DB 2048 DUP(' ')MSGRT DB 'Press any key to return!$'DELSTR DB 33 DUP(' ') DATAS ENDSSTACKS SEGMENT STACKDB 256 DUP(?)STACKS ENDS CODES SEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AX;******************************** ;主程序MAIN PROC FARS:;清屏CALL CLS ;逐行输出提示信息MOV AH,02HMOV DH,9MOV DL,30INT 10HMOV AH,9LEA DX,MSG1INT 21HMOV AH,02HMOV DH,10MOV DL,30INT 10HMOV AH,9LEA DX,MSG2INT 21HMOV AH,02HMOV DH,11MOV DL,30INT 10HMOV AH,9LEA DX,MSG3INT 21HMOV AH,02HMOV DH,12MOV DL,30INT 10HMOV AH,9LEA DX,MSG4INT 21HMOV AH,02HMOV DH,13MOV DL,30INT 10HMOV AH,9LEA DX,MSG5INT 21HMOV AH,02HMOV DH,14MOV DL,30INT 10HMOV AH,9LEA DX,MSG6INT 21H;提示输入MOV AH,02HMOV DH,15MOV DL,30INT 10HMOV AH,9LEA DX,MSGCINT 21H;从键盘读入一个数字MOV AH,02HMOV DH,15MOV DL,48INT 10HMOV AH,1INT 21H;按数字对应子程序CMP AL,31HJZ CAPPENDCMP AL,32HJZ CDISPLAYCMP AL,33HJZ CMODIFYCMP AL,34HJZ CDELETECMP AL,35HJZ CCREATECMP AL,36HJZ E;若输入不是1-6数字,则提示错误MOV AH,02HMOV DH,16MOV DL,30INT 10HMOV AH,9LEA DX,MSGEINT 21HCCREATE:CALL CREATEJMP SCDELETE:CALL DELETEJMP SCMODIFY:CALL MODIFYJMP SCDISPLAY:CALL DISPLAYJMP SCAPPEND:CALL APPENDJMP SE:MOV AH,4CHINT 21HMAIN ENDP;******************************** ;CREATE程序CREATE PROC NEARPUSH AXPUSH CXPUSH DXPUSH SIPUSH DI;清屏CALL CLS;提示输入文件名MOV AH,2MOV DH,12MOV DL,20INT 10HMOV AH,9LEA DX,MSGC1INT 21H;从键盘读入文件名字符串MOV AH,0AHLEA DX,MAXLENINT 21H;将文件名字符串加到ASCIZ字符串末尾MOV CX,0MOV CL,ACTLENLEA SI,STRINGLEA DI,PATHNMADD DI,16LCREATE:MOV AL,BYTE PTR [SI]MOV [DI],ALINC DIINC SILOOP LCREATE;在ASCIZ字符串末尾加00MOV BYTE PTR [DI],0;按ASCIZ字符串创建文件MOV AH,3CHLEA DX,PATHNMMOV CX,0INT 21HPOP DIPOP SIPOP DXPOP CXPOP AXRETCREATE ENDP;******************************** ;APPEND程序APPEND PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH SIPUSH DI;清屏CALL CLS;打开文件(只写)MOV AH,3DHMOV AL,01HLEA DX,PATHINT 21HMOV HANDLE,AX;提示输入学号MOV AH,02HMOV DH,10MOV DL,30INT 10HMOV AH,9LEA DX,MSGA1INT 21H;从键盘读入字符串MOV AH,0AHLEA DX,MAXLENINT 21H;在字符串末尾补足空格MOV DX,4CALL FILL;将文件指针定位至文件末尾MOV AH,42HMOV AL,2MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;写入文件MOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;提示输入姓名MOV AH,02HMOV DH,11MOV DL,30INT 10HMOV AH,9LEA DX,MSGA2INT 21H;从键盘读入字符串MOV AH,0AHLEA DX,MAXLENINT 21H;在字符串末尾补足空格MOV DX,15CALL FILL;将文件指针定位至文件末尾MOV AH,42HMOV AL,2MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;写入文件MOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;提示输入语文成绩MOV AH,02HMOV DH,12MOV DL,30INT 10HMOV AH,9LEA DX,MSGA3INT 21H;从键盘读入字符串MOV AH,0AHLEA DX,MAXLENINT 21H;在字符串末尾补足空格MOV DX,3CALL FILL;将文件指针定位至文件末尾MOV AH,42HMOV AL,2MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;写入文件MOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;提示输入数学成绩MOV AH,02HMOV DH,13MOV DL,30INT 10HMOV AH,9LEA DX,MSGA4INT 21H;从键盘读入字符串MOV AH,0AHLEA DX,MAXLENINT 21H;在字符串末尾补足空格MOV DX,3CALL FILL;将文件指针定位至文件末尾MOV AH,42HMOV AL,2MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;写入文件MOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;提示输入外语成绩MOV AH,02HMOV DH,14MOV DL,30INT 10HMOV AH,9LEA DX,MSGA5INT 21H;从键盘读入字符串MOV AH,0AHLEA DX,MAXLENINT 21H;在字符串末尾补足空格MOV DX,3CALL FILL;在字符串末尾加回车、换行INC SIMOV BYTE PTR [BX+SI],0DHINC SIMOV BYTE PTR [BX+SI],0AHADD ACTLEN,2;将文件指针定位至文件末尾MOV AH,42HMOV AL,2MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;写入文件MOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;关闭文件MOV AH,3EHMOV BX,HANDLEINT 21HPOP DIPOP SIPOP DXPOP CXPOP BXPOP AXRETAPPEND ENDP;******************************** DISPLAY PROC NEARPUSH AXPUSH DX;清屏CALL CLS;提示输入学号MOV AH,02HMOV DH,10MOV DL,28INT 10HMOV AH,9LEA DX,MSGXHINT 21H;从键盘读入学号字符串MOV AH,0AHLEA DX,MAXLENINT 21H;打开文件(只读)MOV AH,3DHMOV AL,00HLEA DX,PATHINT 21HMOV HANDLE,AX;将文件指针定位至文件开头MOV AH,42HMOV AL,0MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;将文件载入缓存MOV AH,3FHMOV BX,HANDLEMOV CX,2048LEA DX,BUFFERINT 21H;在缓存中找到对应记录LEA SI,BUFFERLEA DI,STRINGMOV CX,AXCALL SEARCHCMP DX,0JZ OUTPUT;若未找到,则提示错误MOV AH,9LEA DX,MSGEINT 21HJMP DEND;显示对应信息OUTPUT:MOV AH,02HMOV DH,11MOV DL,28INT 10HMOV AH,9LEA DX,MSGXMINT 21HADD SI,5MOV AH,9MOV DX,SIINT 21HMOV AH,02H MOV DH,12 MOV DL,28INT 10HMOV AH,9LEA DX,MSGYW INT 21HADD SI,16MOV AH,9MOV DX,SIINT 21HMOV AH,02H MOV DH,13 MOV DL,28INT 10HMOV AH,9LEA DX,MSGSX INT 21HADD SI,4MOV AH,9MOV DX,SIINT 21HMOV AH,02H MOV DH,14 MOV DL,28INT 10HMOV AH,9LEA DX,MSGWY INT 21HADD SI,4MOV AH,9MOV DX,SIINT 21HMOV AH,2MOV DH,15MOV DL,28INT 10HMOV AH,9LEA DX,MSGRTINT 21HMOV AH,1INT 21HDEND: ;关闭文件MOV AH,3EHMOV BX,HANDLEINT 21HPOP DXPOP AXRETDISPLAY ENDP;******************************** MODIFY PROC NEARPUSH AXPUSH DX;清屏CALL CLS;提示输入学号MOV AH,02HMOV DH,10MOV DL,28INT 10HMOV AH,9LEA DX,MSGXHINT 21H;从键盘读入学号字符串MOV AH,0AHLEA DX,MAXLENINT 21H;打开文件(读写)MOV AH,3DHMOV AL,10LEA DX,PATHINT 21HMOV HANDLE,AX;将文件指针定位至文件开头MOV AH,42HMOV AL,0MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;将文件载入缓存MOV AH,3FHMOV BX,HANDLEMOV CX,2048LEA DX,BUFFERINT 21H;在缓存中找到对应记录LEA SI,BUFFERLEA DI,STRINGMOV CX,AXCALL SEARCHCMP DX,0JZ REVISEXM;若未找到,则提示错误MOV AH,9LEA DX,MSGEINT 21HJMP MEND;修改姓名REVISEXM:MOV AH,02HMOV DH,11MOV DL,28INT 10HMOV AH,9LEA DX,MSGXMINT 21HMOV AH,0AHLEA DX,MAXLENINT 21HCMP BYTE PTR [STRING],0DH ;若为回车,则将指针指向下一字段JNZ XMCONTADD SI,5JMP REVISEYWXMCONT:PUSH SIMOV DX,15CALL FILLPOP SIADD SI,5LEA BX,BUFFERMOV DX,SISUB DX,BXMOV AH,42HMOV AL,00MOV BX,HANDLEMOV CX,00INT 21HMOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;修改语文成绩REVISEYW:MOV AH,02HMOV DH,12MOV DL,28INT 10HMOV AH,9LEA DX,MSGYWINT 21HMOV AH,0AHLEA DX,MAXLENINT 21HCMP BYTE PTR [STRING],0DHJNZ YWCONTADD SI,16JMP REVISESXYWCONT:PUSH SIMOV DX,3CALL FILLPOP SIADD SI,16LEA BX,BUFFERMOV DX,SISUB DX,BXMOV AH,42HMOV AL,00MOV BX,HANDLEMOV CX,00INT 21HMOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;修改数学成绩REVISESX:MOV AH,02HMOV DH,13MOV DL,28INT 10HMOV AH,9LEA DX,MSGSXINT 21HMOV AH,0AHLEA DX,MAXLENINT 21HCMP BYTE PTR [STRING],0DHJNZ SXCONTADD SI,4JMP REVISEWYSXCONT:PUSH SIMOV DX,3CALL FILLPOP SIADD SI,4LEA BX,BUFFERMOV DX,SISUB DX,BXMOV AH,42HMOV AL,00MOV BX,HANDLEMOV CX,00INT 21HMOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21H;修改外语成绩REVISEWY:MOV AH,02HMOV DH,14MOV DL,28INT 10HMOV AH,9LEA DX,MSGWYINT 21HMOV AH,0AHLEA DX,MAXLENINT 21HCMP BYTE PTR [STRING],0DHJZ MENDPUSH SIMOV DX,3CALL FILLPOP SIADD SI,4LEA BX,BUFFERMOV DX,SISUB DX,BXMOV AH,42HMOV AL,00MOV BX,HANDLEMOV CX,00INT 21HMOV AH,40HMOV BX,HANDLEMOV CX,0MOV CL,ACTLENLEA DX,STRINGINT 21HMEND: ;关闭文件MOV AH,3EHMOV BX,HANDLEINT 21HPOP DXPOP AXRETMODIFY ENDP;******************************** ******************************** **************DELETE PROC NEARPUSH AXPUSH DX;清屏CALL CLS;提示输入姓名MOV AH,02HMOV DH,11MOV DL,28INT 10HMOV AH,9LEA DX,MSGA2INT 21H;读入姓名字符串MOV AH,0AHLEA DX,MAXLEN1INT 21H;提示输入学号MOV AH,02HMOV DH,12MOV DL,28INT 10HMOV AH,9LEA DX,MSGA1INT 21H;读入学号字符串MOV AH,0AHLEA DX,MAXLENINT 21H;打开文件(读写)MOV AH,3DHMOV AL,10LEA DX,PATHINT 21HMOV HANDLE,AX;将文件指针指向开头MOV AH,42HMOV AL,0MOV BX,HANDLEMOV CX,0MOV DX,0INT 21H;载入文件MOV AH,3FHMOV BX,HANDLEMOV CX,2048LEA DX,BUFFERINT 21H;在缓存中搜索学号对应记录LEA SI,BUFFERLEA DI,STRINGMOV CX,AXCALL SEARCHCMP DX,0JNZ DELEND;比较该记录对应姓名是否与输入的相同PUSH SIADD SI,5LEA DI,STRING1MOV CX,0MOV CL,ACTLEN1MOV DX,0LCHECK:MOV AL,[SI]MOV AH,[DI]CMP AL,AHJZ LCONTIMOV DX,1JMP DELERRLCONTI:INC SIINC DILOOP LCHECKPOP SICMP DX,0JZ DEL;姓名不对应则提示错误DELERR:MOV AH,9LEA DX,MSGEINT 21HJMP DELENDDEL:;将文件指针定位至该记录开始处LEA BX,BUFFERMOV DX,SISUB DX,BXMOV AH,42HMOV AL,00MOV BX,HANDLEMOV CX,00INT 21H;将该记录覆盖为空格MOV AH,40HMOV BX,HANDLEMOV CX,33LEA DX,DELSTRINT 21HDELEND: ;关闭文件MOV AH,3EHMOV BX,HANDLEINT 21HPOP DXPOP AXRETDELETE ENDP;******************************** ;清屏程序CLS PROC NEARPUSH AXPUSH BXPUSH CXPUSH DX;屏幕初始化MOV AH,6MOV AL,0MOV BH,7MOV CX,0MOV DX,2479HINT 10H;重定位光标MOV DX,0MOV AH,2INT 10HPOP DXPOP CXPOP BXPOP AXRETCLS ENDP;******************************** ;搜索程序;若找到对应记录,则将DX赋为0,并将SI指向该记录首地址;否则DX 赋为1。

汇编语言学生成绩管理系统报告

汇编语言学生成绩管理系统报告

0 ;修改时用的,判定是否找到相应学号 5,?,5 dup(0) ;为了使输入的分数也能输入错误的情况下回
退光标进行修改而用的 10,?,10 dup(0) ;删除时存储学号用的 0 ;总分数的高位 0 ;总分数的低位 0 ;学生的人数 0 ;平均成绩 0 ;小于 60 0 ;60 到 70 0 ;70 到 80 0 ;80 到 90 0 ;90 到 99
<7>
con
db 48 ;结构字段的大小,为常数
stu man 100 dup(<>) ;学生信息
(2) make_c proc 流程图:
<8>
make_c子程序
系统显示界面
1号系统调用 接收选择字符
是否为i
N
是否为l
N
是否为o
N
是否为s
N
是否为d
N
是否为m
Y
Y
Y 清屏,进入 插入界面
N 接收字符 并判断是否为c
<4>
3. 程序最终效果
主界面: 自己运行程序截图去吧
Insert(i)插入学生信息: 自己运行程序截图去吧
<5>
List(l)显示学生成绩: 自己运行程序截图去吧
Order(o)以分数进行从高到底排序: 自己运行程序截图去吧
Statistic(s)统计学生成绩分布: 自己运行程序截图去吧
Delete(d)删除学生信息(成功:Succesfully,失败:Failed): 自己运行程序截图去吧
输入姓名字符串并 保存
输入班级字符串 并保存
Call d_b 10转2进制子程序
返回到bx中
总分数低字加bx 高字加CF位

汇编语言课程设计学生成绩管理系统

汇编语言课程设计学生成绩管理系统

1、课程设计的目的、任务《汇编语言》课程设计对于巩固汇编语言理论知识,加强学生的实际动手能力和提高学生综合素质十分必要。

课程设计的目的主要是通过程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。

2、软件需求分析和设计2.1学生成绩管理系统是对学生成绩的管理,其中包括以下几个模块:(1).插入一个数据(插入学生学号以及语数外三个成绩)。

(2)修改一个数据。

(3)删除学生成绩数据。

(4)查找学生成绩。

(5)查看学生成绩的排名(6)查看学生成绩分布(7)按esc键退出系统2.2学生成绩管理系统应该包含以下信息:学号,语文成绩,英语成绩,数学成绩。

因此,系统应该提供以下功能:(1)输出显示菜单。

(2)输入学生的成绩(3)修改学生成绩(4)删除学生成绩(5)查询学生成绩(6)显示学生成绩排名(7)显示成绩分布统计(8)按esc键退出系统2.3依据程序的功能需求,该系统的功能结构图如下系统功能结构图2.4 程序流程图:主程序流程图查找学生成绩插入学生学号及成绩修改学生的成绩显示各个学科各分数段的人数3、程序实现说明3.1学生管理系统中各子程序如下:(1).输入全部学生学号以及语文,英语,数学三科的成绩。

子程序名:insert子程序描述:该子程序为输入字程序。

系统在开始的时候是没有数据的,通过该子程序可以初始化系统,将学生的学号及成绩输入系统。

代码:insert proc near ;定义进程子程序:插入学生,学号及成绩call input ;调用inputadd n,1retinsert endp(2).修改输入的成绩。

子程序名:modify子程序描述:通过子程序修改学生的成绩代码:modify proc near ;定义进程子程序:修改学生学号,成绩 md1:output mess1 ;输出mess1shuru ;调用宏shuru:二位数据输入mov bl,nmov bh,0mov al,dlmov si,0md: cmp al,xh[si] ;先查找输入的学生是否存在je qq1_1 ;查到的话,就跳转到qq1_1输入修改的值,也就是重新输入。

汇编语言成绩统计系统的实现

汇编语言成绩统计系统的实现

一、软件背景介绍学生成绩管理系统设计与实现学生成绩管理系统设计与实现摘要学生成绩管理系统是学校不可或缺的一个组成部分,随着计算机技术的逐渐发展,计算机在教育系统中的应用得到了巨大的发展。

教务管理正在逐步迈向管理信息现代化。

但是我国的教务管理信息化水平还处在初级阶段,主要表现在对学生的成绩管理、学生的课程管理还是采用原有的人工管理方式。

学校的规模不断扩大,学生数量急剧增加,有关学生的各种数据也成倍增长。

面对庞大的信息量,这时的人工管理几乎无法实现,在这种情况下用数据库进行管理变的尤为必要,这可以发挥计算机的优势,就需要有教务管理系统来提高学生成绩管理工作的效率.通过这样的系统,可以做到信息的规范管理,科学统计和快速的查询,从而减少管理方面的工作量和减少人为的错误。

进行数据库设计首先必须准确了解也分析用户需求(包括数据和处理)。

目的是为学生成绩管理数据库系统的设计打下牢牢的基础,是数据库开发的重要文件依据,主要为数据库设计人员使用,是用户和系统分析员的项目依据文件。

作为“地基”的需求分析是否做得充分与准确,它决定了在其上构建数据库大厦的速度和质量。

需求分析做得不好,甚至会导致整个数据库设计返工重做。

成绩管理系统是针对高等院校的学生学籍管理,因此此系统的用户应包括系统管理员和学生。

主要涉及系部信息、班级信息、学生信息、课程信息和成绩等多种数据信息。

经走访调查得出教务员有以下要求:(1)管理员、教师和学生登录后可以改自己的密码;(2)管理员、教师和学生可以查询课程信息;(3)管理员可以删除学生信息、教师信息、登录用户信息,还可以查询和删除学生成绩,添加、删除课程信息;(4)管理员批量导入、导出数据;(5)教师可以录入、修改成绩,批量导出数据;(6)学生可以查询成绩。

不过此次我做的系统只针对学生成绩管理实现的对学生成绩的统计,主要运用汇编语言来完成各个模块的应用,先以内存存储单元中读取数据(假设的学生成绩数据),将成绩及姓名放在两个存储单元,然后通过循环,地址的的增加,实现姓名与成绩的对应输出,其中有冒泡排序的实现及十进制显示输出,还有ABCDE等级的统计及附加功能等级的判断。

汇编语言编写学生成绩管理系统.

汇编语言编写学生成绩管理系统.

hh MACRO ;回车换行宏定义 PUSH DX PUSH AX MOV DL,0AH MOV AH,2 INT 21H MOV DL,0DH MOV AH,2 INT 21H POP AX POP DX ENDM clear MACRO ;清屏宏定义 PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,2 MOV DH,0 MOV DL,0 INT 10H MOV AH,6 MOV AL,0 MOV BH,7 MOV CH,0 MOV CL,0 MOV DH,24 MOV DL,79 INT 10H ENDM DATAS SEGMENT cj DB 100 DUP(-1 pm DB 100 DUP(0 mz DB 100 DUP(14 DUP(' ','$' strm1 DB '1.insert student score$' strm2 DB '2.delete student score$' strm3 DB '3.show student score and rank$' strm4 DB'ESC.exit$' stri1 DB 'input the student number:$' stri2 DB 'input this student score:$' stri3 DB 'insert success,press any key!$' stri4 DB 'input this student name:$' strd1 DB 'delete the student number:$' strd2 DB 'delete success,press any key!$' strr1 DB'===================score and rank===================$' strr2 DB 'number name score rank $' strr3 DB 'show success,press any key!$' stre DB 'error,please try again$' strq DB 'thanks for using$' DATAS ENDS STACKS SEGMENT STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX main: LEA DX,strm1 MOV AH,9 INT 21H hh LEA DX,strm2 ;获取STRM2的偏移地址 MOV AH,9 INT 21H hh LEA DX,strm3 ;获取STRM3的偏移地址 MOV AH,9 INT 21H hh LEA DX,strm4 MOV AH,9 INT 21H hh main1: MOV AH,1 INT 21H CMP AL,31H ;插入学生成绩 JE insert ;等于则转移INSERT CMP AL,32H ;删除 JE delete CMP AL,33H ;显示 JE rank CMP AL,1BH ;退出 JE quit JMP main1 ;跳转到MAIN1 insert: clear ;调用清屏宏 LEA DX,stri1 MOV AH,9 INT 21H hh CALL shuru MOV BX,AX hh LEA DX,stri4 MOV AH,9 INT 21H hh PUSH BX PUSH DX MOV AX,BX MOV CL,15 MUL CL MOV BX,AX LEADX,mz[BX] ;把名字存到mz中 MOV AH,10 INT 21H POP DX POP BX hh LEA DX,stri2 MOV AH,9 INT 21H hh CALL shuru MOV cj[BX],AL ;把成绩存到cj hh LEA DX,stri3 MOV AH,9 INT 21H MOV AH,1 INT 21H hh clear JMP main delete: clear LEA DX,strd1 MOV AH,9 INT 21H hh CALL shuru MOV BX,AX MOV cj[BX],-1 ;把输入学号的成绩删除 hh LEA DX,strd2 MOV AH,9 INT 21H hh MOV AH,1 INT 21H hh clear JMP main rank: MOV CX,100 MOV DH,1 rank0: MOV DL,DH DEC CXCMP CX,-1H JE rank5 MOV BX,1 rank1: CMP cj[BX],CL JE rank3 rank2: INC BX CMP BX,100 JE rank0 JMP rank1 rank3: MOV pm[BX],DL;把名次存到pm INC DH JMP rank2 rank5: clear LEA DX,strr1 MOV AH,9 INT 21H hh LEA DX,strr2 MOV AH,9 INT 21H hh MOV BX,0 MOV DH,1 rank10: INC BX CMP BX,100 JE rank11 CMP cj[BX],-1 JE rank10 INC DH MOV DL,10 MOV AH,2 INT 10H PUSH BX PUSH DX MOV AX,BX MOV CL,15 MUL CL MOVBX,AX ADD BX,2 LEA DX,mz[BX] MOV AH,9 INT 21H POP DX POP BX MOV DL,1 MOV AH,2 INT 10H MOV AX,BX CALL shuchu MOV DL,30 MOV AH,2 INT 10H MOV AL,cj[BX] CALL shuchu MOV DL,45 MOV AH,2 INT 10H MOV AH,0 MOV AL,pm[BX] CALL shuchu hh JMP rank10 rank11: LEA DX,strr3 MOV AH,9 INT 21H MOV AH,1 INT 21H clear JMP main quit: clear MOV BH,0 MOV AH,2 MOV DH,5 MOV DL,20 INT 10H LEA DX,strq MOV AH,9 INT 21H MOV AH,4CH INT21H shuru PROC NEAR PUSH BX return: MOV AH,1 INT 21H CMP AL,30H JL cuowu CMP AL,39H JG cuowu SUB AL,30H MOV AH,0 MOV BL,10 MUL BL MOV BX,AX MOV AH,1 INT 21H CMP AL,30H JL cuowu CMP AL,39H JG cuowu MOV AH,0 SUB AL,30H ADD AX,BX POP BX RET cuowu: hh LEA DX,stre MOV AH,9 INT 21H hh JMP return shuru ENDP shuchu PROC NEAR PUSH CX PUSH DX MOV CL,10 CBW ;字节扩展为字 IDIV CL MOV DH,AH MOV DL,AL ADD DL,30H MOV AH,2 INT 21H MOV DL,DH ADD DL,30H MOV AH,2 INT 21H POP DX POP CX RET shuchu ENDP CODES ENDS END START。

汇编试验报告-学生信息管理系统

汇编试验报告-学生信息管理系统

学生信息管理系统1.实验类别使用汇编语言编程2.实验内容和实验目的学生的信息包括姓名、班级、学号和成绩,其中成绩精确到1位小数。

编写程序实现以下功能:(1)可以录入学生的信息,成绩以十进制形式录入,并显示;(2)可以按成绩进行排序显示;(3)可以统计平均成绩;(4)可以统计不及格、60~70、70~80、80~90、90~100各分数段的人数。

3.实验设备环境Windows 7 操作系统的pc 机,使用 QASM270编译器环境下编写。

4.实验实现过程及方法首先数据采用二维数组的形式进行存储,分为学生信息部分与成绩部分。

然后将输入学生数也保存在一个一维数组中。

然后再信息的存储过程中,对于字符串输入进行转换,以二进制的形式存储在数据段中。

然后采用冒泡排序,对于数据段中的人员信息进行排序。

以成绩为参数。

然后再对每个人员成绩进行遍历,统计各个数据层次中人员数,然后再成绩遍历的同时,将平均成绩也同时求出,在求平时成绩的时候,首先先将整数部分乘 10 然后再加上小数部分,以便于后续的输出。

将排序后的人员信息及成绩显示出来,然后将平均成绩也同时打印出来,还有各个分数层次中的人员数也都一并显示出来。

下面是一些主要代码来实现上述过程:; 数据部分NUMBER DB 3 DUP(0);第一个存个/ 十位 (ASCII码 ) ,第二个存个位(ASCII码 ) ,第三个存学生数( 二进制);用 20字节单元表示学生信息, 0-19 中: 0对应最大字符, 1对应实际输入, 2-18 对应输入信息, 19对应 '$'INFORMATION DB99 DUP(20 DUP(0)); 用 7字节单元来存分数, 0-6 中, 0-4 对应输入字符, 5对应输入整数部分的二进制数, 6 对应于小数部分的二进制数GRADE DB99 DUP(7 DUP(0))AVERAGE_GRADE_BUFFER DB 2 DUP(0);第一个存整数部分( 二进制形式) ,STORE_STUDENT_NUM; 存储学生总数, 结果送cx 中STORE_STUDENT_INFORMATION;存储学生信息STORE_STUDENT_GRADE存;储每个学生成绩SORT_DISPLAY ;;采用冒泡排序显示结果FIND_RESULT ;显示平均成绩和分段人数关键算法的流程图:关于分段人数与总成绩的计算冒泡排序算法:处理计算计算总成绩Y< 60?A++NY< 70?B++NY< 80?C++NY< 90?D++NY 处理排序冒泡i=0Ki<=Ki+1Y N交换i++N i=counte rY返回<=100E++N错误返回5.效果图输入三人信息,班级学好姓名,然后输入此人成绩。

基于汇编语言学生成绩管理系统方案

基于汇编语言学生成绩管理系统方案
mess4 db ' modify (m) name :',0ah,0dh,'$'
mess5 db ' delete (d) maths :',0ah,0dh,'$'
mess6 db ' query (q) english :',0ah,0dh,'$'
mess7 db ' count (c) computer:',0ah,0dh,'$'
设计要求
学习如何用汇编语言进行数据处理。
设计分析
1.总体结构
整个程序采用主程序调用子程序的方法。主程序完成菜单的显示,子程序完成一个独立功能方法的实现。各子程序的实现方法简要描述如下:
1)设计INSERT(录入)子程序,先打开文件SCORE.TXT,并置文件指针到文件尾,然后调用GET_REC子程序接受用户的输入,再把用户的输入写入文件,最后关闭文件返回主程序。
JNZ B ;不同则转B
INC SI
INC D
LOOP C
(5) MODIFY子程序
MODIFY子程序的功能是修改记录。
先保护现场,然后清除右上部分的记录输入区域,接着打开文件。
用GET_REC子程序获取输入的记录信息,并存入BUFFER1中。从打开的文件中读取一个记录的容(23个字节)放在BUFFER2中。
(7)LIST子程序
LIST子程序的作用是显示文件中的记录。
首先清除记录输入区和显示区域。然后显示记录字段的标题。打开文件,保留文件句柄。读取一条记录的容放在BUFFER1中,并判断是否到了文件末尾,如果不是,则显示这条记录。循环读取直到文件结束。最后关闭程序,恢复现场。

学生成绩管理系统汇编语言

学生成绩管理系统汇编语言

摘要管理信息系统正在向着网络化、智能化和集成化等趋势发展。

学生成绩管理系统是为了更好的管理学生考试成绩而开发的数据管理软件。

它对于一个学校是不可缺少的重要部分,它的内容对于学校的决策者和管理者来说都至关重要。

学生成绩管理管理系统为用户提供充足的信息和快捷的查询手段,实现学生基本信息、成绩的录入,删除,查询,维护以及成绩的统计分析等几方面的功能,是现实问题的迫切要求。

本系统开发的总体任务是实现学生成绩管理的系统化、规范化、自动化。

达到提高学生成绩管理效率的目的。

与传统管理方法相比有明显的优点:查找方便,可靠性高,保密性好,成本低。

彻底改变了以前繁杂的管理模式,实现全面的、相对集中的、职能化的信息综合管理。

计算机被用到信息管理系统的环境正是适应了当今时代飞速发展的信息时代。

人们深刻的认识到了计算机功能的强大,对于复杂的信息管理,计算机充分发挥着它的优越性。

检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低,这些优点极大地减轻了学院教学人员的工作量,缩小开支,提高了学生档案管理的效率和准确性,能够合理的安排时间,学生能够尽快的知道自己的考试成绩。

同时,学生管理系统的应用也为今天的教育在未来市场的竞争力有所提高。

关键字:学生成绩管理,插入,查找,删除,退出,修改;目录1. 系统分析 (3)1.1系统开发背景 (3)1.2初步调查与可行性分析 (3)1.3系统目标 (3)1.4系统流程图 (4)2. 系统总体设计 (5)2.1总体结构图分析 (5)2.2总体结构图 (6)2.3总体数据结构 (6)3、详细设计 (7)3.1 程序功能设计 (7)3.2 设计思路 (7)4、系统测试 (9)4.1测试方案 (9)4.2测试用例及测试结果 (9)4.3软件可靠性 (11)5、软件使用说明书 (12)6、设计总结 (13)参考文献 (14)致谢 (15)附录(源代码) (16)1. 系统分析1.1系统开发背景学生成绩管理系统是为了更好的管理学生考试成绩而开发的数据管理软件。

汇编语言综合实验 --- 学生成绩排序(单链表实现)

汇编语言综合实验 --- 学生成绩排序(单链表实现)
②按学生的总成绩由高到低进行排序建立链表。
这一部分任务是按学生总成绩由高到低进行排序。采用单链表方式,给数据元素的链指针LINK字段装填数据,使LINK字段指向它的后继数据元素。步骤如下:
Ⅰ.初始时,数组元素的每个LINK字段值为0,表示数组元素没有被选中。扫描数组元素的SUM字段,从中找到第一个最大的数,将这个数组元素设置为链表的头,保存这个数组元素的位移量,并将其LINK字段设置为1,标记这个数组元素已被选中但尚未装填链指针。
重复上述步骤直到该结构体类型数组中的最后一个节点LINK字段置为1,该节点即为单链表的链尾。
③遍历单链表,即对学生成绩信息按总成绩由高到低输出。
首先将单链表的头指针赋值给BX,依次循环COUNT(学生人数)次输出每一个数组元素的值,每次输出结束后,将BX的值加上TYPE S_ARRAY(即加16字节),BX指向下一个数组元素的首地址。
②建立单链表,即完成对学生成绩信息的降序排列。
首先从所有数组元素中找出总成绩最大的一项,将该数组元素作为单链表的头指针,保存在DX中,同时将LINK字段赋值为1;
其次,从LINK字段为0的数组元素中找到总成绩最大的一项,将该数组元素的偏移地址作为前一节点的LINK字段值,同时将该节点的LINK字段值置为1;
图1-1程序主界面:
图1-2程序二级菜单界面:
2.排序功能的实现:
图1-2输入学生成绩界面:
图1-4按总分排序输出学生成绩信息:
3.设计思路:
(1)数据定义:
一个数据元素(一个学生的数据项)应该为一个结构类型,定义如下:
STUDENT STRUC;定义学生结构体
LINK DW 0;单链表指针,指向下一个节点偏移地址
Ⅰ.将链表的头元素的位移量送到BX寄存器。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

---------------------------------------------------------------最新资料推荐------------------------------------------------------ 汇编语言实验六学生成绩管理系统设计实验实验六学生成绩管理系统设计实验(综合性实验)一、实验要求和目的 1.熟悉汇编语言程序结构; 2.熟悉INT 21H 的文件操作功能调用; 3.熟悉INT 21H 的1、 9 号功能和INT 10H 常用功能的使用方法; 4.掌握多子程序复杂问题程序设计方法; 5.了解多模块程序设计方法(不作要求)。

二、软硬件环境 1、硬件环境:计算机系统windows; 2、软件环境:装有MASM、 DEBUG、 LINK、等应用程序。

三、实验涉及的主要知识单元对于一个复杂的程序,往往是分成若干个子程序设计的,然后用将它们组成一个完整的程序。

子程序通过调用和返回,参数传递方法实现互相联系。

四、实验内容与步骤 1、实验内容设计一个学生成绩管理系统,要求完成文件建立、学生成绩录入、显示指定学号的学生记录、删除一个学生的记录、修改学生记录、返回等工作。

学生成绩包括学号(XH)、姓名(XM)、数学(SX)、语文(YW)、外语(WY)字段。

至少包括30 名学生信息,每名学生学号字段为4个字符,姓名字段为15 个字符(最大),每门成绩字段为3 个字符(最大)。

2、实验步骤(1)编写主程序main.asm,实现如图所示菜单;(2)编写文件创建子程序create,实现在指定盘指定文件1/ 7夹d:\chengji\2009\下建立一个指定名称的文件2009doc.dat,界面如图所示;(3)编写成绩录入子程序append,实现在指定文件尾部插入一个学生的成绩记录,界面如图所示;(4)编写显示子程序display,实现按指定学号显示一个学生的记录,,界面如图所示;(5)编写修改子程序modify,实现按指定学号修改一个学生的记录字段(不需修改直接回车),界面如图所示;(6)编写删除子程序,实现按指定学号、姓名删除一个学生的记录,界面如图所示;(7)编译、链接、调试,产生可执行文件main.exe。

五、实验要求与提示 1、实验要求(1)画出各程序流程图;(2)列出程序清单,加上适量注释;(3)回答思考问题;(4)记录实验结果; (5) 完成实验报告(实验材料上的内容简写,自己的工作要详尽)。

2、实验提示考虑用INT 10H 的06H 号实现清屏的功能,用02H 号实现置光标位置的功能?六、思考与练习以及测评标准1.有兴趣的同学可以考虑用多模块程序设计方法实现; 2.文件在使用之前为何要打开?使用后为何要关闭?怎样计算文件的长度和移动文件的读写指针?打开获得句柄,使用后用 i nt 21h 七、程序流程图开始插入显示修改删除YYNNNN打开保存NNNYYYY 退出输入命令结束YN查找末尾插入输入学号查找输出输入学号查找修改输入学号查找删除输入文件名打开文件载入输入文件名新建文件输出八、实验结果九、程序代码datasegmentformsdb101*64dup(‘$’)filenamedb14,0,14dup(0)fo---------------------------------------------------------------最新资料推荐------------------------------------------------------rmsbdb14,’$$$$$$$$$$$$$$$’,22,’$$$$$$$$$$$$$$$$$$$$$$$’,6,’$$$$$$$’,6,’$$$$$$$’,6,’$$$$$$$’screen0db’1.Appendarecord’,0dh,0ah,’2.Displayarecord’,0dh,0ah,’3.Modifyarecord’,0dh,0ah,’4.Deletearecord’,0dh,0ah,’5.Openafile’,0dh,0ah,’6.Saveintoafile’,0dh,0ah,’7.ReturnDOS’,0dh,0ah,’Ple aseinput1‐6:’,’$’f1str1db‘ PleaseinputXH:$’f1str2db‘ PleaseinputXM:$’f1str3db‘ PleaseinputSX:$’f1str4db‘ PleaseinputYW:$’f1str5db‘ PleaseinputWY:$’f2str1db ‘ XueHao:$’f2str2db ‘ XingMing: $’f2str3db‘ ShuXue: $’f2str4db ‘ Yuwen: $’f2str5db ‘ WaiYu: $’f3str1db‘ XueHaodoesnotexist.Nothinghasbeenchanged.$’f4str1db ‘ PleaseinputXingMing:$’f4str2db‘ PleaseinputXueHao: $’f5str1db3/ 7‘ Pleaseinputfilename:$’f5str2 db’ Sorry!Filedoesnotexist.$’f5str3 db’ Loading...$’f5str4 db’ Completed.$’f5str5db’ Failed.$’f6str1 db’ Savesucceed!$’f6str2 db’ Savefailed.$’fstr1db‘ Finish!$’fstr2db‘ Pressanykeytoreturn!$’tempiodb0statedb’0’formenddw0XHtempdb0eh,’0’,’$$$$$$$$$$$$$$’XHtempbdb0eh,’0’,’$$$$$$$$ $$$$$$’cxtemp1dw100cxtemp2dw14ditempdw0sitempdw0handledw0d ataendsstacksegmentstacksdb64dup(0)stackendscodesegmentassumeds:data,ss:stack,cs:codestart:movax,datamovds,axmoves,axmovax,stackmovss,axcallinitialwin:callprts0callinputmoval,te mpiomovstate,alM1:cmpal,’1’jnzM2jmpf1jmpwinM2:cmpal,’2’jnzM3jmpf2jmpwinM3:cmpal,’3’jnzM4jmpf3jmpwinM4:cmpal,’4’jnzM5jmpf4jmpwinM5:cmpal,’5’jnzM6jmpf5jmpwinM6:cmpal,’6’jnzM7jmpf6jmpwinM7:cmpal,’7’jnzwinjmpquit;;;;;;;;;;;;; ;;;;;;quit:movah,4chint21h;;;;;;;;;;;;;;;;;;;initial:leaax,formsmovsi,axmovcx,101linit:moval,14movds:[si],almoval,22movds:[si+16],almoval,6movds:[si+40],almoval,6movds:[si+48],almoval,6movds:[si+56],aladdsi,64looplinitretf1:---------------------------------------------------------------最新资料推荐------------------------------------------------------ callcscreenleadi,formsmovcx,100Lf1:movdl,’$’cmpes:[di+1],dljzskipf1adddi,64loopLf1skipf1:lea ax,f1str1movsi,axcallputsmovax,dimovsi,axcallgetsleaax,f1st r2movsi,axcallputsmovax,diaddax,16movsi,axcallgetsleaax,f1s tr3movsi,axcallputsmovax,diaddax,40movsi,axcallgetsleaax,f1 str4movsi,axcallputsmovax,diaddax,48movsi,axcallgetsleaax,f 1str5movsi,axcallputsmovax,diaddax,56movsi,axcallgetsleaax, fstr1movsi,axcallputscallnewlineleaax,fstr2movsi,axcallputs callnewlinecallinputretf2:callcscreenleaax,f1str1movsi,axcallputsleaax,XHtempmovsi,ax callgetsmovcx,100movcxtemp1,cxleadi,XHtempleasi,formsLf21:l eadi,XHtempmovcx,16movsitemp,sirepecmpsbjzf21startmovsi,sit empaddsi,64movcx,cxtemp1deccxmovcxtemp1,cxinccxloopLf21leas i,f3str1callputscallnewlinejmpf2Qf21start:movsi,sitempcallc screenleasi,f2str1callputsmovsi,sitempaddsi,2callputscallne wlineleasi,f2str2callputsmovsi,sitempaddsi,18callputscallne wlineleasi,f2str3callputsmovsi,sitempaddsi,42callputscallne wlineleasi,f2str4callputsmovsi,sitempaddsi,50callputscallne wlineleasi,f2str5callputsmovsi,sitempaddsi,58callputscallne wlinef2Q:leasi,XHtempbleadi,XHtempmovcx,16repmovsbleaax,fst r1movsi,axcallputscallnewlineleaax,fstr2movsi,axcallputscal5/ 7lnewlinecallinputretf3:callcscreenleasi,f4str2callputsleasi,XHtempleadi,formscallg etsmovcx,100Lf3:movcxtemp1,cxleasi,XHtempmovcx,16movsitemp,simovditemp,dire pecmpsbjzf3startmovsi,sitempmovdi,ditempadddi,64movcx,cxtem p1loopLf3;cannotfindleasi,f3str1callputscallnewlinejmpf3Qf3 start: ;f4,f2movcx,64movdi,ditempleasi,formsbrepmovsbcallf1 f3Q:retf4:callcscreenleasi,f4str2callputsleasi,XHtempleadi,formscallg etsmovcx,100Lf4:movcxtemp1,cxleasi,XHtempmovcx,16movsitemp,simovditemp,dire pecmpsbjzf4startmovsi,sitempmovdi,ditempadddi,64movcx,cxtem p1loopLf4;cannotfindleasi,f3str1callputscallnewlinejmpf4Qf4 start:movcx,64movdi,ditempleasi,formsbrepmovsbf4Q:leasi,XHt empbleadi,XHtempmovcx,16repmovsbleasi,fstr1callputscallnewl ineleasi,fstr2callputscallnewlinecallinputretf5: callcscreen;copyfiletomemeryleasi,f5str1callputsleasi,filen amecallgetsmovbx,0leasi,filenamemovbl,ds:[si+1]moval,0movds :[si+bx+2],almovdx,siincdxincdxmovah,3dhmoval,0int21hjncsuc ceed1 fail: leasi,f5str2callputscallnewlinejmpf5Qsucceed1:movhandle,axl easi,f5str3callputsleadx,formsmovbx,handlemovcx,6000movah,3---------------------------------------------------------------最新资料推荐------------------------------------------------------ fhint21hjncsucceed2leasi,f5str5callputscallnewlinemovbx,han dlemovah,3ehint21hjmpf5Qsucceed2:leasi,f5str4callputscallne wlinemovbx,handlemovah,3ehint21hjmpf5Qf5Q:leasi,fstr2callpu tscallnewlinecallinputretf6:callcscreen;copymemerytofileleasi,f5str1callputsleasi,filen amecallgetsmovbx,0leasi,filenamemovbl,ds:[si+1]moval,0movds :[si+bx+2],alleadx,filenameincdxincdxmovcx,0movah,3chint21h jncsucleasi,f5str5callputscallnewlinejmpf6Qsuc:movhandle,ax leadx,formsmovbx,axmovah,40hmovcx,6400int21hjncsuc2leasi,f6 str2callputscallnewlinemovbx,handlemovah,3ehint21hjmpf6Qsuc 2:leasi,f6str1callputscallnewlinemovbx,handlemovah,3ehint21 hf6Q:leasi,fstr2callputscallnewlinecallinputretprts0:; 显示界面0movah,06hmoval,0movbh,0fhmovch,0movcl,0movdh,39movdl,79int 10hmovah,02hmovbh,0movdh,16movdl,0int10hleaax,screen0movsi, axcallputsretcscreen:movah,06hmoval,0movbh,0fhmovch,0movcl, 0movdh,52movdl,79int10hmovah,02hmovbh,0movdh,0movdl,0int10h retputs:movah,9movdx,siint21hretgets:movah,10movdx,siint21hcallnewlineretinput:movah,1int21hmovtempio,alretnewline:movah,2movdl,0dhint21hm ovah,2movdl,0ahint21hret;;;;;;;;;;;;;;;;;;;codeendsendstart7/ 7。

相关文档
最新文档