BIOS与DOS中断调用详解:从显示到键盘操作

需积分: 10 1 下载量 182 浏览量 更新于2024-07-10 收藏 435KB PPT 举报
"BIOS功能调用是计算机系统中的一种重要机制,它允许低级软件,如操作系统或应用程序,通过调用BIOS(基本输入/输出系统)的中断子程来访问硬件设备。BIOS包含了一系列中断服务程序,涵盖了对显示器、磁盘、键盘、打印机等常见外设的控制。这些中断服务通常由中断类型码来标识,例如0-1CH。BIOS功能调用涉及到对这些中断子程的直接调用,以实现特定的功能。 在BIOS功能调用中,有几个常见的例子: 1. 设置显示方式:通过调用10H类型的中断,功能号00H,可以改变显示器的工作模式,比如从文本模式切换到图形模式。 2. 置光标位置:使用10H类型中断,功能号02H,可以定位屏幕上的光标位置,这对于文本输出和用户界面的交互非常有用。 3. 清屏与清窗口:10H类型的中断,功能号06H或07H,用于清除屏幕或指定区域的内容,帮助刷新屏幕或准备新的显示内容。 DOS系统功能调用主要通过21H类型的中断进行,这些调用提供了更多的系统级服务: 1. 显示单字符:功能号02H,允许在屏幕上显示一个字符。 2. 显示字符串:功能号09H,用于打印字符串,常用于输出消息或用户输入的验证。 3. 单字符输入:功能号01H、07H、08H,支持从键盘接收单个字符输入,并提供回退和删除功能。 4. 字符串输入:功能号0AH,可以接收用户输入的一行字符,常用于命令行参数或用户密码的输入。 5. 检测键盘状态:功能号0BH,用于查询键盘是否有按键被按下,有助于实现无延迟的用户交互。 6. 保存和设置中断向量:功能号35H和25H,用于保存和替换中断处理程序,这是更高级的系统编程中常用的技术。 在汇编语言编程中,使用INT指令可以调用这些中断。例如,以下代码片段展示了如何使用BIOS的0AH功能输入字符串,然后用09H功能显示输入的内容: ```assembly dataSEGMENT stringDB 'HelloWorld!', '$' maxDB 11, ?, 4DUP(?) dataENDS codeSEGMENT ASSUME CS:code, DS:data start: MOV AX, data ; 置缓冲区地址于DS:DX MOV DS, AX LEA DX, max MOVAH, 0AH ; 调用0AH输入功能 INT 21H LEA DX, string MOVAH, 09H ; 调用09H显示功能 INT 21H MOVAH, 4CH INT 21H ; 返回DOS codeENDS END start ``` 这段代码首先设置了数据段,然后调用21H中断的0AH功能读取用户输入,接着调用09H功能显示输入的字符串。如果在DOS环境下运行,当用户输入'123456789'并回车,屏幕上会显示'HelloWorld!',因为0AH功能的输入会被截断在第一个空格处,所以'123456789'会被存储为'123456789',而不是'HelloWorld!'。 总结来说,BIOS和DOS中断调用是早期个人计算机系统中与硬件交互的关键手段,它们提供了标准化的方法来访问和控制各种设备,而无需了解底层硬件的具体细节。这种抽象层使得软件开发更加便捷,同时也为高级操作系统和应用程序的构建奠定了基础。"