ImageVerifierCode 换一换
格式:PPT , 页数:40 ,大小:463KB ,
资源ID:14026405      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/14026405.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(第9章 BIOS和DOS调用.ppt)为本站上传会员【xrp****65】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

第9章 BIOS和DOS调用.ppt

1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第十三章 文 件,*,2026/6/9 周二,1,第九章,BIOS,和,DOS,调用,BIOS,和,DOS,概述,中断及中断向量表,BIOS,调用,DOS,调用,BIOS,和,DOS,系统调用函数,2026/6/9 周二,2,第一节,BIOS,和,DOS,概述,BIOS,(,Basic Input Output System,),:,BIOS,是固化在,ROM,中的若干程序,内容:,系统启动自举程序,开机自检程序,系统信息设置,基本输入输出程序,(程序集),作用:是进行,系统测试、初始化引导程序、对,I/

2、O,设备进行控制,的,程序集,2026/6/9 周二,3,第一节,BIOS,和,DOS,概述,DOS,(,Disk Operating System,),:,内容,(,主要模块,),:,IO.SYS,(通过,BIOS,控制、管理硬件),MSDOS.SYS,(管理磁盘和文件),COMMAND.COM,(处理内外部命令),作用:,DOS,是,控制和管理计算机的硬件资源、方便用户使用,的,程序集,2026/6/9 周二,4,用程序控制,PC,硬件的方法:,应用高级语言中的语句进行控制,(,语句少,速度慢,),汇编语言编程进行控制,(要求了解硬件),。,应用,BIOS,提供的功能程序来控制硬件,,即,

3、BIOS,调用,,要求编程者对硬件有相当深入的了解。,优点:,BIOS,调用速度快,另外,,BIOS,固化在,ROM,中,不依赖于,DOS,操作系统,。缺点:,使用,BIOS,调用的汇编语言或,C,语言程序可移植性比较差。,应用,DOS,提供的一些功能服务程序来控制,,即,DOS,调用,,可对显示器、键盘、打印机、串行通信等字符设备提供输入输出服务。,DOS,提供了近百种,I/O,功能服务程序可供调用,编程者无需对硬件有太深的了解。使用,DOS,调用,编程简单,调试方便,可移植性好,,但速度较慢。,2026/6/9 周二,5,第二节 中断和中断向量表,概念:,中断、中断返回、中断源、中断的优先

4、级、中断挂起、中断屏蔽,中断的分类:,硬中断:外部设备引起的,软中断:中断指令引起的,中断号:每个中断都有一个编号,称作中断号,2026/6/9 周二,6,第二节 中断和中断向量表,中断向量:,每个中断都对应着一段程序,该程序的入口地址称为中断向量,中断向量,包括段基址和,偏移量,,占据,4,字节空间,低位的两个字节存储偏移地址,高位的两个字节存储段基址,2026/6/9 周二,7,第二节 中断和中断向量表,中断向量表:,中断向量表是指中断服务程序的入口地址表,占据系统内存中最低端,1K,(,00000H003FFH,)字节的空间,它的作用是按中断类型号从小到大的顺序存储对应的中断向量,总共存

5、储,256,(,00HFFH,)个中断向量。,在中断响应过程中,,CPU,通过从接口电路获取的中断类型号(中断向量号)计算对应的中断向量在表中的位置,并从中断向量表中获取中断向量(中断服务程序的入口地址),然后将程序流程转向中断服务程序。,2026/6/9 周二,8,第二节 中断和中断向量表,常用的中断号及功能(表,9-1,),系统硬件中断号:,00H0FH,、,70H77H,视频,BIOS,的中断号:,10H,其他,BIOS,的中断号:,11H1FH,DOS,中断号:,20H2FH,(,其中,21H,为,DOS,系统服务功能调用),2026/6/9 周二,9,第三节,BIOS,调用,BIOS

6、调用是通过软件中断来实现的。在中断调用前需要把功能号装入,AH,寄存器,把子功能号装入,AL,寄存器,,另,外,通常还需在,CPU,寄存器中提供专门的调用参数。步骤,如下,:,(,1,)把调用参数装入指定的寄存器中;,(,2,)如需功能号,把它装入,AH,;,(,3,)如需子功能号,把它装入,AL,或,BL,;,(,4,)按中断号调用,BIOS,中断;,(,5,)检查返回参数是否正确。,2026/6/9 周二,10,第三节,BIOS,调用,例如:将显示方式置为,640,*,480,分辨率,16,色。,相应的汇编语言代码应是:,MOV AH,0,;设置视频方式的功能号,是,0,,,送入,AH,

