资源描述:
《6_DOS系统功能调用及BIOS调用实验》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、2.6DOS系统功能调用及BIOS调用实验2.6.1实验目的1、熟悉PC机中断系统的有关概念,了解中断向量表的作用。2、掌握常用DOS系统功能调用的方法。3、掌握BIOS屮常用设备(如显示器、打印机等)驱动程序的调用方法。262实验预习要求1、复习常用DOS系统功能调用方法。2、复习BIOS调用方法。3、读懂“2.6.4实验内容”中给出的源程序,以便上机调试。4、从“2.6.5实验习题”屮任选一道题目,编写源程序,以便上机调试。263中断系统、DOS系统功能调用及BIOS调用简介微型计算机系统为汇编用户提
2、供了两个程序接口,一个是DOS系统功能调用,另一个是ROM中的BIOS(basicinput/outputsystem)0系统功能调用和BIOS由一系列的中断服务程序构成,它们使得程序设计人员不必详细了解硬件的内部结构和工作原理,直接调用这些中断服务程序就可以使用系统的硬件,尤其是I/O设备的使用与管理。如下表所示,IBMPC小断系统为了识别和响应每一种屮断,将它们赋以00〜FFH中断类型号,故中断系统能处理256种中断。每种类型的中断都对应一个中断服务程序,每个中断服务程序的入口地址包括该程序所在段的段
3、地址和段内偏移地址,需4个存储单元來存放。将256种中断对应的中断服务程序排成一张表,放在内存底端00000H〜003FFH单元中,系统在响应中断时根据得到的中断类型号到该表对应的四个存储单元屮即可找到要执行的屮断服务程序的入口地址。PC机中断向戢表H匕匕AMn功N匕匕功系统内部中断BIOSOOH设备驱动BIOSH8111H01H9•102HH1AH03HBH04出溢1CH05H幕屏卬打HDn06H1EHH071FH8级外部中断BIOSOSH钟时口磁盘操作系统DOSH2009HH21HAo留保H22OBH
4、H32OCH11信口hpH24HDoH52HEoH62OFH机印打H27设备驱动BIOSIOH二、一可显特殊■!'断护保统系H置□LKn备设12H13H14HH516H7H从功能上分,屮断向量表屮屮断类型可分为三类:1、磁盘操作系统DOS提供的中断服务程序,中断类型号从20H到2FHO其中类型号为21H的DOS系统功能调用使用较多,如前面实验中用到的单个字符输入、单个字符显示、字符串显示、字符串输入等操作就是通过调用DOS系统功能(中断类型号为21H,功能号(调用号)分别为01H、02H、09H、0AH)
5、來实现的。有关DOS系统功能调用(INT21H)中各功能号对应的功能列表见附录A。2、系统主板BIOS芯片提供的BIOS屮断服务程序,包括系统内部屮断,屮断类型号从00H到07H;系统8级外部中断,中断类型号从08H到0FH;设备驱动程序,中断类型号从10H到1FH等。3、用户定义的中断,中断类型号从60H到7FH、F1H到FFH。用户可根据实际需要编写自己的中断服务程序,并将该服务程序的入口地址写入中断向量表中相应的存储单元,以便对它们进行调用。有关中断服务程序的编写与调用方法将在“2.7中断服务程序设
6、计实验”中介绍。需要说明的是,许多功能既可以通过DOS系统功能调用实现,也可以通过BIOS调用实现,实际使用时应根据具体情况选择使用,一般原则为:能通过DOS系统功能调用实现的功能不使用BIOS调用实现。有关详细介绍请参阅教材“5.5.6常用系统功能调用和BIOS中断调用”一节。2.6.4实验内容制作电子时钟,在屏幕上实时显示系统当前时间。程序运行结果如下图所示。要求:①屏幕显示方式设置为80x25黑白文本方式(使用BIOS中断调用,中断类型号为10H,功能号为OOH,(AL)=2);②在开始显示实时时钟
7、和结束之前清屏(使用BIOS中断调用,中断类型号为10H,功能号为06H,(AL)二0);③按任意键退出程序的执行(使用DOS系统功能调用,中断类型号为21H,功能号为0BH,当返回值(AL)=FFH时有键按下,当(AL)=00H时无键按下);1、编程指导(1)屏幕显示方式设置宏指令SETCRTSETCRTMACROMOVAH,0MOVAL,2INT10HENDM:功能号为0;将屏幕设置为80x25黑白文本方式(2)清屏宏指令CLEARCLEARMACROMOVAH,06H;功能号为6MOVAL,0;晴窗
8、口INT10HENDM(3)光标位置设置宏指令CURSORMACROROW,CLMMOVAH,02H;功能号为2(n光标位置)MOVBH,OOH;页号(文本方式时为0)MOVDH,ROW;行号送DHMOVDL,CLM;列号送DLINT10HENDM(4)按任意键退出程序指令MOVAH,OBH:功能号为OBH(检测键盘状态)INT21hCMPAL,OOH;(AL)为0时无键按下JNZEXITT;有键按下时退出JMPLOOPR;无