
第5章软件接口技术软件接口概述5.135.2接口软件及层次结构5.3DOS系统中的接口调用5.4Windows系统中的接口调用5.5 Linux下的接口调用
1 第5章 软件接口技术 5.1 软件接口概述 5.2 接口软件及层次结构 5.3 DOS系统中的接口调用 5.4 Windows系统中的接口调用 5.5 Linux下的接口调用

第5章软件接口技术5.1软件接口概述命令接口一交互式命令■程序接口——系统调用5.2 接口软件及层次结构应用软件操作系统驱动软件硬件层图5.1驱动软件的层次接口2
2 5.1 软件接口概述 ◼ 命令接口——交互式命令 ◼ 程序接口——系统调用 5.2 接口软件及层次结构 第5章 软件接口技术 操作系统 驱动软件 硬件层 应用软件 图 5.1 驱动软件的层次接口

第5章软件接口技术应用软件应用软件应用环境用户空间DOS内核空间设备管理BIOS驱动软件硬件层硬件层(a) DOS系统的调用层次(b)高级操作系统的调用层次图5.2设备调用层次3
3 第5章 软件接口技术 DOS BIOS 硬件层 应用软件 应用环境 驱动软件 硬件层 应用软件 设备管理 用户空间 内核空间 (a) DOS系统的调用层次 (b) 高级操作系统的调用层次 图 5.2 设备调用层次

第5章 软件接口技术5.3 DOS系统中的接口调用DOS系统是单用户的操作系统DOS系统提供给用户的编程界面大体有如下几种:■裸机层软件开发,利用芯片或板卡(适配器)支持的寄存器或内存数据区编程。需要用户非常清楚设备的硬件细节,编程较复杂,但软件实现速度最快。BIOS级软件开发,利用BIOS基本输入输出系统所提供的一些服务功能编程。■系统功能级软件开发,利用DOS系统提供的系统功能编程。4
4 5.3 DOS系统中的接口调用 ◼ DOS系统是单用户的操作系统 ◼ DOS系统提供给用户的编程界面大体有如下几种: ◼ 裸机层软件开发,利用芯片或板卡(适配器)支持的寄存器或 内存数据区编程。需要用户非常清楚设备的硬件细节,编程较 复杂,但软件实现速度最快。 ◼ BIOS级软件开发,利用BIOS基本输入输出系统所提供的一些 服务功能编程。 ◼ 系统功能级软件开发,利用DOS系统提供的系统功能编程。 第5章 软件接口技术

第5章软件接口技术5.3.1 BIOS中断调用及实现1.BIOS中断调用概述BIOS是固化在ROM中的一组IO设备驱动程序INT n; n=05H~1FH例:调用10H视频服务功能中的02H功能(设置光标位置),将光标移至3行14列。MOV AH,02HMOV DH,3MOV DL, 14INT 10H5
5 5.3.1 BIOS中断调用及实现 1. BIOS中断调用概述 ◼ BIOS是固化在ROM中的一组I/O设备驱动程序 ◼ INT n ; n=05H~1FH 例:调用10H视频服务功能中的02H功能(设置光标位置),将光标移 至3行14列。 MOV AH, 02H MOV DH, 3 MOV DL, 14 INT 10H 第5章 软件接口技术

第5章 软件接口技术2.视频服务INT 10H例:利用BIOS视频服务的AH-0CH子功能实现写像素点。调用子程序之前,需要用DX保存行号,CX保存列号,AL保存颜色值,这是0CH子功能要求的。PROCNEARWRITINGPIXELPUSH AXMOV AH, 0CHINT 10HPOP AXENDPWRITINGPIXEL6
6 2. 视频服务 ◼ INT 10H 例:利用BIOS视频服务的AH=0CH子功能实现写像素点。调用子程序 之前,需要用DX保存行号,CX保存列号,AL保存颜色值,这是 0CH子功能要求的。 WRITINGPIXEL PROC NEAR PUSH AX MOV AH,0CH INT 10H POP AX WRITINGPIXEL ENDP 第5章 软件接口技术