7、MOV AL,12H,;,12H,对应的显示方式是,640*480,,,16,色,INT 10H,;,进行视频,BIOS,调用,对应的,C,语言代码是:,_AH=0;,_AL=0 x12;,geninterrupt(0 x10);,geninterrupt(),是,dos.h,中定义的一个函数,用来产生一个软中断,原型是:,void geninterrupt(int intr_num);,2026/6/9 周二,11,第三节,BIOS,调用,有些,BIOS,调用有出口参数,例如:,读取当前光标处字符,(,示例:,9_1.c,),char c;,_AH=8;,/,视频,8,号,功能是读取字符,_

8、BH=0;,/,显示页号,geninterrupt(0 x10);,c=_AL;,/,中断后,,AL,中存,储所读,字符,printf(“%cn”,c);,2026/6/9 周二,12,第三节,BIOS,调用,例,9.1,:从键盘读入一个字符(无回显),键盘,I/O,中断调用号是,16H,,该调用有三个常用功能,功能号分别是,0,1,2,。使用时必须将功能号放在,AH,中。,入口参数:,AH,存储,功能号,:,0,:从键盘读取字符,1,:读键盘状态,2,:读键盘标志,出口参数,:,AH=,扫描码,,AL=ASCII,码,。,2026/6/9 周二,13,第三节,BIOS,调用,C,程序代码是:

9、include,#include,int main(),char c;,_AH=0;,geninterrupt(0 x16);,c=_AL;,/,AL,存储字符的,ASCII,码,printf(“%cn”,c);,return 0;,2026/6/9 周二,14,第四节,DOS,调用,DOS,调用和,BIOS,调用的异同点:,P117,表,9-2,:部分,DOS,软中断的功能,附录,B,:,INT 21H,中断的功能、功能号,及,参数,DOS,系统功能调用的方法:,(,1,)入口参数送指定的寄存器或内存,(,2,)功能号送,AH,中,(,3,)执行,INT 21H,软中断指令,(,4,)检

10、查或存储出口参数,2026/6/9 周二,15,第四节,DOS,调用,例,9.2 1,号功能调用(键盘输入字符,有回显),功能:对按下的任何键,都将其对应字符的,ASCII,码送入,AL,中,并在屏幕上显示该字符。如果按下的是,Ctrl,Break,组合键,则终止程序执行。,入口参数,:无,出口参数,:输入的字符,在,AL,中。,说明:还有个,8,号功能调用,功能与,1,号调用类似,区别是输入的字符,无回显,,可用于输入密码。,2026/6/9 周二,16,第四节,DOS,调用,C,程序代码:,#include,#include,int main(),char c;,_AH=1;,/1,号功能

11、调用,geninterrupt(0 x21);,c=_AL;,/AL,中存储的是字符的,ASCII,码,printf(“%cn”,c);,return 0;,2026/6/9 周二,17,第四节,DOS,调用,练习:键盘读入一个密码存入数组(,8,号调用),#include,#include,int main(),char i=0,c,pw20=0;,do,_AH=8;,geninterrupt(0 x21);,pwi=_AL;/AL,中存储的是字符的,ASCII,码,while(pwi+!=r);/,回车符,不是换行,printf(“%sn”,pw);,return 0;,2026/6/9

12、周二,18,第四节,DOS,调用,例,9.3,:,2,号功能调用(屏幕显示一个字符),入口参数:,将,待显示,字符置入,DL,出口参数:无,#include,#include,int main(),_DL=A;,_AH=2;,geninterrupt(0 x21);,return 0;,2026/6/9 周二,19,第四节,DOS,调用,例,9.4,:,9,号功能调用,(,屏幕显示字符串,),入口参数:,待显示字符串须先放内存一数据区(,DS,段)中,且以,$,符号作为结束标志。,字符串首地址的段基址和偏移地址分别,置,入,DS,和,DX,。,出口参数:无,2026/6/9 周二,20,第四节

13、DOS,调用,程序代码:,#include,#include,int main(),char*p=”hello$”;,/,设小模式编译,,near,指针,_DX=(unsigned)p;,_AH=9;,geninterrupt(0 x21);,return 0,;,2026/6/9 周二,21,第四节,DOS,调用,练习:,9,号功能调用,(,屏幕显示字符串,,设在紧凑模式下编译,),char far*p=”hello$”;,int oldds=_DS;,_DS=FP_SEG(p);,_DX=FP_OFF(p);,_AH=9;,geninterrupt(0 x21);,_DS=oldds;,

