微机课程设计磁盘无符号字节数据文件操作.doc

上传人:laozhun 文档编号:2392136 上传时间:2023-02-17 格式:DOC 页数:22 大小:507KB
返回 下载 相关 举报
微机课程设计磁盘无符号字节数据文件操作.doc_第1页
第1页 / 共22页
微机课程设计磁盘无符号字节数据文件操作.doc_第2页
第2页 / 共22页
微机课程设计磁盘无符号字节数据文件操作.doc_第3页
第3页 / 共22页
微机课程设计磁盘无符号字节数据文件操作.doc_第4页
第4页 / 共22页
微机课程设计磁盘无符号字节数据文件操作.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《微机课程设计磁盘无符号字节数据文件操作.doc》由会员分享,可在线阅读,更多相关《微机课程设计磁盘无符号字节数据文件操作.doc(22页珍藏版)》请在三一办公上搜索。

1、 微机原理及应用课程设计 学院: 信息电子学院 班级:08电子信息工程(3)班 学号: E08610308 姓名: 陈建能 指导老师: 张国萍/鲍佳 日期: 2011/01/14 微机原理课程设计任务书一、设计题目 磁盘无符号字节数据文件(小于64KB)操作二、总则1、在19周完成并提交设计,通过演示和非抄袭确认后所取得的成绩为有效成绩。2、设计过程中严禁抄袭,否则将根据情节扣减成绩直至取消成绩。3、设计调试在EDA实验室(408)进行,时间为19周周一至周五。三、设计内容及要求设计汇编语言程序,实现对数据文件的操作,具体要求如下:1、通过键盘输入被操作的文件名,然后完成数据文件的排序(从大到

2、小),通过键盘输入排序后的新文件名,并显示文件的长度(字节数)、最大值和最小值。2、通过键盘输入要搜索的关键字,对新文件进行搜索,并显示搜索结果。3、根据需要可对搜索到的关键字进行修改。四、设计报告要求1、设计思想描述及总体设计功能与结构框图2、程序流程框图3、源程序(附程序及功能模块注释)。目录1、课程设计目的42、课程设计工具及题目52.1、课程设计工具.5 2.2、课程设计题目.53、课程设计内容及步骤53.1、课程设计内容.53.2、课程设计步骤.54、课程设计程序(源代码)5 4.1数据定义 54.2主函数.74.3创建文件子程序.104.4显示文件内容子程序.114.5显示文件内容

3、长度子程序.124.6修改文件保存子程序.134.7排序子程序.144.8关键字搜索子程序.144.9替换关键字子程序.164.10打开读取文件子程序.165、课程设计成果.18 5.1创建文件.18 5.2读取文件.195.3显示文件内容.19 5.4显示文件长度.20 5.5排序,输出最大最小值.20 5.6搜索关键字.20. 5.7替换关键字.205.8退出程序.216、课程设计心得.227、参考文献.22课程设计目的微机原理和接口技术是计算机及电子类专业重要的基础专业课之一,它不但要求有较高的理论水平,而且还要求有较强的实际动手能力。这次课程设计的主要目的是提高我们的实践能力,包括提高

4、汇编等语言的编程能力和分析能力。 课程设计能把课本中分布学习的知识,在设计中综合加以应用,进而得到巩固、加深和发展。同时,学习者通过学习查找、运用设计资料,完成工程设计所必备的基本训练。 通过课程设计,能够对所学的知识有更进一步的理解,并能掌握学习理论时没有注意的细节。在实际设计工作中,只要有一个环节没有做好,整个体系都不能正常运行。调试程序、排除故障有助于提高分析问题、解决问题的能力。课程设计中碰到的挫折,有助于养成良好的学习习惯、严谨的工作作风。长期以来,注重书本知识,轻视实际动手设计能力是教学中普遍存在的现象。进行课程设计的目的就是要改变这种状况,使学习者既具有完备的理论知识,也能够解决

5、在实际学习、生活工作中遇到的问题。学生应该能够把学到的理论知识用到实际中去,将知识转变为实际的生产力,同时通过这些理论知识和实际的应用推动理论和实践的发展。多年实践证明,课程设计是一个不可缺少的教学环节,它对学生微机知识的掌握和微机应用能力的提高是十分重要的。通过微机原理课程设计,使学生能够进一步掌握微机的基本概念、原理和方法,掌握汇编语言,并能够正确地进行基本的计算机设计,编写相关的软件。使学生在完成本课程学习后,能够进行微机应用方面的工作,并为其它课程奠定微机硬件基础。课程设计工具及题目课程设计工具:PC机一台课程设计题目:磁盘无符号字节数据文件(小于64KB)操作 课程设计内容及步骤设计

