《汇编语言课程设计.doc》由会员分享,可在线阅读,更多相关《汇编语言课程设计.doc(13页珍藏版)》请在三一办公上搜索。
1、汇编程序设计课程设计报告( 2011 - 2012 年度第 2 学期)题目专业计算机科学与技术学生姓名王*班级B计算机091学号0910704101指导教师完成日期2011年6月21日目 录1 概 述11.1 课程设计目的11.2 课程设计内容12 系统需求分析12.1 系统目标12.2 主体功能12.3 开发环境13 系统概要设计13.1 系统总体分析规划13.2 系统流程图14系统详细设计1附 录3附录1 源程序清单3学生成绩管理系统的设计1 概 述 1.1 课程设计目的本程序设计是在学完教学大纲规定的全部内容、完成所有实践环节的基础上,旨在深化学生学习的汇编语言课程基本知识,进一步掌握汇
2、编语言程序设计方法,提高分析问题、解决问题的综合应用能力。1.2 课程设计内容课题:磁盘文件管理系统 2 系统需求分析2.1 系统目标通过在DOS中执行该程序实现对文件的相关操作。2.2 主体功能1.功能菜单的编制;2.可以创建新的文件;3.可以向文件中写入内容;4.可以读取文件中内容,并显示在屏幕上;2.3 开发环境在DOS环境中应用TASM50实现3 系统概要设计3.1 系统总体分析规划根据要求:1.功能菜单的编制;2.可以创建新的文件;3.可以向文件中写入内容;4.可以读取文件中内容,并显示在屏幕上;大致分析如下: 1.功能菜单的调出由子程序menu实现2.要求中的2、3、4三条要求皆在
3、功能菜单中通过键入1、2、3、4选择相应的功能。 键入1表示创建新的文件,由子程序create实现; 键入2表示写入内容到文件,由子程序write实现; 键入3表示读文件内容并显示,由子程序entry、read实现; 键入4表示退出,即退出当前执行内容。(注:此处所提到的子程序与代码中的定义相同相同。) 3.2 系统流程图出现错误提示出现成功提示功能菜单调出功能选择创建文件开始创建成功?出现错误提示打开文件打开成功?写入内容写入成功?关闭文件关闭成功?出现成功提示键入1键入2打开文件出现错误提示打开成功?读文件读取成功?显示内容关闭文件关闭成功?提示成功退出结束键入4键入3YYYYYYYNNN
4、NNNN4系统详细设计(功能实现及详细分析)1. 菜单功能的实现菜单功能由子程序me实现,在me中仅是输出menu,此功能运用dos中的09h调用即可,而达成目标的操作则是在data中对menu进行定义实现的。代码如下: DATA SEGMENT MENU DB 0DH,0AH,*,0DH,0AH DB * MENU *,0DH,0AH DB *-*,0DH,0AH DB * 1.CREATE FILE *,0DH,0AH DB * 2.WRITE TO FILE *,0DH,0AH DB * 3.READ FILE *,0DH,0AH DB * 4.QUIT *,0DH,0AH DB *-*
5、,0DH,0AH DB * CHOICE(1-4) *,0DH,0AH DB *,0DH,0AH,$2创建文件的实现 创建文件由子程序create实现,通过运用dos中的3ch调用即可。 由于相关文件的操作比较复杂,因此在相关方面有较多解释,而相对输入输出比较简单,则不予叙述,以下文件打开、关闭、读取、写入皆如此。 文件创建调用时由ds:dx提供路径以及文件名; Cf用来判定操作是否成功,cf=0时,表示成功,cf=1时表示失败; 操作成功则由ax存储文件代号,失败则由ax存储错误代码; Cx用来存放文件属性,CX=0时表示为普通文件; 文件属性是用来表示“活动”文件的代号,“活动”文件可以理
6、解为使用中文件。 例如以下代码: MOV AH 3CH LEA DX PATHNAME MOV CX 0 INT 21H 若PATHNAME以被定义为“D:AB.DAT”则表示将在D盘A文件夹中创建名为B.DAT的文件 3.写入文件内容的实现 文件内容的写入由entry、write实现。 其中子程序entry用于输入想要写入的语句; 而将内容写如文件的是子程序write, 大致分为三步:打开文件,写入内容,关闭文件, 文件的打开: 文件的打开通过运用dos中的3dh调用实现, 由ds:dx确定文件路径级文件名, 由cf判定是否成功, Ax存放相应的文件代号或错误代码, Al存放存取代码, 存取
7、代码用于表示打开方式,0表示可读,1表示可写,2表示可读可写,3表示退出。 内容的写入: 内容的写入通过运用dos中的40h调用实现, 由ds:dx表示地址, Bx存放文件号, Cx表示写入的字节数。 文件的关闭: 文件的关闭通过运用dos中的3eh调用实现, 其余则与文件的打开类似。 例如以下代码: MOV AH 40H LEA DX BUFFER MOV BX HANDLE MOV CX 60 INT 21H 则表示往当前文件中写入BUFFER中前60字节的内容。4.文件的读取 文件的读取由子程序read实现。 大致分为三步:打开文件,写入内容,关闭文件, 由于打开与关闭以介绍,则只介绍读
8、取 文件的读取: 文件的读取通过运用dos中的3fh调用实现, 有ds:dx表示存放地址, Bx表示文件号, Cx表示读取的字节数, 例如以下代码: MOV AH 3FH LEA DX BUFFER MOV BX HANDLE MOV CX 6O INT 21H 则表示读取当前文件中的前60字节并存放到DUFFER中, 而读取内容的显示则由dos中的9h调用实现。5.退出 当前程序的退出通过运用dos中的4ch调用实现附 录附录1 源程序清单DATA SEGMENT MENU DB 0DH,0AH,*,0DH,0AH DB * MENU *,0DH,0AH DB *-*,0DH,0AH DB
9、* 1.CREATE FILE *,0DH,0AH DB * 2.WRITE TO FILE *,0DH,0AH DB * 3.READ FILE *,0DH,0AH DB * 4.QUIT *,0DH,0AH DB *-*,0DH,0AH DB * CHOICE(1-4) *,0DH,0AH DB *,0DH,0AH,$ PATHNAME DB D:IBM PC.TXT,00 HANDLE DW ? BUFFER1 DB 60,0,60 DUP (?) BUFFER2 DB 60,0,60 DUP (?) HUANHUANG DB ,0DH,0AH,$ CHOSE DB 0DH,0AH,PL
10、EASE ENTERTHE DIGITAL FROM 1-4!,0DH,0AH,$ RNTERY DB 0DH,0AH,ENTER WHAT YOU WANT TO WRITE TO THE FILE!,0DH,0AH,$ STR_OK1 DB 0DH,0AH,CREATE FILE SUCCESSFULLY!,0DH,0AH,$ STR_OK2 DB 0DH,0AH,WRITE TO FILE SUCCESSFULLLY!,0DH,0AH,$ STR_OK3 DB 0DH,0AH,READ FROM FILE SUCCESSFULLY!,0DH,0AH,$ STR_ERROR1 DB CRE
11、ATE FILE ERROR!$ STR_ERROR2 DB OPEN FILE ERROR!$ STR_ERROR3 DB WRITE TO FILE ERROR!$ STR_ERROR4 DB READ FILE ERROR!$ STR_ERROR5 DB EXIT FROM FILE ERROR!$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA MAIN PROC FAR START: MOV AX,DATA MOV DS,AXMOV AX,0600HCALL MECALL CHOICERET MAIN ENDP ME PROC NEARMOV
12、AH,9LEA DX,MENUINT 21H ME ENDP CHOICE PROC NEAR MOV AH,1 INT 21H CMP AL,31H JE NEXT1 CMP AL,32H JE NEXT2 CMP AL,33H JE NEXT3CMP AL,34HJE NEXT4 JMP BACK NEXT1: CALL CREATE NEXT2: CALL ENTRY NEXT3: MOV AH,9 LEA DX,HUANHUANG INT 21H CALL READ NEXT4:MOV AX,4C00HINT 21H BACK:MOV AH,9LEA DX,CHOSEINT 21HCA
13、LL MERET CHOICE ENDP CREATE PROC NEARMOV AH,3CHLEA DX,PATHNAMEMOV CX,0INT 21HJC ERROR1MOV HANDLE,AXJMP EXIT ERROR1:MOV AH,1LEA DX,STR_ERROR1INT 21HJMP EXIT1 EXIT:MOV AH,9 LEA DX,STR_OK1INT 21H EXIT1:CALL CHOICE CREATE ENDP ENTRY PROC NEARMOV AH,9LEA DX,RNTERYINT 21HLEA DX,BUFFER1MOV AH,0AHINT 21HSUB
14、 CH,CHMOV CL,BUFFER1+1ADD DX,2CALL WRITERET ENTRY ENDP WRITE PROC NEARMOV AH,3DHLEA DX,PATHNAME MOV AL,1INT 21HJC ERROR2MOV HANDLE,AX MOV AH,40HLEA DX,BUFFER1+2MOV BX,HANDLEMOV CX,60INT 21HJC ERROR3MOV AH,3EHMOV BX,HANDLEINT 21HJC ERROR4JMP BACK1 ERROR2:MOV AH,9LEA DX,STR_ERROR2INT 21HJMP EXIT2 ERRO
15、R3:MOV AH,9LEA DX,STR_ERROR4INT 21HJMP EXIT2 ERROR4:MOV AH,9LEA DX,STR_ERROR5INT 21HJMP EXIT2 BACK1:MOV AX,9LEA DX,STR_OK2INT 21H EXIT2:CALL CHOICE WRITE ENDP READ PROC NEARMOV AH,3DHLEA DX,PATHNAMEMOV AL,0INT 21HJC ERROR5MOV HANDLE,AXMOV AH,3FHLEA DX,BUFFER2MOV BX,HANDLEMOV CX,60INT 21HJC ERROR6MOV
16、 AH,9LEA DX,BUFFER2INT 21HJC ERROR6MOV AH,3EHMOV BX,HANDLEINT 21HJC ERROR7JMP BACK2 ERROR5:MOV AH,9LEA DX,STR_ERROR2INT 21HJMP EXIT3 ERROR6:MOV AH,9LEA DX,STR_ERROR4INT 21HJMP EXIT3 ERROR7:MOV AX,9LEA DX,STR_ERROR5INT 21HJMP EXIT3 BACK2:MOV AH,9LEA DX,STR_OK3INT 21H EXIT3:CALL CHOICE READ ENDP CODE ENDSEND START END MAINMOV AH,40HLEA DX,BUFFER2