14、2026/6/9 周二,22,第四节,DOS,调用,例,9.5,:,例,9.6,:,例,9.7,:,以上三例请参阅教材并运行程序,2026/6/9 周二,23,第五节,BIOS,和,DOS,系统调用函数,除了,geninterrupt(),函数外,下面几个函数可用于,BIOS,或,DOS,调用:,int86(),BIOS,、,DOS,调用均可,int86x(),BIOS,、,DOS,调用均可,intdos(),DOS,调用,intdosx,DOS,调用,intr(),BIOS,、,DOS,调用均可,2026/6/9 周二,24,一、,int86(),原型,:,int int86(int int

15、r_num,union,REGS,*inregs,union,REGS,*outregs);,第一个参数表示中断调用的类型号,相当于,INT n,中的,n,第二和第三个参数都是指针,指向共用体变量,前者用于指明“功能号和入口参数所存放的位置”,后者指明“出口参数所存放的位置”,函数返回值在,AX,中,int86(),进行,BIOS,或,DOS,功能调用时,段地址必须是固定的,(不能跨段使用),。,2026/6/9 周二,25,共用体类型,REGS,是在,dos.h,中定义的:,struct WORDREGS,unsigned int ax,bx,cx,dx,si,di,cflag,flags;

16、/,都是变量名,;,struct BYTEREGS,unsigned char al,ah,bl,bh,cl,ch,dl,dh;,/,都是变量名,;,union REGS,struct WORDREGS x;,struct BYTEREGS h;,;,一、,int86(),用来存储标志寄存器,_FLAGS,中的进位标志位,以验证成功或失败(,0,:成功,,1,:失败),2026/6/9 周二,26,一、,int86(),可以想象,函数的定义大体是:,int int86(int n,union,REGS,*in,union,REGS,*out);,_AX=in-x.ax,;,_BX=in-x.

17、bx;,_CX=in-x.cx;,_FLAGS=in-x.flags;,geninterrupt(n);,out-x.ax=_AX;,out-x.bx=_BX;,return _AX;,未必都执行,(,由,n,决定执行哪些),未必都执行,2026/6/9 周二,27,例,9.8,从键盘读入一个字符(同例,9.1,),键盘,I/O,中断调用号是,16H,,调用,0,号功能可读入字符。使用时必须将功能号放在,AH,中,出口参数是:,AH=,扫描码,,AL=ASCII,码。,主要代码:,char c;,union REGS inregs,outregs;,inregs.h.ah=0;,/,使用,0,