6、一汇编语言程序,实现对数据文件的操作,具体要求如下:1 通过键盘输入被操作的文件名,然后完成数据文件的排序(从大到小),通过键盘输入排序后的新文件名,并显示文件的长度(字节数)、最大值和最小值。2 通过键盘输入要搜索的关键字,对新文件进行搜索,并显示搜索结果。3 根据需要可对搜索到的关键字进行修改。课程设计程序(源程序及功能模块注释);*数据段*DATA SEGMENT;主菜单MainMenu MANU1 DB 0AH,0AH,0DH,*MainMenu:* DB 0AH,0DH, * 1. Create a new file. * DB 0AH,0DH, * 2. Read a file.

7、* DB 0AH,0DH, * 3. Exit. * DB 0AH,0DH, * DB 0AH,0DH,Please choose one operation:,0AH,0DH,$ ;子菜单SubMenuMANU2 DB 0AH,0AH,0DH,*SubMenu:* DB 0AH,0DH, * 1. Display the content of the file. * DB 0AH,0DH, * 2. Display the length of the content. * DB 0AH,0DH, * 3. Sort order and display maximum and minimum.

8、 * DB 0AH,0DH, * 4. Search a keyword. * DB 0AH,0DH, * 5. Change a keyword to another * DB 0AH,0DH, * DB 0AH,0DH,Please choose one operation:,0AH,0DH,$ NAMEBUFF DB 50,?,50 DUP(?) ;输入的磁盘文件路径DATABUFF DB 200 DUP(?) ;数据保存区DATT DB 200,?,200 DUP(?) ;新文件输入的内容INTRO DB 0DH,0AH,Entery path:$ ;输入磁盘文件路径INTRONEW

9、DB 0DH,0AH,Entery new path:$ ;输入新文件路径NEWNAME DB 50,?,50 DUP(?) ;输入的新文件路径HANDLE DW ?CHANGDU DB 0DH,0AH,The length of the content is:$;输出所指定文件的内容长度TEXTOLD DB 0DH,0AH,The content is: ,0DH,0AH,$ ;输入文本内容TEXTNEW DB 0DH,0AH,After order, the text is:,0DH,0AH,$;输出排序后的文本内容MAXMSG DB 0DH,0AH,Maximum:$ ;输出最大的字符M

10、INMSG DB 0DH,0AH,Mininum:$ ;输出最小的字符KEYMSG DB 0DH,0AH,Please input the key word :$ ;输入要查找的关键字CHANGEDMSG DB 0DH,0AH,Please input the word you want to change:$;输入想要改变的关键字符CHANGETO DB 0DH,0AH,Changed to:$ ;输入改变后的关键字符CHMSG DB 0DH,0AH,The changed word is :$ ;输出改变后的内容FOUND DB 0DH,0AH,The number of keyword

11、is:$ ;输出所要查找的关键字符的个数INPUT DB 0DH,0AH,Please input content:$ ;输入新建文件的内容SAVE DB 0DH,0AH,Saved to a new file?(Y/N)$ ;是否把所修改后的内容保存为一个新的文件MAXIMUM DB 0 ;用于保存最大关键字MINIMUM DB 0 ;用于保存最小关键字keyword DB 0 ;用于保存要查找的关键字COUNT1 DB 0 ;要查找的关键字的个数LENGTHTH DW 0 ;文件字符的总长度 EMESS DB Error!$ ;表示操作出现错误CRLF DB 0DH,0AH,Ok!$ ;显

12、示一个回车DATA ENDS;*代码段*CODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX;*主函数*MAINMENU: LEA DX,MANU1 ;显示主菜单 MOV AH,9 ;字符串输出 INT 21H MOV AH,1 ;有回显的单字符输入 INT 21H CMP AL,1 ;选择创建文件 JZ create CMP AL,2 ;选择显示文件 JZ read CMP AL,3 ;选择退出 JZ EXIT JMP MAINMENU ;返回主菜单 EXIT: MOV AH,4CH INT 21H create: M

13、OV DX,OFFSET INPUT MOV AH,9 INT 21H LEA DX,DATT MOV AH,0AH ;字符串输入 INT 21H MOV CL,datt+1 XOR CH,CH MOV LENGTHTH,CX ;文件长度 CALL newfile ;调用新建文件子程序 JMP MAINMENUread: CALL open ;调用打开文件子程序read1:MOV DX,OFFSET MANU2 ; 显示子菜单 MOV AH,9 INT 21H MOV AH,1 ;选择子菜单 INT 21H CMP AL,1 JZ display ;显示文件内容 CMP AL,2 JZ lon

