DOS与BIOS中断及程序设计.ppt
《DOS与BIOS中断及程序设计.ppt》由会员分享,可在线阅读,更多相关《DOS与BIOS中断及程序设计.ppt(68页珍藏版)》请在三一办公上搜索。
1、第七章 DOS与BIOS中断及程序设计,本章讲述DOS与BIOS中断功能调用,这些都是系统提供给汇编语言程序员的现成资源,几乎每个DOS程序都要用到这些资源。本章中要求掌握DOS 功能调用的概念、调用方法及基本的功能调用,熟悉磁盘文件读写的操作过程。,7.1 DOS中断与系统功能调用 7.2 BIOS功能调用,7.1 DOS中断与系统功能调用,7.1.1 DOS中断 7.1.2 DOS系统功能调用 7.1.3 磁盘文件管理,返回本章首页,7.1.1 DOS中断,DOS除了给用户提供了命令行服务以外,还为汇编语言程序员提供了大量的子程序,这些子程序包含了从基本输入输出到内存管理、磁盘读写、文件系
2、统等各个方面,使用这些子程序,使得汇编语言程序员不必搞清大量的设备接口、数据结构等细节,即可完成所需功能,从而极大简化了汇编语言的编程。由于DOS提供的这些子程序被看作是DOS系统功能的一部分,因而人们把对这些子程序的调用又称为DOS功能调用。每个汇编语言程序员必须熟悉一些最常用的DOS功能调用,否则很难编写出有实用价值的程序。,DOS提供的这些子程序位于DOS的基本系统文件IBMBIO.COM和IBMDOS.COM中,随着DOS的加载而进入内存,即只要能启动DOS就可以使用。DOS的这些子程序是以中断的方式向系统及应用程序提供服务的,故必须用内中断指令INT进行调用,而不是用传统的CALL指
3、令。DOS提供的中断服务如表7-1所示:,表7-1 DOS中断功能表,在DOS发展过程中,中断号的分配显得有些混乱,最初的时候DOS提供的功能很少,而且也为了与以前流行的操作系统CP/M在中断号方面保持兼容,所以占用了上表所示的中断号。但后来随着DOS的发展,所提供的功能(子程序)越来越多,不可能每一个子程序都占用一个中断号,于是想出了让它们共用一个中断号,即21H号的办法,进入这一个中断后,DOS再根据用户程序中入口参数的设置来确定用户程序到底想调用哪一个子功能。这样,实际上DOS所有的功能都可通过21H中断调用来实现。早期版本中独占一个中断号的旧功能为兼容缘故并没有被撤销,而是保留了下来,
4、这样就形成了有些功能既可以通过调用21H号中断来实现,又可以通过调用别的中断实现,如:终止程序功能,调用20H号中断与调用21H号中断之00H号子功能,效果完全相同。,一般情况下,将调用21H号以外的DOS中断,称为DOS中断调用。而将调用21H号中断的各个子功能,称为DOS功能调用。事实上DOS功能调用也是一个DOS中断调用,并且有时也不太区分二者的差别。,返回本章首页,返回本节首页,进入下一节,7.1.2 DOS系统功能调用,本节中介绍DOS功能调用的方法及常用的DOS I/O功能调用。DOS最核心的功能调用文件操作功能调用将在下节中介绍。1.DOS功能调用的方法 调用DOS功能调用需要进
5、行如下三项工作:调置入口参数,如果所调用的子程序不需参数,则可省略此步。欲调用的子程序编号AH。发中断调用指令INT 21H。,2.DOS基本I/O功能调用(1)键盘输入(1号调用),功能:此调用扫描键盘,若有键按下,先检查是否是Ctrl-Break键,若是,则退出命令执行并调用DOS的Ctrl-Break处理程序;若否,则将字符ASCII码设置到AL中,同时在屏幕上显示这个字符,然后返回。若无键按下,该调用等待直到有键按下为止。,调用示例:MOVAH,1INT21H,入口参数:无出口参数:所读取的字符ASCII码在AL内。,(2)键盘输入(8号调用)同1号类似,但是不在屏幕上显示输入的字符,
6、在读取密码时常用本功能。,调用示例:MOV DL,AMOVAH,2INT21H,(3)键盘输入(7号调用)同8号类似,并且不特殊检查Ctrl-Break键(当作普通字符)。,(4)在屏幕上显示一个字符(2号),入口参数:DL=待显示字符的ASCII码出口参数:无,功能:将字符显示在屏幕上。但如果字符是控制符,则实际执行相应的功能,如:在屏幕上显示一个换行符(0AH),实际上将光标转到下一行上去。,(5)显示或读取字符(6号调用)此功能调用既可显示字符也可接收字符,这取决于入口参数中DL的设置,若DL=FFH,表示从键盘读取字符;若DLFFH,表示显示字符。具体为:,显示字符:,入口参数:DL=
7、待显示字符的ASCII码(但不能为FFH)出口参数:无,功能:将字符显示在屏幕上。但如果字符是控制符,则实际执行相应的功能。,调用示例:MOVDL,$MOVAH,6INT21H,读取字符:,入口参数:DL=FFH出口参数:若读到字符,ZF=0,AL=键入字符的ASCII码。若未读到字符,ZF=1。,功能:从键盘读取字符,但不等待按键,即不论有无键按下都立即返回,并且也不特殊检查Ctrl-Break键。当要求用户必须立即做出反应时可用此调用读取键盘,如在游戏程序中。,调用示例:在本示例中,通过一个循环来实现等待读取一个字符。L1:MOVAH,6MOVDL,0FFHINT21HJZL1,(6)打印
8、一个字符(5号),入口参数:DL=待打印字符的ASCII码出口参数:无,功能:在打印机上打印字符,若打印机出现错误,则在屏幕上显示相应错误信息。,(7)字符串显示(9号),入口参数:DS:DX指向待显示字符串,且字符串必须以“$”作为结束符出口参数:无,功能:结束符之前的字符都被显示在屏幕上。,调用示例:DATASEGMENTBUFDBTHIS ISA TEST!$DATAENDSCODESEGMENTSTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSET BUFMOVAH,9INT21HMOVAH,4CHINT21HCODEENDSENDSTART,(8)字符串输入(10号
9、),入口参数:DS:DX指向输入缓冲区。输入缓冲区必须由用户在调用前准备好,且具有如下格式:第一个字节必须放一非0数据,该数值指明准备接收的最大字符数,这个字符数包括用户在结束时必须输入的回车符,如果键入的字符数达到了此数减一,那么系统将不再接收字符(按键时会发出“嘟嘟”声,而且光标不再向右移动),直到用户按回车为止。第二个字节保留,由DOS在功能调用结束后填入实际输入的字符个数(这个数并不包括最后的回车符)。用户输入的字符串从第三个单元开始存放。出口参数:用户实际输入字符个数在缓冲区第二个单元中。,调用示例:DATASEGMENTBUFDB8;指明最大字符数DB?;保留,供DOS填入实际字符
10、数DB8 DUP(0);用户输入的字符存放区DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSET BUFMOVAH,10INT21H;其它操作MOVAH,4CHINT21HCODEENDSENDSTART,例7-1:字符串的输入输出 编一程序先提示用户输入一个字符串,然后读取用户的输入,并将用户输入的数据在下行输出。程序如下:DATASEGMENTMESSAGE DB“PLEASEINPUT A STRING:$”;定义输入提示BUF DB 255,?,255 DUP(0);用户输入缓冲区,可
11、接收255个字符DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART:MOVAX,DATA MOVDS,AXMOVDX,OFFSET MESSAGEMOVAH,9INT21H;显示输入提示信息,MOVDX,OFFSETBUFMOVAH,10INT21H;接收用户输入MOVAH,2MOVDL,0AH;0AH为换行符ASCII码INT21H;屏幕换行MOVBL,BUF+1;用户实际输入字符数BLMOVBH,0;使BX=用户实际输入字符数MOVBYTEPTRBUF+2BX,$;在字符结束处放置一个“$”MOVDX,OFFSETBUF+2;用户实际输入字符起始处
12、DXMOVAH,9INT21H;显示用户输入的字符MOVAH,4CHINT21HCODEENDSENDSTART,返回本节首页,返回本章首页,进入下一节,磁盘文件管理,磁盘文件的管理是DOS的主要功能之一,为此DOS提供了二组相关的功能调用,一组是DOS1.0版时提出的,使用文件控制块FCB管理文件,这种办法相当麻烦而且功能又弱(如不支持目录结构),因而早已被淘汰;另一组是DOS2.0版时提出的,使用文件句柄来管理文件,我们主要介绍这组功能调用。,1.文件名 要访问一个文件,必须先指定文件名。DOS要求用ASCIIZ串来描述文件名,即一个ASCII码字符串,后面跟一个全0字节为结束符。例如:F
13、ILENAME DB“C:DOSWWW.TXT”,0 文件名中可以包含绝对路径或相对路径,但总长度不能多于63个字符。,2.文件属性 很多操作都涉及文件属性,文件属性用一个字节描述,各位含义如下:,常用文件属性值为:00一普通文件。01一只读文件,该文件不能为写而打开。02 一隐含文件,用DIR查不到该文件。03 一系统文件,用DIR查不到该文件。04一软盘的卷标号。10一子目录。20一已写入并关闭了文件(硬盘用)。一个文件可以同时具有几种属性,也就是说可以把字节中的几位同时置1,如IBMBIO.COM和IBMDOS.COM文件既是只读文件,又是隐含文件和系统文件。,3.错误返回码 文件操作的
14、功能调用返回时,以标志寄存器的CF位指示调用是否成功,若调用失败,CF=1,AX内为错误返回码,这些错误返回码都取自一个统一的信息表,如表7-2所示。,表7-2 文件操作的错误返回码,4.常用的文件管理功能调用(1)DOS的文件管理功能 DOS提供的文件管理功能非常丰富,如表7-3所示。,(2)使用方法 使用文件代码法的基本过程是:在读写文件前,必须先打开或创建文件,成功后,DOS返回一个文件代号(file handle,或称文件句柄),这个文件代号是一个16位二进制数,以后对该文件进行读写操作时,就用这个文件代号去代表相应的文件。当读写完了后,最后必须关闭文件,否则DOS暂存在其内部文件缓冲
15、区的信息没有真正写到磁盘上。另外,操作时还必须注意文件属性,如果以只读属性打开,则不能向其写;如果以只写属性打开,则不能对其读。同时打开的文件不能太多,因为DOS可能没有足够空间为每个打开的文件准备缓冲区,这个数据取决于config.sys文件中files=nnn一行的设置数。缺省情况下最多可同时打开8个文件。,(3)关于文件指针的说明 利用文件代号存取文件是以字节为存取单位的,一个文件被看作由许多字节组成,尽管每次读写的字节数可任意指定,但一般还是为输入输出缓冲区的大小所限制,所以一个比较大的文件总是要分几次读写。对每个打开的文件,DOS都为其保存了一个读写指针(readwrite poin
16、ter),它指示文件的操作位置,每次读写后会自动调整并指向新位置,但有时我们想从文件的中间开始读写而不是从头读写,或者是不作连续读写,这就需要移动这个指针。为此,DOS提供了移动文件指针功能调用(42H号),该功能调用具体情况如下:,入口参数要求在 BX中指定文件代号,由CX和DX指定一个双字长的偏移值,低位字在DX中,高位字在CX中,这个偏移值是一个带符号的整数,它可以是正数,也可以是负数;由AL中的代码确定改变指针的三种方式。每种方式的含义如下:,绝对移动方式(AL=0):偏移值从文件首开始计算。例如偏移值是582,则读写指针指向文件的第582字节。为了使指针指向文件首,可以在CX,DX,
17、AL中都送入0,那么随后的读写就从文件首开始。,相对移动方式(AL=1):当前的指针值加上偏移值作为新的指针值,也就是说,偏移值指出了从当前的读写位置起移动的字节数。根据偏移值的正负可正向或反向移动指针。,绝对倒移方式(AL=2):新的指针位置通过把偏移值和文件尾的位置相加而确定。如果文件的总长度是32字节,那么在AL中送入2,DX中送入-32,CX中送入OFFFFH(符号扩展到高位字),则读写指针指向文件的第一个字节。如果CX和DX为0,AL为2,则指针将指向文件尾,此时指针的值即是文件长度。,移动文件指针功能可能出现的错误码是01和06,错误码01说明AL中的方式值是不合法的,错误码06说
18、明BX中的文件代号不合法。如果指针移动成功,AX和DX将是移动后的指针值,AX中是低位字,DX是高位字(调用之前,DX是偏移值的低位字,CX是偏移值的高位字)。方式1和偏移值0能找出指针的当前值。方式2和偏移值0能找出文件的长度。如果要在一个已存在的文件后面添加记录,则在写之前把指针指向文件尾:关于磁盘文件读写操作的具体实例本章实训三。,返回本节首页,返回本章首页,进入下一节,7.2 BIOS中断功能调用,7.2.1 BIOS中断7.2.2 常用BIOS功能调用举例7.2.3 图形显示程序设计,7.2.1 BIOS中断 PC机1M内存空间中最高端(最大地址空间处)是系统ROM区,安装在此区中的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DOS BIOS 中断 程序设计
链接地址:https://www.31ppt.com/p-6504693.html