x01.os.1: BIOS 中断
这只是一点准备工作。为了显示字符串,需要调用中断:int 0x10 (AH=0x13)。具体参数设置,参考我的归纳整理如下:
INT 10 (AH = 0)
-----------------
功能:设置显示方式
调用参数:
AL = 00:40 * 25 黑白方式
01:40 * 25 彩色方式
02:80 * 25 黑白方式
03:80 * 25 彩色方式
04:320 * 200 彩色图形方式
05:320 * 200 黑白图形方式
06:640 * 200 黑白图形方式
07:80 * 25 单色文本方式
08:160 * 200 16色图形(PCjr)
09:320 * 200 16色图形(PCjr)
0A:640 * 200 16色图形(PCjr)
0B:保留(EGA)
0C:保留(EGA)
0D:320 * 200 彩色图形(EGA)
0E:640 * 200 彩色图形(EGA)
0F:640 * 350 黑白图形(EGA)
10:640 * 350 彩色图形(EGA)
11:640 * 480 单色图形(EGA)
12:640 * 480 16色图形(EGA)
13:320 * 200 256色图形(EGA)
40:80 * 30 彩色图形(CGE400)
41:80 * 50 彩色图形(CGE400)
42:640 * 400 彩色图形(CGE400)
INT 10 (AH = 1)
---------------
功能:置光标类型
调用参数:
CH(0-3) = 光标起始行
CL(0-3) = 光标结束行
INT 10 (AH = 2)
----------------
功能:置光标位置
调用参数:
BH = 页号
DH,DL = 行,列
INT 10 (AH = 3)
----------------
功能:读光标位置
调用参数:
BH = 页号
返回参数:
CH = 光标起始行
DH,DL = 行,列
INT 10 (AH = 4)
----------------
功能:读光笔位置
返回参数:
AH = 0:光笔未触发
1:光笔触发
CH = 像素行
BX = 像素列
DH = 字符行
DL = 字符列
INT 10 (AH = 5)
----------------
功能:置显示页
调用参数:
AL = 页号
INT 10 (AH = 6)
----------------
功能:屏幕初始化或上卷
调用参数:
AL = 上卷行数
0:整个窗口空白
BH = 卷入行属性
CH = 左上角行号
CL = 左上角列号
DH = 右下角行号
DL = 右下角列号
INT 10 (AH = 7)
---------------
功能:屏幕初始化或下卷
调用参数:
AL = 下卷行数
0:整个窗口空白
BH = 卷入行属性
CH = 左上角行号
CL = 左上角列号
DH = 右下角行号
DL = 右下角列号
INT 10 (AH = 8)
----------------
功能:读光标位置的字符和属性
调用参数:
BH = 显示页
返回参数:
AH = 属性
AL = 字符
INT 10 (AH = 9)
----------------
功能:在光标位置显示字符及其属性
调用参数:
BH = 显示页
AL = 字符
BL = 属性
CX = 字符重复次数
INT 10 (AH = A)
----------------
功能:在光标位置显示字符
调用参数:
BH = 显示页
AL = 字符
CX = 字符重复次数
INT 10 (AH = B)
----------------
功能:置彩色调板(320 * 320 图形)
调用参数:
BH = 彩色调板 ID
BL = 和 ID 配套使用的颜色
INT 10 (AH = C)
----------------
功能:写像素
调用参数:
DX = 行(0--199)
CX = 列(0--639)
AL = 像素值
INT 10 (AH = D)
----------------
功能:读像素
调用参数:
DX = 行(0--199)
CX = 列(0--639)
返回参数:
AL = 像素值
INT 10 (AH = E)
----------------
功能:显示字符(光标前移)
调用参数:
AL = 字符
BL = 前景色
INT 10 (AH = F)
----------------
功能:取当前显示方式
返回参数:
AH = 字符列数
AL = 显示方式
INT 10 (AH = 13)
-----------------
功能:显示字符串(适用AT)
调用参数: ;返回参数
ES:BP = 串地址
CX = 串长度
DH,DL = 起始行,列
BH = 页号
AL = 0,BL = 属性
串:char,char,... ;光标返回起始位置
AL = 1,BL = 属性 ;光标跟随移动
串:char,char,...
AL = 2 ; 光标返回起始位置
串:char,char,...
AL = 3 ; 光标跟随移动
串:char,char,...
INT 11
------
功能:设备校验
返回参数:
AX = 返回值
bit0 = 1:配有磁盘
bit1 = 1:80287 协处理器
bit4,5 = 10:40 * 25 BW(彩色板)
01:80 * 25 BW(彩色板)
11:80 * 25 BW(黑白板)
bit6,7 = 软盘驱动器
bit9,10,11 = RS-232 板号
bit12 = 游戏适配器
bit14,15 = 打印机号
INT 12
-------
功能:测定存储器容量
返回参数:
AX = 字节数(KB)
INT 13 (AH = 0)
----------------
功能:软盘系统复位
INT 13 (AH = 1)
----------------
功能:读软盘状态
返回参数:
AL = 状态字节
INT 13 (AH = 2)
----------------
功能:读磁盘
调用参数:
AL = 扇区数
CH,CL = 磁道号,扇区号
DH,DL = 磁头号,驱动器号
ES:BX = 数据缓冲区地址
返回参数:
成功:AH = 0,AL = 读取的扇区数
失败:AH = 出错代码
INT 13 (AH = 3)
----------------
功能:写磁盘
调用参数:
AL = 扇区数
CH,CL = 磁道号,扇区号
DH,DL = 磁头号,驱动器号
ES:BX = 数据缓冲取地址
返回参数:
成功:AH = 0, AL = 写入的扇区数
失败:AH = 出错代码
INT 13 (AH = 4)
----------------
功能:检验磁盘扇区
调用参数:
AL = 扇区数
CH,CL = 磁道号,扇区号
DH,DL = 磁头号,驱动器号
返回参数:
成功:AH = 0,AL = 检验的扇区数
失败:AH = 出错代码
INT 13 (AH = 5)
----------------
功能:格式化盘磁道
调用参数:
ES:BX = 磁道地址
返回参数:
成功:AH = 0
失败:AH = 出错代码
INT 14 (AH = 0)
----------------
功能:初始化串行通讯口
调用参数:
AL = 初始化参数
DX = 通讯口号(0,1)
返回参数:
AH = 通讯口状态
AL = 调制解调器状态
INT 14 (AH = 1)
----------------
功能:向串行通讯口写字符
调用参数:
AL = 字符
DX = 通讯口号(0,1)
返回参数:
写成功:AH(7) = 0
写失败:AH(7) = 1
AH(0-6) = 通讯口状态
INT 14 (AH = 2)
----------------
功能:从串行通讯口读字符
调用参数:
DX = 通讯口号(0,1)
返回参数:
读成功:AH(7) = 0, AL = 字符
读失败:AH(7) = 1
AH(0-6) = 通讯口状态
INT 14 (AH = 3)
----------------
功能:取通讯口状态
调用参数:
DX = 通讯口号(0,1)
返回参数:
AH = 通讯口状态
AL = 调制解调器状态
INT 15 (AH = 0)
----------------
功能:启动盒式磁带马达
INT 15 (AH = 1)
----------------
功能:停止盒式磁带马达
INT 15 (AH = 2)
----------------
功能:磁带分块读
调用参数:
ES:BX = 数据传输区地址
CX = 字节数
返回参数:
AH = 状态字节
00:读成功
01:冗余检验错
02:无数据传输
04:无引导
08:非法命令
INT 15 (AH = 3)
----------------
功能:磁带分块写
调用参数:
DS:BX = 数据传输区地址
CX = 字节数
返回参数:
同上
INT 16 (AH = 0)
----------------
功能:从键盘读字符
返回参数:
AL = 字符码
AH = 扫描码
INT 16 (AH = 1)
----------------
功能:读键盘缓冲区字符
返回参数:
ZF = 0: AL = 字符码,AH = 扫描码
ZF = 1: 缓冲区空
INT 16 (AH = 2)
----------------
功能:取键盘状态字节
返回参数:
AL = 键盘状态字节
INT 17 (AH = 0)
----------------
功能:打印字符,回送状态字节
调用参数:
AL = 字符
DX = 打印机号
返回参数:
AH = 打印机状态字节
INT 17 (AH = 1)
----------------
功能:初始化打印机,回送状态字节
调用参数:
DX = 打印机号
返回参数:
AH = 打印机状态字节
INT 17 (AH = 2)
----------------
功能:取状态字节
调用参数:
DX = 打印机号
返回参数:
AH = 打印机状态字节
INT 1A (AH = 0)
----------------
功能:读时钟
返回参数:
CH:CL = 时:分
DH:DL = 秒:1/100秒
INT 1A (AH = 1)
----------------
功能:置时钟
调用参数:
CH:CL = 时:分
DH:DL = 秒:1/100秒
INT 1A (AH = 2)
----------------
功能:读实时钟(适用AT)
返回参数:
CH:CL = 时:分(BCD)
DH:DL = 秒:1/100秒(BCD)
INT 1A (AH = 6)
----------------
功能:置报警时间(适用AT)
调用参数:
CH:CL = 时:分(BCD)
DH:DL = 秒:1/100秒(BCD)
INT 1A (AH = 7)
----------------
功能:清除报警(适用AT)
x01.os.1: BIOS 中断的更多相关文章
- x01.os.8: 加载内核
在 x01.os.7 中,借助 freedos,学习了保护模式.但操作系统必须完成引导:boot, 加载内核:loader,kernel,进而管理process,memory,file等. 引导比较简 ...
- x01.os.9: 进程切换
进入内核后,当然不能无所事事.先创建三个进程,分别打印 A,B,C.虽然只是简单的打印,但却是一切扩展的基础,不可等闲视之. 进程切换,涉及一系列的寄存器需要保护,于是,就有了 ProcessStac ...
- x01.os.7: 傻子一样的等
傻子一样的等 昨日出差,办完事后,下午 2:30,准备进长途汽车站买票回家,被一人拦住,说可以带我进去,车马上就要开了,买票来不及.我以为是汽车司机,就跟了进去.进去后,他打了个电话,说 3:30 车 ...
- x01.os.14: 时间都去哪儿了
时间都去哪儿了 老帕的“花儿为什么这样红”,三分钟引起六次欢呼,却败给了张碧晨.试想一下,如果是人气更高的陈冰,即使唱得和张碧晨一模一样,可能仍然不敌老帕,为什么张碧晨就能取胜呢?有这么个笑话:一人弹 ...
- x01.os.13: 文件系统
停了两天电,忽然得空闲.找来破吉他,已然不成弦. 丁丁当当敲,敲到电来到.为把时间捡,熬夜三四点. 从我的置顶随笔 x01.Lab.Download 中下载 x01.os.12.t ...
- BIOS中断大全
BIOS中断大全 BIOS中断:1.显示服务(Video Service——INT 10H) 00H —设置显示器模式0CH —写图形象素01H —设置光标形状0DH —读图形象素02H —设置光标 ...
- 2.2 BIOS中断
BIOS中断 BIOS中断简介 计算机刚启动时,进入实模式下,此时操作系统跟硬件(例如键盘鼠标显卡等)交互通过BIOS进行的.通过调用中BIOS中断的方式来访问硬件设备. BIOS中断就不详细介绍了. ...
- 软盘相关知识和通过BIOS中断访问软盘
一. 软盘基础知识介绍 (1) 3.5英寸软盘 3.5英寸软盘分为上下两面,每面有80个磁道,每个磁道又分为18个扇区,每个扇区大小为512个字节. 软盘大小计算: 2面 * 80磁道 * 18扇区 ...
- BIOS 中断大全
BIOS中断: 1.显示服务(Video Service--INT 10H) 00H -设置显示器模式0CH -写图形象素 01H -设置光标形状0DH -读图形象素 02H -设置光标位置0EH ...
随机推荐
- Java基础复习笔记系列 九 网络编程
Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...
- 【Effective Java】8、优先考虑类型安全的异构容器
有的时候我们一个容器只有一个类型或几个类型并不能满足我们的要求,比如set中存放的元素类型都是同一种,map也就指定的两种 这里我们可以将键进行参数化,而不是将容器参数化,也就是我们可以给容器传一个键 ...
- Atitit.事件机制 与 消息机制的联系与区别
Atitit.事件机制 与 消息机制的联系与区别 1. 消息/事件机制是几乎所有开发语言都有的机制,在某些语言称之为消息(Event),有些地方称之为(Message).1 2. 发布/订阅模式1 3 ...
- C#操作Excel的函数
对于Excel的数据处理功能,大家都已经了解. 我们经常需要将数据导入到Excel,或直接打开Excel文档,读写文件操作,这需要用到ExcelHelper类,有了这个类,这些操作大大的减少我们工作量 ...
- Quartz.NET开源作业调度框架系列
Quartz.NET是一个被广泛使用的开源作业调度框架 , 由于是用C#语言创建,可方便的用于winform和asp.net应用程序中.Quartz.NET提供了巨大的灵活性但又兼具简单性.开发人员可 ...
- 26款能够吸引用户的 iPhone App 界面设计
在这个移动互联网告诉的时代,众多的移动应用程序涌现出来.谁能抓住用户的注意力,谁就有可能成功.在下面这些移动 App 界面设计中,你可以看到不同创意类型的视觉效果,让你获得灵感. 您可能感兴趣的相关文 ...
- 乱码之MyEclipse控制台
今天突然发现控制台出现乱码,查了资料解决方案不一. 我的解决方案如下: Run -> Debug Configuration... -> MyEclipse Servler -> M ...
- ThinkPHP3.2 G函数代码及 使用方法
ThinkPHP3.2 G函数代码及 使用方法 代码: // 内存是否可调用 define('MEMORY_LIMIT_ON',function_exists('memory_get_usage')) ...
- 关于EJB的理解
这一段时间一直在北京面试,很多都有关EJB的相关问题,于是上网查了各种资料.所以,EJB到底是什么? 简而言之:EJB就是将已编写的软件中的业务类.不放到客户端软件中,而将其打包放入服务器中.以C/S ...
- 用JSON.parse和eval出现的问题
json格式非常受欢迎,而解析json的方式通常用JSON.parse()但是eval()方法也可以解析,这两者之间有什么区别呢? JSON.parse()之可以解析json格式的数据,并且会对要解析 ...