14、g ;显示文件中字符的长度 CMP AL,3 JZ order ;排序,显示最大值和最小值 CMP AL,4 JZ SEARCH ;搜索关键字 CMP AL,5 JZ change ;修改关键字 JMP MAINMENU ;返回主菜单EXITT: MOV DX,OFFSET SAVE ;提示是否要保存修改的文件 MOV AH,9 INT 21H MOV AH,1 ;是否保存已修改的内容 INT 21H CMP AL,Y JZ save22 JMP MAINMENUsave22:CALL newfile1 ;调用修改文件保存子程序 JMP MAINMENUdisplay: MOV DX,OFFS

15、ET TEXTOLD MOV AH,09H INT 21H CALL SHOW ;调用显示文件内容子程序 JMP read1 long: CALL showlength ;调用显示文件字符长度子程序 JMP read1order: CALL select ;调用文件内容排序子程序 MOV DX,OFFSET TEXTNEW MOV AH,09H INT 21H CALL SHOW MOV DX,OFFSET MAXMSG MOV AH,09H INT 21H MOV DL,MAXIMUM MOV AH,02H INT 21H MOV DX,OFFSET MINMSG MOV AH,09H IN

16、T 21H MOV DL,MINIMUM MOV AH,02H INT 21H JMP EXITT SEARCH: CALL SEARCH1 ;调用查找关键字子程序 MOV DX,OFFSET FOUND MOV AH,09H INT 21H MOV DL,COUNT1 MOV AH,02H INT 21H JMP read1 change: CALL turn ;调用替换子程序 MOV DX,OFFSET CHMSG MOV AH,09H INT 21H CALL SHOW JMP EXITT RET ;*创建新文件子程序*newfile procMOV DX,OFFSET INTRONEW

17、 ;输出输入新文件路径 MOV AH,09H INT 21H MOV DX,OFFSET NEWNAME ;输入文件路径 MOV AH,0AH INT 21H MOV DX,OFFSET CRLF MOV AH,09H INT 21H ;在路径后面加0 MOV SI,OFFSET NEWNAME+1 MOV BL,SI ;得到实际字节数 MOV BH,0 MOV byte ptr NEWNAME+BX+2,0 ;建立文件 MOV DX,OFFSET NEWNAME+2 MOV CX,0 MOV AH,3CH INT 21H MOV SI,OFFSET HANDLE MOV SI,AX ;保存文

18、件代号 JC error2 ;*往文件写内容* MOV BX,SI ;文件代号 LEA DX,datt+2 MOV CX,LENGTHTH MOV AH,40H INT 21HJC error2 ;*关闭文件*exit2:MOV SI,OFFSET HANDLE MOV BX,SI MOV AH,3EH INT 21H JC error2 RETerror2:MOV DX,OFFSET EMESS ;出错 MOV AH,09H INT 21H RETnewfile ENDP;*显示文件内容子程序*SHOW proc MOV CX,LENGTHTH MOV BX,OFFSET DATABUFFn

19、ewchar: MOV AH,2 MOV DL,BX cmp DL,1AH ;进行逐字显示 JE exitshow INT 21H INC BX loop newcharexitshow:RETSHOW ENDP;*显示文件内容长度子程序*showlength proc MOV DX,OFFSET CHANGDU MOV AH,09H INT 21H MOV DX,LENGTHTH MOV CL,4 SHR DL,CL ;高低互换 CMP DL,9 JBE LP ADD DL,7 ;a-f的转换LP: ADD DL,30H ;得到ASCII码 MOV AH,6 INT 21H MOV DX,L

20、ENGTHTH AND DL,0FH ;取低位 CMP DL,9 JBE LPP ADD DL,7 ;a-f的转换LPP: ADD DL,30H MOV AH,6 INT 21H MOV DL,H ;加入H表示十六进制 MOV AH,6 INT 21H RETshowlength ENDP;*修改文件保存子程序*newfile1 proc MOV DX,OFFSET INTRONEW MOV AH,09H INT 21H MOV DX,OFFSET NEWNAME ;输入文件路径 MOV AH,0AH INT 21H MOV DX,OFFSET CRLF ;回车换行 MOV AH,09H IN

21、T 21H;*在路径后面加0* MOV SI,OFFSET NEWNAME+1 MOV BL,SI ;得到实际字节数 MOV BH,0 MOV BYTE ptr NEWNAME+BX+2,0;*建立文件* MOV DX,OFFSET NEWNAME+2 MOV CX,0 MOV AH,3CH INT 21H MOV SI,OFFSET HANDLE MOV SI,AX ;保存文件代号 JC errort2;*往文件写内容* MOV SI,OFFSET HANDLE MOV BX,SI ;文件代号 LEA DX,DATABUFF MOV CX,LENGTHTH MOV AH,40H INT 21