18、号功能,c=int86(0 x16,/,返回,AX,的值,printf(“%cn”,c);,此行也可以写成如下两行:,int86(0 x16,c=outregs.h.al;,一、,int86(),2026/6/9 周二,28,例,9.9,写,一个函数,可将光标定位到,(x,y),处,分析:这是视频,BIOS,调用中的,2,号功能调用,入口参数:功能号送,AH,,光标行、列号分别送,DH,和,DL,。,BH,为显示页号,,选,0,。,出口参数:无,void movetoxy(int x,int y),union REGS regs;,regs.h.ah=2;,regs.h.dh=y;,regs.

19、h.dl=x;,regs.h.bh=0;,int86(0 x10,int main(),clrscr();,putchar(A);,movetoxy(10,10);,putchar(B);,movetoxy(5,5);,putchar(C);,return 0;,一、,int86(),2026/6/9 周二,29,二、,int86x(),原型,:,int int86x()(,int intr_num,union,REGS,*inregs,union,REGS,*outregs,struct,SREGS,*segregs,);,前三个参数同,int86(),,第四个参数,是一个,SREGS,类型

20、指针,用来指明段地址,SREGS,类型定义如下:,struct SREGS,unsigned int es;,unsigned int cs;,unsigned int ss;,unsigned int ds;,;,2026/6/9 周二,30,二、,int86x(),int86x(),函数实际上只用到,ds,和,es,两个成员,执行前只需要将这两个新段值存入,ds,和,es,即可。,函数执行时,会自动保存寄存器,DS,和,ES,的原值,然后换为,ds,和,es,的值。待函数执行结束时,再自动恢复原值。,2026/6/9 周二,31,二、,int86x(),可以想象,函数的定义大体是:,int

21、 int86(int n,union,REGS,*in,union,REGS,*out,struct SREGS,*s,);,/,备份段地址,_AX=in-x.ax,;,_DS=s-ds;,_ES=s-es;,geninterrupt(n);,out-x.ax=_AX;,out-x.bx=_BX;,/,恢复段地址,return _AX;,未必都执行,未必都执行,2026/6/9 周二,32,二、,int86x(),例,9.10,键盘输入一个文件名(含路径),查看其属性(设需要改变段值),分析:,本例使用的是,DOS,功能调用,功能号,43H,入口参数是:,AL=0,出口参数:,若成功,文件属性

22、保存在,CL,中,说明:,文件属性是一个字节,每位的含义如下:,位,0,:是否只读,位,1,:是否隐含,位,2,:是否系统文件,位,3,:卷标,位,4,:子目录,位,5,:更改标志,位,6,:,0,位,7,:,0,当所有位都是,0,时,表示可读可写。,2026/6/9 周二,33,二、,int86x(),#include,int main(),char filename80;,union REGS inregs,outregs;,struct SREGS segregs;,printf(Enter filename:);,gets(filename);,/,可含盘符、路径,不要打两条,(,键盘

23、输入,),inregs.h.ah=0 x43;,inregs.h.al=0;,inregs.x.dx=FP_OFF(filename);,segregs.ds=FP_SEG(filename);,int86x(0 x21,printf(File attribute:%Xn,outregs.h.cl);,return 0;,2026/6/9 周二,34,三、,intdos(),原型,:,int intdos(union,REGS,*inregs,union,REGS,*outregs);,该函数用于,DOS,系统功能调用(,INT 21H,),第一个,是,入口参数,,,表示相应的功能号,第二个参

24、数是出口参数。,函数调用后若,cflag,为,0,表示调用成功,返回值在,outregs,的,ax,中,若,cflag,为,1,表示调用出错,,ax,中为错误代码。,2026/6/9 周二,35,三、,intdos(),例,9.11,键盘输入一个文件名(含路径),删除该文件。(设不需要改变段值),分析:,DOS,调用的,41H,功能为删除文件。,该功能要求调用前将文件名的段地址和偏移地址分别送,入,DS,和,DX,。,本例中,DS,不改变段值,,故,只需送偏移地址。,int delete_file(char near*filename),union REGS regs;,int ret;,re

25、gs.h.ah=0 x41;,/,功能号,41H,,删除文件,regs.x.dx=(unsigned)filename;,/dx,置偏移地址,ret=intdos(,return(regs.x.cflag?ret:0);,2026/6/9 周二,36,四、,intdosx(),原型,:,int intdosx(union,REGS,*inregs,union,REGS,*outregs,struct,SREGS,*segregs);,说明:,该函数,与,intdos,的区别等同于,int86(),与,int86x(),的区别,只能用于,DOS,调用(跨段时),2026/6/9 周二,37,四、

26、intdosx(),例,9.12,键盘输入一个文件名(含路径),删除该文件。(设需要改变段值),int delete_file(char far*filename),union REGS regs;,struct SREGS sregs;,int ret;,regs.h.ah=0 x41;,regs.x.dx=FP_OFF(filename);,sregs.ds=FP_SEG(filename);,ret=intdosx(,return(regs.x.cflag?ret:0);,2026/6/9 周二,38,五、,intr(),原型,:,void intr(int int_num,struc

27、t,REGPACK,*preg);,struct,REGPACK,/dos.h,中定义,unsigned r_ax,r_bx,r_cx,r_dx;,unsigned r_bp,r_si,r_di,r_ds,r_es,r_flags;,;,说明:,该函数可用于,BIOS,或,DOS,调用,,,第一个参数是中断调用号,入口参数:,调用前入口参数应存到,preg,所指的结构体变量中,出口参数:存储在,preg,所指的变量,中,2026/6/9 周二,39,五、,intr(),例,9.13,从,键盘读入一个字符,(,例,9.8),改,用,intr(),实现,#include,int main(),char c;,struct,REGPACK,p;,p.r_ds=_DS;,p.r_es=_ES;,p.r_ax=0;,/AH,置,0,调用,0,号功能,intr(0 x16,c=p.r_ax;,/,出口参数在,p.r_ax,中,printf(“%cn”,c);,return 0;,2026/6/9 周二,40,编程实训,课后习题:,18,第,20,章:实例,1,实例,12,

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服