第5章软件接口技术3.键盘服务;硬件中断,键盘ISR(键盘中断服务程序)-INT 09HINT 16H;软件中断,键盘DSR(键盘设备服务程序)BIOS键盘服务包括3个子功能:0号功能、1号功能和2号功能。表5.3键盘服务功能列表含义子功能号出口参数AL=ASCII码(或0)AH-0从键盘输入一个字符AH=扫描码(或扩展扫描码)ZF=0有键按下,键代码保存在AX中AH-1判断键盘有无字符输入ZF=1无键按下AH-2当前键盘特殊键状态AL=KB-FLAG的变量7
7 第5章 软件接口技术 3. 键盘服务 ◼ INT 09H ;硬件中断,键盘ISR(键盘中断服务程序) ◼ INT 16H ;软件中断,键盘DSR(键盘设备服务程序) ◼ BIOS键盘服务包括3个子功能:0号功能、1号功能和2号功能。 表 5.3 键盘服务功能列表 子功能号 含 义 出 口 参 数 AH=0 从键盘输入一个字符 AL=ASCII码(或0) AH=扫描码(或扩展扫描码) AH=1 判断键盘有无字符输入 ZF=0 有键按下,键代码保存在AX中 ZF=1 无键按下 AH=2 当前键盘特殊键状态 AL=KB-FLAG的变量

第5章软件接口技术4.并行打印机服务INT 17H.0号功能给打印机传送一个字符.1号功能一初始化打印机.2号功能一读打印机状态均可通过AH返回打印机状态字节D3D2D1D.D6DsD4Do=1,不忙,打印机可用=1,打印机出现超时错误未定义=1,打印机表示响应未定义=1,打印机无纸=1,打印机出错=1,打印机选中图5.3打印机状态定义8
8 4. 并行打印机服务 ◼ INT 17H ◼ 0号功能——给打印机传送一个字符 ◼ 1号功能——初始化打印机 ◼ 2号功能——读打印机状态 均可通过AH返回打印机状态字节 第5章 软件接口技术 =1,不忙,打印机可用 =1,打印机表示响应 =1,打印机无纸 =1,打印机选中 D7 D6 D5 D4 D3 D2 D1 D0 =1,打印机出现超时错误 未定义 未定义 =1,打印机出错 图 5.3 打印机状态定义

第5章软件接口技术5.3.2 DOS的系统调用1.DOS系统调用概述■主要包括:磁盘管理、内存管理和基本输入输出管理等。INT21H2.基本I/0功能调用3.DOS功能调用实例MYDATASEGMENTPARAMETERSDB1O0DB ?DB 100DUP(?)MESSAGEDB'Whatisyourname?DB'S'ENDSMYDATAMYSTACKSEGMENTSTACKDB 100 DUP(?)MYSTACKENDS9
9 5.3.2 DOS的系统调用 1. DOS系统调用概述 ◼ 主要包括:磁盘管理、内存管理和基本输入输出管理等。 ◼ INT 21H 2. 基本I/O功能调用 3. DOS功能调用实例 MYDATA SEGMENT PARAMETERS DB 100 DB ? DB 100 DUP(?) MESSAGE DB 'What is your name?' DB '$' MYDATA ENDS MYSTACK SEGMENT STACK DB 100 DUP(?) MYSTACK ENDS 第5章 软件接口技术

第5章软件接口技术MYCODESEGMENTASSUMECS:MYCODE.DS:MYDATA, SS:MYSTACKSTARTPROC FARPUSH DSMOV AX, 0PUSH AXMOVAX.MYDATAMOV DS,AXDISP:MOVDX.OFFSETMESSAGEMOV AH, 09HINT 21HKEY:MOVDX.OFFSETPARAMETERSMOV AH,OAHINT 21HRETSTARTENDPENDSMYCODEENDSTART10
10 MYCODE SEGMENT ASSUME CS:MYCODE, DS:MYDATA, SS:MYSTACK START PROC FAR PUSH DS MOV AX, 0 PUSH AX MOV AX, MYDATA MOV DS, AX DISP: MOV DX, OFFSET MESSAGE MOV AH, 09H INT 21H KEY: MOV DX, OFFSET PARAMETERS MOV AH, 0AH INT 21H RET START ENDP MYCODE ENDS END START 第5章 软件接口技术