22、H JC errort2;*关闭文件*exitt2:MOV SI,OFFSET HANDLE MOV BX,SI MOV AH,3EH INT 21H JC errort2 RETerrort2:MOV DX,OFFSET EMESS ;出错 MOV AH,09H INT 21H RETnewfile1 endp;*排序子程序*select proc LEA DI,DATABUFF ;di指向要排序的字符的首地址 MOV CX,LENGTHTH ;bl外循环次数 MOV BL,CLpai1: MOV SI,DI ;si指向当前要比较的字符 MOV CL,BL ;cl内循环次数pai2:MOV

23、AL,SI ;取一个字符 INC SI ;指向下一字符 CMP AL,SI ;前一字符与下一字符比较 JNC pai3 ;若大于则不交换 MOV DL,SI ;若小于则前后两字符交换 MOV SI-1,dl MOV SI,alpai3:DEC CL ;内循环是否结束 JNZ pai2 ;未结束则继续 DEC BL ;外循环是否结束 JNZ pai1 ;未结束则继续LEA SI,DATABUFFMOV AL,BYTE ptrSIMOV MAXIMUM,ALLEA SI,DATABUFFMOV BX,LENGTHTHDEC BXMOV AL,BYTE ptrSI+BXMOV MINIMUM,AL

24、RETselect endp;*关键字搜索子程序*SEARCH1 PROCMOV DX,OFFSET KEYMSG MOV AH,9 INT 21H MOV AH,1 INT 21H XOR BX,BX LEA SI,DATABUFF MOV CX,LENGTHTHSCH: CMP AL,SI JZ ADD2NET: INC SI LOOP SCH JMP NEXT2ADD2: INC BX JMP NETNEXT2: MOV COUNT1,BL MOV DL,BL MOV CL,4 SHR DL,CL ;高低互换 CMP DL,9 JBE LP2 ADD DL,7 ;a-f的转换LP2: A

25、DD DL,30H ;得到ASCII SHL DL,CL MOV COUNT1,DL MOV DL,BL AND DL,0FH ;取低位 CMP DL,9 JBE LP3 ADD DL,7 ;a-f的转换LP3: ADD DL,30H OR COUNT1,DL ;加入H表示十六进制,转换为ASCII码 RET SEARCH1 ENDP;*替换关键字子程序*turn proc MOV DX,OFFSET CHANGEDMSG MOV AH,9 INT 21H MOV AH,1 INT 21H MOV BL,AL MOV DX,OFFSET CHANGETO MOV AH,9 INT 21H MO

26、V AH,1 INT 21H LEA SI,DATABUFF MOV CX,LENGTHTHsch1: cmp BL,SI ;与放在bl中的字符比较 JZ add11 ;找到则替换net1: INC SI LOOP sch1 ;继续寻找 JMP net21add11: MOV SI,AL ;替换 JMP net1net21: RETturn ENDP;*打开读取文件子程序*open PROCopenfile: MOV DX,OFFSET INTRO MOV AH,09H INT 21H;*读文件路径名* MOV DX,OFFSET NAMEBUFF MOV AH, 0AH INT 21H MO

27、V DX,OFFSET CRLF MOV AH,09H INT 21H;*将缓冲区路径名后面加0* MOV SI,OFFSET NAMEBUFF+1 ;得到实际字节数 MOV BL,SI MOV BH,0 MOV BYTE ptr NAMEBUFF+BX+2, 0;*打开文件* MOV AL,0 MOV DX, OFFSET NAMEBUFF+2 MOV AH,3DH INT 21H MOV BX,AX MOV HANDLE,AX ;保存文件号 JC error1;*读取文件*newbuff: MOV CX,200 ;一次读入的字符数 MOV DX,OFFSET DATABUFF MOV AH

28、,3FH INT 21H MOV LENGTHTH,AX JC error1exit1:MOV SI,OFFSET HANDLE MOV BX,si MOV AH,3EH INT 21H JC error1 RET ;返回主程序error1: MOV DX,OFFSET EMESS MOV AH,09H INT 21H RETopen ENDPCODE ENDS END START 课程设计成果1、创建文件F盘下有新建的1.txt文件1.txt中的内容如下2、读取文件3、显示文件内容4、显示文件长度5、排序,输出最大最小值6、搜索关键字7、替换关键字8、退出程序课程设计心得通过此次实验,进一步了掌握微机的基本概念、原理和方法,掌握汇编语言,并能够正确地进行基本的计算机设计,编写相关的软件,在完成本课程学习后,能够进行微机应用方面的工作,并为其它课程奠定微机硬件基础。 一开始碰到了很多的问题,调用DOC的很多功能不是很熟,后来慢慢地熟悉起来了。对于各种操作可以用子程序来完成。这样程序就显得很有结构。可以分步来调试他的正确性和实用性。当框架基

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号