磁盘无符号字节数据文件操作实验报告.docx
- 文档编号:5698443
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:19
- 大小:172.92KB
磁盘无符号字节数据文件操作实验报告.docx
《磁盘无符号字节数据文件操作实验报告.docx》由会员分享,可在线阅读,更多相关《磁盘无符号字节数据文件操作实验报告.docx(19页珍藏版)》请在冰豆网上搜索。
磁盘无符号字节数据文件操作实验报告
微机原理及应用课程设计
磁盘无符号字节数据文件操作
课程设计任务书
题目:
磁盘无符号字节数据文件(小于64KB)操作
课程设计内容要求:
要求:
1)通过键盘输入被操作的文件名,然后完成数据文件的排序(从大到小),通过键盘输入排序后的新文件名,并显示文件的长度(字节数)、最大值和最小值。
2)通过键盘输入要搜索的关键字,对新文件进行搜索,并显示搜索结果。
3)根据需要可对搜索到的关键字进行修改。
目的:
课程设计注重提高学生应用能力、创新能力。
在掌握了基本的实验方法和实验技能且理论教学完成的基础上,要求学生通过一周的集中工作,初步锻炼综合运用所学知识的能力,通过讨论与合作,完成一项完整的设计工作。
更深入的了解微机芯片的用法和程序的完成过程,调试方法及技巧。
通过这个环节来加深对《微机原理与接口技术》所学内容的理解和融会贯通。
设计者姓名:
指导老师意见:
指导老师签名:
第一章课程设计的任务和目的
1.1课程设计任务
设计一汇编语言程序,实现对数据文件的操作,具体要求如下:
4)通过键盘输入被操作的文件名,然后完成数据文件的排序(从大到小),通过键盘输入排序后的新文件名,并显示文件的长度(字节数)、最大值和最小值。
5)通过键盘输入要搜索的关键字,对新文件进行搜索,并显示搜索结果。
6)根据需要可对搜索到的关键字进行修改。
1.2课程设计目的
本课程设计注重提高学生应用能力、创新能力。
在掌握了基本的实验方法和实验技能且理论教学完成的基础上,要求学生通过一周的集中工作,初步锻炼综合运用所学知识的能力,通过讨论与合作,完成一项完整的设计工作。
更深入的了解微机芯片的用法和程序的完成过程,调试方法及技巧。
通过这个环节来加深对《微机原理与接口技术》所学内容的理解和融会贯通。
Ø熟练掌握DOS功能调用
Ø熟练掌握分支程序的编写。
Ø掌握循环,排序,替换等程序的编写。
第二章课程设计思路和流程
3.1,设计思路
利用DOC系统功能中相关的文件管理功能来建立文件,打开文件,删除文件,复制文件以及关闭文件等,利用程序设计思路和DOC中字符/字符串输入/输出以及显示功能来完成文件内容的读写和排序
3.2,程序流程图
1》主流程图
2》新建一个文件流程图
3》读文件流程图
第三章程序内容
;*程序功能*************************************************************************
;程序运行时,根据菜单显示选择创建文件,打开文件,直接退出。
;选打开文件,先键入要打开的文件路径,自动完成排序(从大到小),并显示文
;件的最大值、最小值和文件的字节数(十进制表示),根据提示选择是否保存排序后
;的文件,若键入Y,则表示保存,否则,不保存。
;提示搜索数据吗?
键入Y搜索数据。
接着键入要搜索的关键字,搜索后显示结果。
;若搜索到,则提示是否修改搜索到的数据,键入Y修改,再键入新的字节。
否则关闭。
DATASSEGMENT
INDEXDB0AH,0AH,0DH,'*******MAINMENU:
*******'
DB0AH,0DH,'PLEASECHOOSEONEOFTHEM:
'
DB0AH,0DH,'A.CREATEANEWFILE.'
DB0AH,0DH,'B.READAFILE.'
DB0AH,0DH,'C.FINISH.',0AH,0DH,'$'
OPEN_MESSAGEDB0AH,0DH,'PLEASEENTERTHEPATHOFAFILENAME:
$'
SAVE_MESSAGEDB0AH,0DH,'DOYOUWANTTOSAVETHEFILE?
(Y/N)$'
STRING4DB0AH,0DH,'PLEASEENTERANEWFILENAME:
$'
STRING5DB0AH,0DH,'PLEASEENTERADATATOBEFOUND:
$'
STRING6DB0AH,0DH,'DOYOUWANTTOCHANGETHEFOUNDDATA?
(Y/N)$'
MAKE_MESSAGEDB0AH,0DH,'DOYOUWANTTOMAKEANEWFILE?
(Y/N)$'
UNFIND_MESSAGEDB0AH,0DH,'NOTFINDINGTHEDATA!
$'
STRING8DB0AH,0DH,'PLEASEENTERACHANGDENAME:
$'
C_MESSAGE1DB0AH,0DH,'1)CHANGEONEFOUNDBYTE!
$'
C_MESSAGE2DB0AH,0DH,'2)CHANGEALLFOUNDBYTE!
$'
C_READYDB0AH,0DH,'CHANGEREADY!
$'
SUCCESS_MESSAGEDB0AH,0DH,'FOUNDTHEDATA!
$'
ERROR_MESSAGE1DB0AH,0DH,'NOTOPENTHEFILE!
$'
ERROR_MESSAGEDB0AH,0DH,'ERROR!
$'
;**********************************************************************************
LINEDB0AH,0DH,'$';换行
HANDLEDW?
;文件号
RNUMDW?
;从文件中读出的数据个数
WNUMDW?
;写入文件的数据个数
MAXDB?
MINDB?
FILELENDB10DUP('$');文件的长度
LEN_BUFDB6DUP('$');暂存文件长度
DATA1DB?
;要查找的数据
CHOICEDB?
FILE_NAMEDB30,0,30DUP(?
)
NEWNAMEDB30,0,30DUP(?
)
BUFDB1000DUP(0);缓存文件内容
WBUFDB'DCFEBANM450596DHR'
DATASENDS
;**********************************************************************************
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS
MOVDS,AX
LEADX,INDEX
MOVAH,09H
INT21H
MOVAH,1
INT21H
CMPAL,'A'
JZXJIAN
CMPAL,'B'
JZGO
CMPAL,'C'
JZFINISH
;***********打开文件****************************************
GO:
LEADX,OPEN_MESSAGE;提示要打开的文件名
MOVAH,09H
INT21H
LEADX,FILE_NAME
MOVAH,0AH
INT21H
MOVCL,FILE_NAME+1
MOVCH,0
ADDDX,CX
MOVBX,DX
MOVBYTEPTR[BX+2],'$'
LEADX,LINE
MOVAH,09H
INT21H
OPENFILE:
LEADX,FILE_NAME
ADDDX,2
MOVAL,0
MOVAH,3DH
INT21H
JCUNOPEN
MOVHANDLE,AX
JNCREADFILE
;*********提示不能打开文件************************************
UNOPEN:
LEADX,ERROR_MESSAGE1
MOVAH,09H
INT21H
XJIAN:
LEADX,MAKE_MESSAGE;提示是否新建文件
MOVAH,09H
INT21H
MOVAL,01H
MOVAH,0CH
INT21H
MOVCHOICE,AL
CMPCHOICE,'Y'
JZNEWFILE1
CMPCHOICE,'y'
JZNEWFILE1
JMPFINISH
NEWFILE1:
LEADX,OPEN_MESSAGE;提示输入要打开的文件名
MOVAH,09H
INT21H
LEADX,FILE_NAME
MOVAH,0AH
INT21H
MOVCL,FILE_NAME+1
MOVCH,0
ADDDX,CX
MOVBX,DX
MOVBYTEPTR[BX+2],'$'
LEADX,LINE
MOVAH,09H
INT21H
;**********新建文件并写进数据*********************************
NEWFILE:
LEADX,FILE_NAME
ADDDX,2
MOVCX,00H
MOVAH,3CH
INT21H
JCERROR
MOVHANDLE,AX
MOVBX,HANDLE
MOVCX,14
LEADX,WBUF
MOVAH,40H
INT21H
JCERROR
MOVWNUM,AX
JMPOPENFILE
;**********读文件内容****************************************
READFILE:
MOVBX,HANDLE
MOVCX,1000
LEADX,BUF
MOVAH,3FH
INT21H
JCERROR
MOVBX,AX
MOVRNUM,AX
MOVBUF[BX],'$'
;显示文件内容
LEADX,LINE
MOVAH,09H
INT21H
LEADX,BUF
MOVAH,09H
INT21H
LEADX,LINE
MOVAH,09H
INT21H
;*******文件内容排序,求最大值,最小值,获得长度(字节)*****
MOVCX,RNUM
CMPCX,0
JZSORTEND
CMPCX,1
JZSORTEND
MOVBX,DX
LEASI,BUF
DECCX
OUTLOOP:
MOVDX,CX;DX控制内循环的次数
MOVBX,SI
INLOOP:
MOVAL,[BX]
CMPAL,[BX+1]
JNBUNCHANGE
XCHGAL,[BX+1]
MOV[BX],AL
UNCHANGE:
INCBX
DECDX
JNZINLOOP
LOOPOUTLOOP
;***********显示排序结果****************************
;最大值和最小值
SORTEND:
LEADX,BUF
MOVAH,09H
INT21H
LEADX,LINE
MOVAH,09H
INT21H
LEASI,BUF;MAX
MOVAL,[SI]
MOVMAX,AL
MOVDL,MAX
MOVAH,02H
INT21H
LEADX,LINE
MOVAH,09H
INT21H
MOVAX,RNUM
DECAX
ADDSI,AX;MIN
MOVAL,[SI]
MOVMIN,AL
MOVDL,MIN
MOVAH,02H
INT21H
LEADX,LINE
MOVAH,09H
INT21H
;计算文件长度
MOVCX,5
LEADI,FILELEN
LEASI,LEN_BUF
INCSI
XORDX,DX
MOVAX,RNUM
MOVBX,0AH
AGAIN:
DIVBX
ADDDL,30H
MOV[SI],DL
ANDAX,AX
JZTURN
INCSI
MOVDL,0
LOOPAGAIN
TURN:
MOVCX,5
TURN1:
MOVAL,[SI]
CMPAL,'$'
JZDISP
MOV[DI],AL
DECSI
INCDI
LOOPTURN1
DISP:
MOVBYTEPTR[DI],20H
MOVBYTEPTR[DI+1],42H
MOVBYTEPTR[DI+2],0AH
MOVBYTEPTR[DI+3],0DH
LEADX,FILELEN
MOVAH,09H
INT21H
;*****************保存排序后的结果********************
SAVE:
LEADX,SAVE_MESSAGE;提示是否保存文件
MOVAH,09H
INT21H
MOVAL,01H
MOVAH,0CH
INT21H
MOVCHOICE,AL;判断是否是否另存为文件
CMPCHOICE,'Y'
JZSAVE1
CMPCHOICE,'y'
JZSAVE1
LEADX,FILE_NAME
JMPSAVE2
SAVE1:
LEADX,STRING4;提示输入新的文件名
MOVAH,09H
INT21H
LEADX,NEWNAME
MOVAH,0AH
INT21H
MOVCL,NEWNAME+1
MOVCH,0
ADDDX,CX
MOVBX,DX
MOVBYTEPTR[BX+2],'$'
JCERROR
LEADX,NEWNAME
SAVE2:
ADDDX,2
PUSHDX
MOVCX,00H
MOVAH,3CH
INT21H
JCERROR
MOVHANDLE,AX
MOVBX,HANDLE
MOVAX,RNUM
MOVCX,AX
LEADX,BUF
MOVAH,40H
INT21H
JCERROR
MOVWNUM,AX
;**********查找文件内容****************************
SEARCH:
LEADX,STRING5;提示输入要查找的数据
MOVAH,09H
INT21H
MOVAH,01H
INT21H
MOVDATA1,AL
MOVCX,WNUM
LEASI,BUF
FINDING:
MOVAL,[SI]
CMPAL,DATA1
JZFOUND
INCSI
LOOPFINDING
FOUND:
JCXZNEXT1
LEADX,SUCCESS_MESSAGE;提示已经成功查找到数据
MOVAH,09H
INT21H
NEXT1:
ANDCX,CX
JNZWRITEFILE
JMPUNFOUND
;********修改找到的数据*****************************
WRITEFILE:
LEADX,STRING6;提示是否修改查找的数据
MOVAH,09H
INT21H
MOVAH,01H
INT21H
MOVCHOICE,AL;判断是否修改数据
CMPCHOICE,'Y'
JZREBUILT
CMPCHOICE,'y'
JZREBUILT
JMPCLOSEFILE
REBUILT:
LEADX,C_MESSAGE1
MOVAH,09H
INT21H
LEADX,C_MESSAGE2
MOVAH,09H
INT21H
LEADX,LINE
MOVAH,09H
INT21H
MOVAH,01H
INT21H
MOVCHOICE,AL;判断是否修改数据
CMPCHOICE,'1'
JZCHANGEONE
CMPCHOICE,'2'
JZCHANGEALL
JMPCLOSEFILE
CHANGEONE:
LEADX,STRING8;提示输入要替换的数据
MOVAH,09H
INT21H
MOVAH,01H
INT21H
MOV[SI],AL
INCSI
CMPAL,DATA1
JNEREADY
LOOPREBUILT
CHANGEALL:
LEADX,STRING8;提示输入要替换的数据
MOVAH,09H
INT21H
MOVAH,01H
INT21H
MOVBL,AL
BUILT:
MOVAL,[SI]
CMPAL,DATA1
JNENEXT
MOV[SI],BL
INCSI
LOOPBUILT
READY:
LEADX,C_READY
MOVAH,09H
INT21H
;******修改后的数据重新写入文件中******************
NEXT:
POPDX
MOVCX,00H
MOVAH,3CH
INT21H
JCERROR
MOVHANDLE,AX
MOVBX,HANDLE
MOVCX,RNUM
LEADX,BUF
MOVAH,40H
INT21H
JCERROR
MOVWNUM,AX
JMPCLOSEFILE
;*******提示查找的数据没找到***************
UNFOUND:
LEADX,UNFIND_MESSAGE
MOVAH,09H
INT21H
;*******关闭文件*****************************
CLOSEFILE:
MOVBX,HANDLE
MOVAH,3EH
INT21H
JMPFINISH
;*******出错提示*****************************
ERROR:
LEADX,ERROR_MESSAGE
MOVAH,09H
INT21H
FINISH:
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
第四章实验结果演示
第五章实验感悟。
设计对我综合运用所学知识的能力的提高有不小的帮助,之前做的实验都是很简单的编程,跟硬件结合也没有这么复杂,实现的功能都比较简单,可是这次要实现的功能相对来说比较复杂,要求掌握的知识比较全面。
经过这次的课程设计,再一次的印证了理论来源于实践,而实践又能升华理论这一个观点。
首先,要实现题目要求的功能并有所创新,我们必须全心地投入其中,养成一种敢于钻研敢于创新的习惯。
在把课程要求实现到实际中来的过程中,首先必须清楚明白地了解几个参考程序的每一行的意思,这就需要敢于静心钻研。
为了把使得程序更加完整,就必须进行创新,这就需要敢于创新。
其次,通过课程设计,让我在课本的基础上,更深入的了解了各种芯片的用法和程序的完成过程,调试方法及技巧。
第六章参考文献
2.《汇编语言程序设计》中国水利水电出版社相伟主编
3.《微型计算机原理与接口技术》清华大学出版社博琴吴宁
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 磁盘 符号 字节 数据文件 操作 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)