资源描述:
《BIOS和DOS中断》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、昆明理工大学信息工程与自动化学院学生实验报告(2011—2012学年第1学期)课程名称:汇编语言程序设计开课实验室:信自楼4452011年12月20日年级、专业、班计科092学号200910405236姓名成绩实验项目名称BIOS和DOS中断指导教师万小容教师评语教师签名:年月日一、实验目的及内容1)掌握BIOS和DOS中断的基本原理;2)了解DOS的文件管理功能;3)编程实现基本的文件管理功能;4)观察并记录运行结果。二、实验原理1、BIOS和DOS中断的基本原理(1)DOS中断就是来自CPU芯片内部的中断,如图
2、1.1虚框内所示。DOS中断完全受程序控制,它是由CPU的状态改变或者执行中断指令而产生的,它们的中断类型号或者是已经包含在指令中,或者是已经由CPU规定好。具体可以分为以下几种:①INTn指令②溢出中断指令INTO③除法错中断④单步中断⑤断点中断(2)BIOS中断是来自于CPU外部的中断,它是以完全随机的方式产生的。BIOS中断可以分为不可屏蔽中断(NMI)和可屏蔽中断(INTR)。8259A的主要功能:①判断来自外设的中断请求输入信号IR是否有效。②决定提出中断请求设备中的哪一个优先级最高。③当CPU认可INT
3、线上的中断请求信号时,8259A应将获得优先权的IRi所对应的中断类型号送到数据总线上。0n8259A可编程中断控制器中断逻辑INTR2NMI41CPU图1.18086/8088中断源不可屏蔽中断请求INTnINTO除法错单步IR0IR1IR3IR4IR5IR6IR7IR2系统定时器(08)键盘(09)彩色/图形接口(0A)串行通讯口2(0B)串行通讯口1(0C)硬盘(并行口)(0D)软盘(0E)打印机(0F)1、实模式中断处理过程通常CPU在执行完每条指令后均要检测是否有中断请求,在有中断请求且满足一定条件时就响
4、应中断,这个过程见图2.1所示。图2.1实模式中断处理过程1、利用文件句柄存取文件过程(1)建立文件程序1在f盘的yhf子目录下创建一个数据文件fdata.dat,为以后的读写使用。若创建成功,则显示“Createfileok!”,然后关闭该文件,返回DOS。在创建及关闭fdata.dat文件时若遇到错误,则显示相关的错误提示信息。(2)写文件程序2实现写文件功能。它首先打开f:yhffdata.dat文件(由程序1创建);接着在该文件中写入信息“Writedemo!”;然后关闭它;最后返回DOS。若写入成功
5、,则显示“Writefileok!”。在对fdata.dat文件操作时若遇到错误,则显示相关的错误提示信息。(3)读文件程序3实现读文件并显示其内容的功能。它首先打开开f:yhffdata.dat文件(由程序1创建);接着在该文件中读出信息(该信息应是由程序2写入的Writedemo!);然后关闭fdata.dat文件;最后返回DOS。若读取成功,则显示“Readfileok!”。在对fdata.dat文件操作时若遇到错误,则显示相关的错误提示信息。为了验证其读取的正确性,在读文件的前后均调用了puts宏指令显
6、示buffer中的信息,若程序运行正确,两次显示的信息应不相同其流程图见图3.1所示。图3.1一、实验仪器PC机一台二、源程序代码1、创建文件includefilefuc.macpurgeopenfile,writefile,readfiledatasegmentmsg0db'Createfileok!$'msg4db'Closefileerror!','$'msg6db'Createfileerror!','$'filehandledw0;文件句柄name1db'f:yhffdata.dat',0;以0结尾的
7、需创建的文件说明dataendscodesegmentmainprocfarassumecs:code,ds:dataLoadDsdata;给DS赋值clrscr;清屏newfilename1,msg6;创建文件puts10,10,msg0;在指定位置显示信息closefilemsg4;关闭文件return;返回DOSmainendpcodeendsendmain2、写文件includefilefuc.macpurgenewfile,readfiledatasegmentmsg0db'Writefileok!$'m
8、sg2db'Openfileerror!','$'msg4db'Closefileerror!','$'msg5db'Writefileerror!','$'bufferdb'Writedemo!',0dh,0ahctequ$-bufferfilehandledw0name1db'f:yhffdata.dat',0dataendscodesegmentm