汇编--BIOS和DOS中断.doc_第1页
汇编--BIOS和DOS中断.doc_第2页
汇编--BIOS和DOS中断.doc_第3页
汇编--BIOS和DOS中断.doc_第4页
汇编--BIOS和DOS中断.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、实验目的和内容(1)掌握BIOS和DOS中断的基本原理;(2)了解DOS的文件管理功能;(3)编程实现基本的文件管理功能;(4)观察并记录运行结果。二、实验原理及基本技术路线图(方框原理图)DOS的文件管理功能可以实现建立、打开、读写、关闭文件等操作。DOS2.0以上版本在DOS1.0版FCB(文件控制块)功能的基础上增加了句柄式(HANDLE)文件管理功能。句柄式文件管理功能支持树型结构,即允许指定文件路径。当系统允许打开的文件数量足够多,则一个程序装入内存后,系统把属于它的20个文件句柄中的5个分配给DOS标准字符设备,这也就意味着可以使用句柄访问这些设备,就像访问其它磁盘文件一样。一个过程每调用一次打开或创建文件功能,就将该过程自己的20个句柄中的一个分配出去,直到所有句柄用完或是系统打开文件表满为止。采用句柄式文件管理功能打开或建立一个文件后,若操作成功,DOS回送一个句柄在AX中,其后对该文件的读写、关闭等操作,均通过分配该句柄实现,而不再使用文件说明,因此应保存好返回的句柄,一般把它存放在一个字型内存变量中。句柄式文件管理功能的共同特点:若调用成功,则使CF=0,否则使CF=1,AX错误码。利用文件句柄存取文件的流程图:移动文件指针到所需位置(若顺序存取则由操作系统自动调整)置CX为要读或写的字节数进行读或写操作打开或创建文件读或写结束?关闭文件三、所用仪器、材料(设备名称、型号、规格等)(1)操作系统平台:Windows 7(2)汇编环境:Microsoft MASM 5.0(3)文本编辑器:记事本四、实验方法、步骤(1)在D:assembly下新建文件管理功能宏指令库filefuc.mac,输入宏指令代码;(2)在D:assembly下新建filec.asm;输入建立文件的汇编程序源代码,实现功能为:在D:assembly下创建一个数据文件FDATA.DAT,为以后的读写使用。若创建成功,则显示“CREATE FILE OK!”,然后关闭该文件,返回DOS。在创建及关闭FDATA.DAT文件时若遇到错误,则显示相关的错误提示信息;(3)在D:assembly下新建filew.asm;输入写文件的汇编程序源代码,实现功能为:首先打开D:assemblyFDATA.DAT文件(由程序filec.asm创建);接着在该文件中写入信息“WRITE DEMO!”;然后关闭它;最后返回DOS。若写入成功,则显示“WRITE FILE OK!”。在对FDATA.DAT文件操作时若遇到错误,则显示相关的错误提示信息;(4)在D:assembly下新建filer.asm;输入读文件的汇编程序源代码,实现功能为:首先打开D:assemblyFDATA.DAT文件(由程序filec.asm创建);接着在该文件中读出信息(该信息应是由程序filew.asm写入的WRITE DEMO!);然后关闭FDATA.DAT文件;最后返回DOS。若读取成功,则显示“READ FILE OK!”。在对FDATA.DAT文件操作时若遇到错误,则显示相关的错误提示信息。为了验证其读取的正确性,在读文件的前后均调用了PUTS宏指令显示BUFFER中的信息,若程序运行正确,两次显示的信息应不相同;(5)汇编以上三个程序(filec.asm、filew.asm、filer.asm)源代码,检查错误,错误可能是由宏指令库里的代码错误导致,应注意汇编程序的提示信息,并改正之,重新汇编;(6)调试运行以上三个程序,并记录实验结果;(7)完成实验报告。五、实验过程原始记录(数据、图表、计算等)1. 新建文件管理功能宏指令库filefuc.mac:filefuc.mac文件源码:;-;功能:保存寄存器DX、CX、BX、AX;-PUSHREG MACROPUSH DXPUSH CXPUSH BXPUSH AXENDM;-;功能:恢复寄存器AX、BX、CX、DX;-POPREG MACROPOP AXPOP BXPOP CXPOP DXENDM;-;功能:清屏;-CLRSCR MACROPUSHREGMOV AH,6MOV AL,0MOV BH,4EHMOV CX,0MOV DX,184FHINT 10HPOPREGENDM;-;功能:置光标;入口:DH:DL 行,列;出口:无;-CURSOR MACRO ROW,COLPUSHREGMOV AH, 2MOV BH, 0MOV DH, ROWMOV DL, COLINT 10HPOPREGENDM;-;功能:在指定位置显示字符串;入口:S 字符串变量(以$结束);出口:无;-PUTS MACRO ROW,COL,SPUSHREGCURSOR ROW,COLLEA DX,SMOV AH,9INT 21HPOPREGENDM;-;功能:给DS赋值;入口:数据段名:DATA;出口:无;-LOADDS MACRO DATAMOV AX,DATAMOV DS,AXENDM;-;功能:返回DOS;入口:无;出口:无;-RETURN MACROMOV AX,4C00HINT 21HENDM;-;功能:创建文件;入口:PNAME 文件说明; MSG6 文件创建失败时显示的字符串;出口:AL=1成功,AL=0失败;-NEWFILE MACRO PNAME,MSG6LOCAL ERRORLOCAL EXITMOV AH, 3CHMOV CX, 0LEA DX, PNAMEINT 21HJC ERRORMOV FILEHANDLE,AXMOV AL,1JMP EXIT ERROR:PUTS 10,10,MSG6MOV,AL,0 EXIT:NOPENDM;-;功能:打开文件 ;入口:PNAME 文件说明; MSG2 文件打开失败时显示的字符串;出口:AL=1成功,AL=0失败;-OPENFILE MACRO PNAME,MSG2LOCAL ERRORLOCAL EXITMOV AH, 3DHMOV AL, 02HLEA DX, PNAMEINT 21HJC ERRORMOV FILEHANDLE,AXMOV AL,1JMP EXIT ERROR:PUTS 10,10,MSG2MOV AL,0 EXIT:NOPENDM;-;功能:关闭文件;入口:MSG4 文件关闭失败时显示的字符串;出口:AL=1成功,AL=0失败;-CLOSEFILE MACRO MSG4LOCAL ERRORLOCAL EXITMOV AH, 3EHMOV BX, FILEHANDLEINT 21HJC ERRORMOV AL,1JMP EXIT ERROR:PUTS 10,10,MSG4MOV AL,0 EXIT:NOPENDM;-;功能:读文件 ;入口:LENGTH 读字节数 BUF 缓冲区首址; MSG3 文件打开失败时显示的字符串;出口:AL=1成功,AL=0失败;-READFILE MACRO LENGTH,BUF,MSG3LOCAL ERRORLOCAL EXITMOV AH, 3FHMOV BX, FILEHANDLEMOV CX, LENGTHLEA DX, BUFINT 21HJC ERRORMOV AL,1JMP EXIT ERROR:PUTS 10,10,MSG3MOV AL,0 EXIT:NOPENDM;-;功能:写文件;入口:LENGTH 写字节数 BUF 缓冲区首址; MSG5 写文件失败时显示的字符串;出口:AL=1成功,AL=0失败;-WRITEFILE MACRO LENGTH,BUF,MSG5 LOCAL ERRORLOCAL EXITMOV AH, 40HMOV BX, FILEHANDLEMOV CX, LENGTHLEA DX, BUFINT 21HJC ERRORMOV AL,1JMP EXIT ERROR:PUTS 10,10,MSG5MOV AL,0 EXIT:NOPENDM2. 新建filec.asm、filew.asm、filer.asm,分别按照实验步骤中的要求输入相应的代码:filec.asm:filew.asm:filer.asm:filec.asm文件源码:INCLUDE FILEFUC.MACPURGE OPENFILE,WRITEFILE,READFILESTACKSG SEGMENT STACK S DW 64 DUP(?)STACKSG ENDSDATA SEGMENT MSG0 DB CREATE FILE OK!,$ MSG4 DB CLOSE FILE ERROR!,$ MSG6 DB CREATE FILE ERROR!,$ FILEHANDLE DW 0 ;文件句柄 NAME1 DB D:ASSEMBLYFDATA.DAT,0 ;以0结尾的需创建的文件说明 DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSGMAIN PROC FAR LOADDS DATA ;给DS赋值 CLRSCR ;清屏 NEWFILE NAME1,MSG6 ;创建文件 PUTS 10,10,MSG0 ;在指定位置显示信息 CLOSEFILE MSG4 ;关闭文件 RETURN ;返回DOSMAIN ENDPCODE ENDSEND MAINfilew.asm文件源码:INCLUDE FILEFUC.MACPURGE NEWFILE,READFILESTACKSG SEGMENT STACK S DW 64 DUP(?)STACKSG ENDSDATA SEGMENT MSG0 DB WRITE FILE OK!,$ MSG2 DB OPEN FILE ERROR!,$ MSG4 DB CLOSE FILE ERROR!,$ MSG5 DB WRITE FILE ERROR!,$ BUFFER DB WRITE DEMO!,0DH,0AH CT EQU $-BUFFER FILEHANDLE DW 0 NAME1 DB D:ASSEMBLYFDATA.DAT,0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSGMAIN PROC FAR LOADDS DATA CLRSCR OPENFILE NAME1,MSG2 ;打开文件 WRITEFILE CT,BUFFER,MSG5 ;写文件 PUTS 10,10,MSG0 CLOSEFILE MSG4 RETURNMAIN ENDPCODE ENDS END MAINfiler.asm文件源码:INCLUDE FILEFUC.MACPURGE NEWFILE,WRITEFILESTACKSG SEGMENT STACK SDW 64 DUP(?)STACKSG ENDSDATA SEGMENT MSG0 DB READ FILE OK!,$ MSG2 DB OPEN FILE ERROR!,$ MSG3 DB READ FILE ERROR!,$ MSG4 DB CLOSE FILE ERROR!,$ BUFFER DB 13 DUP(R),$ CT EQU $-BUFFER FILEHANDLE DW 0 NAME1 DB D:ASSEMBLYFDATA.DAT,0 DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSGMAIN PROC FAR LOADDS DATA CLRSCR OPENFILE NAME1,MSG2 PUTS 10,10,BUFFER READFILE CT,BUFFER,MSG3 ;读文件 PUTS 12,10,BUFFER ;显示从D:ASSEMBLYFDATA.DAT中读出的信息 PUTS 14,10,MSG0 CLOSEFILE MSG4 RETURNMAIN ENDPCODE ENDS END MAIN3. 汇编以上三个源程序(filec.asm、filew.asm、filer.asm):filec.asm:filew.asm:filer.asm:4. 连接生成可执行文件(filec.obj、filew.obj、filer.obj):filec.obj:filew.obj:filer.obj:5. 调试程序:建立文件(filec.exe):(1)首先反汇编源代码,程序最开始将先调用LOADDS宏指令为DS段赋值:(2)从1550:0005处开始将调用CLRSCR宏指令进行清屏操作:(3)清屏后效果如下图,从1550:001B处开始将调用NEWFILE宏指令创建指定文件:(4)即将调用中断指令创建文件FDATA.DAT:(5)可以看到,如果创建成功,则从1550:0056处退出宏指令NEWFILE:(6)从1550:0057处开始将调用PUTS宏指令,输出字符串:(7)可以看到在指定位置输出了字符串“CREATE FILE OK!”,表明文件创建成功:(8)从1550:0079处开始将调用CLOSEFILE宏指令,关闭文件:(9)文件关闭后,从1550:00AD处开始将调用RETURN宏指令,返回DOS:(10)程序完成,退出:(11)在命令提示符下直接运行filec.exe效果如下:(12)程序已经在指定目录下创建了FDATA.DAT文件:写文件(filew.exe):(1)程序开始时,从1552:0005处开始将调用CLRSCR宏指令进行清屏操作:(2)清屏后效果如下图,将从1552:001B处开始将调用OPENFILE宏指令打开指定文件:(3)即将调用中断指令打开文件FDATA.DAT:(4)可以看到,如果打开成功,则从1552:0053处退出宏指令OPENFILE:(5)从1552:0054处开始将调用WRITEFILE宏指令将指定内容写入文件:(6)当写文件成功后,将从1552:008E处退出WRITEFILE宏指令:(7)写文件完成后,则从1552:008F处开始调用PUTS宏指令显示指定字符串:(8)可以看到在指定位置输出了字符串“WRITE FILE OK!”,表明写文件操作成功:(9)从1552:00B1处开始将调用CLOSEFILE宏指令,关闭文件:(10)文件关闭后,从1552:00E5处开始将调用RETURN宏指令,返回DOS:(11)程序完成,退出:(12)在命令提示符下直接运行filew.exe效果如下:(13)程序已经在指定文件FDATA.DAT中写入了指定的内容:读文件(filer.exe):(1)程序开始时,从1552:0005处开始将调用CLRSCR宏指令进行清屏操作:(2)清屏后效果如下图,将从1552:001B处开始将调用OPENFILE宏指令打开指定文件:(3)从1552:0053处退出OPENFILE宏指令,并准备调用PUTS宏指令输出当前缓冲区中的内容:(4)可以看到,输出的当前缓冲区中的内容为RRRRRRRRRRRRR:(5)从

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论