IBM PC BIOS与DOS中断详解
需积分: 9 124 浏览量
更新于2024-08-17
收藏 339KB PPT 举报
该资源是关于BIOS和DOS中断的编程示例,主要讲解了如何在80x86架构的计算机中进行基本的I/O操作,如键盘、显示器、打印机和串行通信口的交互。内容涉及到内存布局,包括BIOS和DOS在内存中的位置,以及如何通过中断调用来使用这些系统服务。
正文:
在IBM PC及其兼容机中,BIOS(Basic Input/Output System)和DOS(Disk Operating System)是两个关键组成部分,它们为用户提供与硬件交互的基础。BIOS是一组固化在ROM中的程序,负责初始化硬件,执行POST(Power-On Self Test)自检,并提供基本的I/O服务。而DOS则是一个磁盘操作系统,它建立在BIOS之上,提供了更高级别的文件管理和用户命令接口。
在编程中,我们可以利用BIOS和DOS提供的中断来实现各种功能。例如,标题中提到的代码段展示了如何使用DOS中断0AH来实现用户输入。这段代码首先定义了一个数据段,包含一个变量max,然后在代码段中设置了段寄存器CS和DS,以指向数据段。接着,通过MOV指令将数据段地址加载到DS和DX寄存器,为DOS中断调用准备缓冲区。然后,调用INT 21H中断,其中AH寄存器设置为0AH,表示要执行10进制数字的输入功能。输入完成后,其他指令用于处理输入的字符。
9.1 键盘I/O:BIOS中断16H可以用来检测是否有键被按下,而中断10H则用于读取键盘输入的具体字符。
9.2 显示器I/O:BIOS中断10H和13H用于控制文本模式下的屏幕显示,包括设置颜色、移动光标和打印字符等。
9.3 打印机I/O:BIOS中断17H提供了基本的打印机控制功能,如发送数据到并行端口。
9.4 串行通信口I/O:通过中断14H和1CH,程序员可以控制COM1和COM2等串行端口,进行数据传输。
内存布局方面,0000:0000到0040:0000包含了BIOS的128KB ROM,0050:0000到0070:0000存储了中断向量表,A000:0000到C800:0000是视频内存(显存),DOS的相关模块如IO.SYS、COMMAND.COM和MSDOS.SYS位于不同的内存区域,而用户程序则通常从C800:0000之后开始执行。
DOS通过中断调用提供服务,比如DOS功能调用,其调用号放在AH寄存器中,而其他参数可能放在AL、BL、CX、DX等寄存器或内存中。DOS调用通常比直接使用BIOS中断更复杂,但提供了更多的系统功能,如文件操作、进程管理等。
理解BIOS和DOS中断是编写底层系统程序的基础,它们使得开发者能够以相对简单的方式与硬件进行交互,而无需深入了解硬件的底层细节。通过学习和熟练使用这些中断,开发者可以编写出能在多种环境下运行的高效程序。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2021-09-23 上传
2022-07-02 上传
2021-09-25 上传
2012-12-24 上传
点击了解资源详情
点击了解资源详情
四方怪
- 粉丝: 30
- 资源: 2万+
最新资源
- 背包问题 贪心算法
- IBM DB2通用数据库SQL入门
- ARM指令集及汇编 学习ARM必不可少的
- Lecture Halls 假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场。设计一个有效的算法进行安排。(这个问题实际上是著名的图着色问题。若将每一个活动作为图的一个顶点,不相容活动间用边相连。使相邻顶点着有不同颜色的最小着色数,相应于要找的最小会场数。)
- ARM开发工程师入门宝典
- 交通灯系统硬件软件设计(有图有程序)
- MAX SUM 给定由n整数(可能为负数)组成的序列 {a1,a2,…,an},求该序列形如ai+ai+1,…,+aj的子段和的最大值。当所有的整数均为负数时定义其最大子段和为0。
- Number Triangles 给定一个由n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。
- st5dfsfdsdfsdfsfds
- 最长公共子序列 一个给定序列的子序列是在该序列中删去若干元素后得到的序列。给定两个序列X和Y,当另一序列Z既是X的子序列又是Y的子序列时,称Z是序列X和Y的公共子序列。例如,若X={A,B,C,B,D,B,A},Y={B,D,C,A,B,A},则序列{B,C,A}是X和Y的一个公共子序列,但它不是X和Y的一个最长公共子序列。序列{B,C,B,A}也是X和Y的一个公共子序列,它的长度为4,而且它是X和Y的一个最长公共子序列,因为X和Y没有长度大于4的公共子序列。 最长公共
- 《Keil Software –Cx51 编译器用户手册 中文完整版》(403页)
- Pebble Merging 在一个圆形操场的四周摆放着n 堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的2 堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。试设计一个算法,计算出将n堆石子合并成一堆的最小得分和最大得分。
- 云计算:优势与挑战并存
- Minimal m Sums 给定n 个整数组成的序列,现在要求将序列分割为m 段,每段子序列中的数在原序列中连续排列。如何分割才能使这m段子序列的和的最大值达到最小?
- Lotus 公式秘籍---经验总结
- 数据结构C++二分搜索树