




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2020 2 14 1 第九章BIOS和DOS调用 BIOS和DOS概述中断及中断向量表BIOS调用DOS调用BIOS和DOS系统调用函数 2020 2 14 2 第一节BIOS和DOS概述 BIOS BasicInputOutputSystem BIOS是固化在ROM中的若干程序内容 系统启动自举程序开机自检程序系统信息设置基本输入输出程序 程序集 作用 是进行系统测试 初始化引导程序 对I O设备进行控制的程序集 2020 2 14 3 第一节BIOS和DOS概述 DOS DiskOperatingSystem 内容 主要模块 IO SYS 通过BIOS控制 管理硬件 MSDOS SYS 管理磁盘和文件 COMMAND COM 处理内外部命令 作用 DOS是控制和管理计算机的硬件资源 方便用户使用的程序集 2020 2 14 4 用程序控制PC硬件的方法 应用高级语言中的语句进行控制 语句少 速度慢 汇编语言编程进行控制 要求了解硬件 应用BIOS提供的功能程序来控制硬件 即BIOS调用 要求编程者对硬件有相当深入的了解 优点 BIOS调用速度快 另外 BIOS固化在ROM中 不依赖于DOS操作系统 缺点 使用BIOS调用的汇编语言或C语言程序可移植性比较差 应用DOS提供的一些功能服务程序来控制 即DOS调用 可对显示器 键盘 打印机 串行通信等字符设备提供输入输出服务 DOS提供了近百种I O功能服务程序可供调用 编程者无需对硬件有太深的了解 使用DOS调用 编程简单 调试方便 可移植性好 但速度较慢 2020 2 14 5 第二节中断和中断向量表 概念 中断 中断返回 中断源 中断的优先级 中断挂起 中断屏蔽中断的分类 硬中断 外部设备引起的软中断 中断指令引起的中断号 每个中断都有一个编号 称作中断号 2020 2 14 6 第二节中断和中断向量表 中断向量 每个中断都对应着一段程序 该程序的入口地址称为中断向量中断向量包括段基址和偏移量 占据4字节空间 低位的两个字节存储偏移地址 高位的两个字节存储段基址 2020 2 14 7 第二节中断和中断向量表 中断向量表 中断向量表是指中断服务程序的入口地址表 占据系统内存中最低端1K 00000H 003FFH 字节的空间 它的作用是按中断类型号从小到大的顺序存储对应的中断向量 总共存储256 00H FFH 个中断向量 在中断响应过程中 CPU通过从接口电路获取的中断类型号 中断向量号 计算对应的中断向量在表中的位置 并从中断向量表中获取中断向量 中断服务程序的入口地址 然后将程序流程转向中断服务程序 2020 2 14 8 第二节中断和中断向量表 常用的中断号及功能 表9 1 系统硬件中断号 00H 0FH 70H 77H视频BIOS的中断号 10H其他BIOS的中断号 11H 1FHDOS中断号 20H 2FH 其中21H为DOS系统服务功能调用 2020 2 14 9 第三节BIOS调用 BIOS调用是通过软件中断来实现的 在中断调用前需要把功能号装入AH寄存器 把子功能号装入AL寄存器 另外 通常还需在CPU寄存器中提供专门的调用参数 步骤如下 1 把调用参数装入指定的寄存器中 2 如需功能号 把它装入AH 3 如需子功能号 把它装入AL或BL 4 按中断号调用BIOS中断 5 检查返回参数是否正确 2020 2 14 10 第三节BIOS调用 例如 将显示方式置为640 480分辨率 16色 相应的汇编语言代码应是 MOVAH 0 设置视频方式的功能号是0 送入AHMOVAL 12H 12H对应的显示方式是640 480 16色INT10H 进行视频BIOS调用对应的C语言代码是 AH 0 AL 0 x12 geninterrupt 0 x10 geninterrupt 是dos h中定义的一个函数 用来产生一个软中断原型是 voidgeninterrupt intintr num 2020 2 14 11 第三节BIOS调用 有些BIOS调用有出口参数 例如 读取当前光标处字符 示例 9 1 c charc AH 8 视频8号功能是读取字符 BH 0 显示页号geninterrupt 0 x10 c AL 中断后 AL中存储所读字符printf c n c 2020 2 14 12 第三节BIOS调用 例9 1 从键盘读入一个字符 无回显 键盘I O中断调用号是16H 该调用有三个常用功能 功能号分别是0 1 2 使用时必须将功能号放在AH中 入口参数 AH存储功能号 0 从键盘读取字符1 读键盘状态2 读键盘标志出口参数 AH 扫描码 AL ASCII码 2020 2 14 13 第三节BIOS调用 C程序代码是 include includeintmain charc AH 0 geninterrupt 0 x16 c AL AL存储字符的ASCII码printf c n c return0 2020 2 14 14 第四节DOS调用 DOS调用和BIOS调用的异同点 P117表9 2 部分DOS软中断的功能附录B INT21H中断的功能 功能号及参数DOS系统功能调用的方法 1 入口参数送指定的寄存器或内存 2 功能号送AH中 3 执行INT21H软中断指令 4 检查或存储出口参数 2020 2 14 15 第四节DOS调用 例9 21号功能调用 键盘输入字符 有回显 功能 对按下的任何键 都将其对应字符的ASCII码送入AL中 并在屏幕上显示该字符 如果按下的是Ctrl Break组合键 则终止程序执行 入口参数 无出口参数 输入的字符在AL中 说明 还有个8号功能调用 功能与1号调用类似 区别是输入的字符无回显 可用于输入密码 2020 2 14 16 第四节DOS调用 C程序代码 include includeintmain charc AH 1 1号功能调用geninterrupt 0 x21 c AL AL中存储的是字符的ASCII码printf c n c return0 2020 2 14 17 第四节DOS调用 练习 键盘读入一个密码存入数组 8号调用 include includeintmain chari 0 c pw 20 0 do AH 8 geninterrupt 0 x21 pw i AL AL中存储的是字符的ASCII码 while pw i r 回车符 不是换行printf s n pw return0 2020 2 14 18 第四节DOS调用 例9 3 2号功能调用 屏幕显示一个字符 入口参数 将待显示字符置入DL出口参数 无 include includeintmain DL A AH 2 geninterrupt 0 x21 return0 2020 2 14 19 第四节DOS调用 例9 4 9号功能调用 屏幕显示字符串 入口参数 待显示字符串须先放内存一数据区 DS段 中 且以 符号作为结束标志 字符串首地址的段基址和偏移地址分别置入DS和DX 出口参数 无 2020 2 14 20 第四节DOS调用 程序代码 include includeintmain char p hello 设小模式编译 near指针 DX unsigned p AH 9 geninterrupt 0 x21 return0 2020 2 14 21 第四节DOS调用 练习 9号功能调用 屏幕显示字符串 设在紧凑模式下编译 charfar p hello intoldds DS DS FP SEG p DX FP OFF p AH 9 geninterrupt 0 x21 DS oldds 2020 2 14 22 第四节DOS调用 例9 5 例9 6 例9 7 以上三例请参阅教材并运行程序 2020 2 14 23 第五节BIOS和DOS系统调用函数 除了geninterrupt 函数外 下面几个函数可用于BIOS或DOS调用 int86 BIOS DOS调用均可int86x BIOS DOS调用均可intdos DOS调用intdosxDOS调用intr BIOS DOS调用均可 2020 2 14 24 一 int86 原型 intint86 intintr num unionREGS inregs unionREGS outregs 第一个参数表示中断调用的类型号 相当于INTn中的n第二和第三个参数都是指针 指向共用体变量 前者用于指明 功能号和入口参数所存放的位置 后者指明 出口参数所存放的位置 函数返回值在AX中int86 进行BIOS或DOS功能调用时 段地址必须是固定的 不能跨段使用 2020 2 14 25 共用体类型REGS是在dos h中定义的 structWORDREGS unsignedintax bx cx dx si di cflag flags 都是变量名 structBYTEREGS unsignedcharal ah bl bh cl ch dl dh 都是变量名 unionREGS structWORDREGSx structBYTEREGSh 一 int86 用来存储标志寄存器 FLAGS中的进位标志位 以验证成功或失败 0 成功 1 失败 2020 2 14 26 一 int86 可以想象 函数的定义大体是 intint86 intn unionREGS in unionREGS out AX in x ax BX in x bx CX in x cx FLAGS in x flags geninterrupt n out x ax AX out x bx BX return AX 未必都执行 由n决定执行哪些 未必都执行 2020 2 14 27 例9 8从键盘读入一个字符 同例9 1 键盘I O中断调用号是16H 调用0号功能可读入字符 使用时必须将功能号放在AH中 出口参数是 AH 扫描码 AL ASCII码 主要代码 charc unionREGSinregs outregs inregs h ah 0 使用0号功能c int86 0 x16 此行也可以写成如下两行 int86 0 x16 一 int86 2020 2 14 28 例9 9写一个函数 可将光标定位到 x y 处分析 这是视频BIOS调用中的2号功能调用入口参数 功能号送AH 光标行 列号分别送DH和DL BH为显示页号 选0 出口参数 无voidmovetoxy intx inty unionREGSregs regs h ah 2 regs h dh y regs h dl x regs h bh 0 int86 0 x10 intmain clrscr putchar A movetoxy 10 10 putchar B movetoxy 5 5 putchar C return0 一 int86 2020 2 14 29 二 int86x 原型 intint86x intintr num unionREGS inregs unionREGS outregs structSREGS segregs 前三个参数同int86 第四个参数是一个SREGS类型指针 用来指明段地址SREGS类型定义如下 structSREGS unsignedintes unsignedintcs unsignedintss unsignedintds 2020 2 14 30 二 int86x int86x 函数实际上只用到ds和es两个成员 执行前只需要将这两个新段值存入ds和es即可 函数执行时 会自动保存寄存器DS和ES的原值 然后换为ds和es的值 待函数执行结束时 再自动恢复原值 2020 2 14 31 二 int86x 可以想象 函数的定义大体是 intint86 intn unionREGS in unionREGS out structSREGS s 备份段地址 AX in x ax DS s ds ES s es geninterrupt n out x ax AX out x bx BX 恢复段地址return AX 未必都执行 未必都执行 2020 2 14 32 二 int86x 例9 10键盘输入一个文件名 含路径 查看其属性 设需要改变段值 分析 本例使用的是DOS功能调用 功能号43H入口参数是 AL 0出口参数 若成功 文件属性保存在CL中说明 文件属性是一个字节 每位的含义如下 位0 是否只读位1 是否隐含位2 是否系统文件位3 卷标位4 子目录位5 更改标志位6 0位7 0当所有位都是0时 表示可读可写 2020 2 14 33 二 int86x includeintmain charfilename 80 unionREGSinregs outregs structSREGSsegregs printf Enterfilename gets filename 可含盘符 路径 不要打两条 键盘输入 inregs h ah 0 x43 inregs h al 0 inregs x dx FP OFF filename segregs ds FP SEG filename int86x 0 x21 2020 2 14 34 三 intdos 原型 intintdos unionREGS inregs unionREGS outregs 该函数用于DOS系统功能调用 INT21H 第一个是入口参数 表示相应的功能号第二个参数是出口参数 函数调用后若cflag为0表示调用成功 返回值在outregs的ax中若cflag为1表示调用出错 ax中为错误代码 2020 2 14 35 三 intdos 例9 11键盘输入一个文件名 含路径 删除该文件 设不需要改变段值 分析 DOS调用的41H功能为删除文件 该功能要求调用前将文件名的段地址和偏移地址分别送入DS和DX 本例中DS不改变段值 故只需送偏移地址 intdelete file charnear filename unionREGSregs intret regs h ah 0 x41 功能号41H 删除文件regs x dx unsigned filename dx置偏移地址ret intdos 2020 2 14 36 四 intdosx 原型 intintdosx unionREGS inregs unionREGS outregs structSREGS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机动车售后服务合同范本
- 美术高考集训班协议合同
- 现场勘测安全协议书模板
- 自建房盖楼出售合同范本
- 腌制品配送服务合同范本
- 鱼缸家用转让协议书模板
- 离婚前财产转移合同范本
- 混凝土施工承包合同协议
- 高压铝电缆收购合同范本
- 潍坊小餐饮加盟合同范本
- 广东省广州市南沙区2025年八年级下学期期末数学试题及参考答案
- PICC的日常护理课件
- 2025年口腔医学专业毕业考试试题及答案
- 河南省郑州一八联合2025年八下物理期末综合测试试题含解析
- 2025年中学教师资格考试《综合素质》教育热点案例分析题实战解析及答案
- GB/T 45577-2025数据安全技术数据安全风险评估方法
- 中国瓷砖胶行业市场深度调研及发展趋势与投资前景研究报告2025-2028版
- 小学音乐花城版二年级上册歌曲《老爷爷赶鹅》教案
- 近五年辽宁中考英语真题及答案2024
- 锅炉基础传热学热力学知识
- 钢板库存出入管理制度
评论
0/150
提交评论