By: Ailson Jack

Date: 2018.09.06

个人博客:  http://www.only2fire.com/

本文在我博客的地址是:http://www.only2fire.com/archives/76.html,排版更好,便于学习,也可以去我博客逛逛,兴许有你想要的内容呢。

欢迎大家访问我博客中的文章,对文章的修改、更新,以及相关主题文章的发布,都会比我的CSDN博客要快些 ^_^。

int 10H 是BIOS对屏幕及显示器所提供的服务程序。使用int 10H中断服务程序时,先要进行一些简单的配置,比如指定功能号和子功能号。其中寄存器AH表示的就是功能号,而其他寄存器的详细说明,参考表格中对应功能的文字,当一切设定好之后再调用 int 10H。下面是可供参考的表格:

AH

功能

调用参数

返回参数/注释

01H

设置光标类型

CH低四位=光标的起始行

CL低四位=光标的终止行

02H

设置光标位置

BH=显示页码

DH=行(Y坐标)

DL=列(X坐标)

03H

读光标位置

BH=显示页码

CH=光标的起始行

CL=光标的终止行

DH=行(Y坐标)

DL=列(X坐标)

04H

获取当前状态和光笔位置

AH=00h—光笔未按下/未触发,01h—光笔已按下/已触发

BX=象素列(图形X坐标)

CH=象素行(图形Y坐标,显示模式:04H~06H)

CX=象素行(图形Y坐标,显示模式:0DH~10H)

DH=字符行(文本Y坐标)

DL=字符列(文本X坐标)

05H

设置显示页,即选择活动的显示页

AL=显示页

06H

屏幕初始化或上卷

AL = 上卷行数

AL = 0全屏幕为空白

BH = 卷入行属性

CH = 左上角行号

CL = 左上角列号

DH = 右下角行号

DL = 右下角列号

07H

屏幕初始化或下卷

AL = 下卷行数

AL = 0全屏幕为空白

BH = 卷入行属性

CH = 左上角行号

CL = 左上角列号

DH = 右下角行号

DL = 右下角列号

08H

读光标位置的属性和字符

BH=显示页码

AH=属性

AL=字符

09H

在当前光标处按指定属性显示字符

AL=字符

BH=显示页码

BL=属性(文本模式)或颜色(图形模式)

CX=重复输出字符的次数

0AH

在当前光标处按原有属性显示字符

AL=字符

BH=显示页码

BL=颜色(图形模式,仅适用于PCjr)

CX=重复输出字符的次数

0EH

显示字符(光标前移)

AL=字符

BH=页码

BL=前景色(图形模式)

13H

显示字符串

BH=页码

BL=属性(若AL=00H或01H)

CX=显示字符串长度

(DH、DL)=坐标(行、列)

ES:BP=显示字符串的地址

AL= 显示输出方式

0:字符串中只含显示字符,其显示属性在BL中。显示后,光标位置不变

1:字符串中只含显示字符,其显示属性在BL中。显示后,光标位置改变

2:字符串中含显示字符和显示属性。显示后,光标位置不变

3:字符串中含显示字符和显示属性。显示后,光标位置改变

AH=00H是用来设定显示模式的,AL 寄存器表示欲设定的模式:

AL

文字/图形

分辨率

颜色

00H

文字

40*25

2色

01H

文字

40*25

16色

02H

文字

80*25

2色

03H

文字

80*25

16色

04H

图形

320*200

2色

05H

图形

320*200

4色

06H

图形

640*200

2色

AH=01H,你可以把光标想成一个小的矩形,平时这个矩形扁平位于某字底部,但藉由此功能可以改变其大小与位置。光标起始处与终止处分别由 CL 与 CH 的 0 到 4 位表示,而 CH 的第 7 位必须是 0,第 5、6 位表示光标属性:

位6

位5

属性

0

0

正常

0

1

隐形

1

0

erratic

1

1

闪烁缓慢

AH=02H,此功能是设定光标位置,位置用 DH、DL 表示,DH 表示列号,DL 表示行号。由左至右称之为『列』,屏幕最上面一列为第零列,紧靠第零列的下一列称为第一列……;由上而下称之为『行』,屏幕最左边一行称之为第零行,紧靠第零行右边的一行为第一行。故最左边,最上面的位置为 DH=0 且 DL=0;最左边第二列,DH=1,DL=0。如果是文字模式时,BH 为欲改变光标位置的显示页,如果是图形模式,BH 要设为 0。

在文字模式下,字符的位置类似数学直角坐标系的坐标,但是 Y 轴方向相反,Y 轴是以屏幕最上面为零,越下面越大,直到 24 为止,存于 DH 内。X 轴和直角座标系相同,越右边越大,存于 DL 内,其最大值视显示模式而变。

AH=03H,用于读取光标位置,在这个中断服务程序返回时,会将光标的行列信息存储在DX里面,CX中存储光标的开始行和结束行。

AH=04H,此功能是探测光笔的位置,似乎只有 CGA 卡有接上光笔??

AH=05H,这个功能是把指定的显示页显示于屏幕上,欲显示的显示页由AL寄存器指定。此功能只能在文字模式下才能发生作用。

AH=06H/07H,这个服务程序的作用是把某一个设定好的矩形区域内的文字向上或向下移动。先说明向上移动,即AH=06H。当此服务程序工作时,会使矩形区域的文字向上移动,而矩形区域底端移进空格列。向上移动的列数存入 AL 中 ( 如果 AL 为零,表示使矩形区域的所有列均向上移 ),底端移入空格列的属性存于 BH,矩形区域是藉由 CX、DX 来设定左上角与右下角的座标,左上角的行与列分别由 CL、CH 设定,右下角的行与列由 DL、DH 设定。AH=07H和 AH=06H相似,只是卷动方像不同而已。

AH=08H,这个服务程序是用来取得光标所在位置的字符及属性,调用前,BH表示想要读取的显示页,返回时,AL为该位置的ASCII字符,AH为其属性,有关属性的说明,请参考下面的注1。

AH=09H,这个功能是在光标位置显示字符,所要显示字符的 ASCII 码存于 AL 寄存器,字符重复次数存于 CX 寄存器,显示页存于 BH 寄存器,属性存于 BL 寄存器,其属性使用与AH=08H一样。

AH=0AH,这个功能和AH=09H一样,差别在 AH=0AH 只能写入一个字符,而且不能改变字符属性。

AH=0BH,这个服务程序是选择调色盘。显示模式 5 是 320*200 的图形模式,最多可以显示 4 种颜色,这四种颜色的意思是最多可以『同时』显示一种背景色及三种前景色,而这三种前景色有两种方式可供选择,因此事实上,在显示模式 5 有两种调色盘可供选择。就好像您去买 12 种颜色的水彩,但可在调色盘上以任意比例搭配出许多种颜色。

调色盘 0 的三色是红、黄、绿;调色盘 1 的三色是青、紫红、白。背景色有 16 六种可供选择,这 16 种就是下面注1的 16 色。调用此中断时,先决定要设定背景色抑或调色盘:

要设定背景色时,则使BH为 0,再使BL之数值为0到0fh之间表示注1的16色之一。

要设定调色盘时,则使BH为1。再设定BL为零或一表示选择那一种调色盘。

背景色只有在前景色为 0 时才会显现出来。

AH=0CH,是在绘图模式中显示一点 ( 也就是写入点像,write graphics pixel ),而 AH=0DH则是读取点像 ( read graphics pixel )。

写入时,要写入位置X坐标存于CX寄存器,Y坐标存于DX寄存器,颜色存于AL寄存器。和文字模式相同,萤光幕上的Y坐标是最上面一列为零,越下面越大,X坐标则和数学的定义相同。CX、DX、AL 值之范围与显示模式有关:

显示模式

X坐标

Y坐标

颜色

4

0~319

0~199

0、1

5

0~319

0~199

0~3

6

0~639

0~199

0、1

AH=0DH则是读取某一位置的点像,您必须指定CX、DX,而INT 10H会传回该位置点像的颜色。

AH=0EH,这个子程序是使显示器像打字机一样的显示字符来,在前面用AH=09H和 AH=0AH都可以在萤光幕上显示字符,但是这两种方式显示字符之后,光标位置并不移动,而AH=0EH则会使光标位置移动,每显示一个字符,光标会往右移一格,假如已经到最右边了,则光标会移到最左边并移到下一列,假如已经移到最下面一列的最右边,则屏幕会向上卷动。

AL寄存器存储要显示的字符,BH为目前的显示页,如果是在图形模式,则BH须设为 0,假如是在图形模式下,也可以设定 BL 来表示文字的颜色,文字模式下的 BL 则无功能。

AH=0FH,这个服务程序是得到目前的显示模式,调用前只需使AH设为0fh,当由INT 10H返回时,显示模式存储在AL寄存器(参考AH=00H的显示模式表),目前的显示页存于BH寄存器,总字符行数存存储在AH寄存器。

注1

所谓属性是指字符的颜色、背景颜色、是否闪烁、有没有底线等性质。在彩色显示卡 (CGA/EGA/VGA等)的文字模式中,颜色是用4个位表示,故可以表现出16种颜色,如下表:

二进制数

颜色

二进制数

颜色

0000

黑色(black)

1000

灰色(gray)

0001

蓝色(blue)

1001

淡蓝色(light blue)

0010

绿色(green)

1010

淡绿色(light green)

0011

青色(cyan)

1011

淡青色(light cyan)

0100

红色(red)

1100

淡红色(light red)

0101

紫红色(magenta)

1101

淡紫红色(light magenta)

0110

棕色(brown)

1110

黄色(yellow)

0111

银色(light gray)

1111

白色(white)

在彩色显示器里,如CGA、EGA、VGA等,常用一个字节(8个位)来表示文字颜色和背景颜色,通常以第0~3位表示文字本身颜色;第4~6位表示背景颜色,背景颜色只有上表左栏的8种而已;第7个位,表示是否闪烁,0表示不闪烁,1表示闪烁。

但是在单色显示器里,如MDA和Hercules卡中,这些颜色表并无意义,所以属性解释方式不同,请看下表:

数值

属性

00H

空格,不显示任何数据

77H

显示白色方块

07H

正常的黑底白字

70H

反白的白底黑子

01H

加底线

排版更好的内容见我博客的地址:http://www.only2fire.com/archives/76.html

注:转载请注明出处,谢谢!^_^

BIOS int 10H中断介绍相关推荐

  1. BIOS int 13H中断介绍

    BIOS int 13H中断也叫直接磁盘服务(Direct Disk Service),该中断的各个功能号及对应的功能描述如下: 1.功能 00H 功能描述:磁盘系统复位 入口参数:AH=00H DL ...

  2. BIOS INT 10中断功能

    INT 10H 是由 BIOS 对屏幕及显示器所提供的服务程序,而后倚天公司针对倚天中文提供了许多服务程序,这些服务程序也加挂在 INT 10H 内.使用 INT 10H 中断服务程序时,先指定 AH ...

  3. BIOS INT 10中断功能详解

    NT 10H 是由 BIOS 对屏幕及显示器所提供的服务程序,而后提供了许多服务程序,这些服务程序也加挂在 INT 10H 内. 使用 INT 10H 中断服务程序时,先指定 AH 寄存器为下表编号其 ...

  4. 汇编--INT 10H功能

    汇编–INT 10H功能 INT 10H 是由 BIOS 对屏幕及显示器所提供的服务程序,而后倚天公司针对倚天中文提供了许多服务程序,这些服务程序也加挂在 INT 10H 内.使用 INT 10H 中 ...

  5. Int 10 中断功能 详解

    INT 10H 是由 BIOS 对屏幕及显示器所提供的服务程序,而后倚天公司针对倚天中文提供了许多服务程序,这些服务程序也加挂在 INT 10H 内.使用 INT 10H 中断服务程序时,先指定 AH ...

  6. BIOS INT 10-13功能调用的“另类”玩法

    http://www.cnblogs.com/ljf9201314/archive/2008/07/21/1247653.html BIOS INT 10-13功能调用的"另类"玩 ...

  7. 汇编 INT 10H功能

    INT 10H 是由 BIOS 对屏幕及显示器所提供的服务程序,而后倚天公司针对倚天中文提供了许多服务程序,这些服务程序也加挂在 INT 10H 内.使用 INT 10H 中断服务程序时,先指定 AH ...

  8. babyos (三)——利用BIOS INT 0x13读取软盘

    注:以下程序为原创,若发现任何BUG,欢迎指正:若有问题,欢迎交流:权利归原作者所有,若转载,请注明出处:若能有益于一二访客,幸甚. 昨天学习了VGA显示的一些东西,今天准备学习一下读取软盘的知识. ...

  9. BIOS中断大全:“INT 10H ~ INT 1AH”

    BIOS中断: 1.显示服务(Video Service--INT 10H) 00H -设置显示器模式 01H -设置光标形状 02H -设置光标位置 03H -读取光标信息 04H -读取光笔位置 ...

  10. BIOS INT中断整理

    BIOS 中断 1. 显示服务(Video Service--INT 10H) 2. 直接磁盘服务(Direct Disk Service--INT 13H) 3.串行口服务(Serial Port ...

最新文章

  1. 限制mysql服务为本地访问
  2. 桌面快捷键和桌面livefolder
  3. typeScript知识点总结
  4. 定义列表的特点html,HTML的列表表格表单知识点
  5. check corners_免费下载:将Mac样式的Hot Corners添加到Windows 10
  6. Java并发之Condition的实现分析
  7. C++语言学习(十九)——C++类型识别
  8. 台湾SDN/NFV联盟:集合产业内各部分力量,共同推进NFV技术发展
  9. H5版俄罗斯方块(3)---游戏的AI算法
  10. linux下安装java
  11. MATLAB数字图像处理(一)图像的基本操作
  12. ipython的用法详解
  13. linux服务器常用命令
  14. (d2l-ai/d2l-zh)《动手学深度学习》pytorch 笔记(3)前言(介绍各种机器学习问题)以及数据操作预备知识Ⅲ(概率)
  15. 使用信用卡 要避开这些陷阱
  16. mysql数据的备份
  17. ps如何给字体图换颜色
  18. 电脑如何剪辑视频?自学视频剪辑的朋友看过来
  19. 大数据原生集群本地测试环境搭建三
  20. Lite-HRNet:轻量级HRNet,FLOPs大幅下降

热门文章

  1. 学云计算能干什么_电大是干什么的?属于什么教育?
  2. 我眼中的“阿里月饼事件”
  3. 单片机和嵌入式哪个值得学?
  4. 【024】基于51单片机的电子琴加音乐播放器系统Proteus仿真设计
  5. python写入txt不覆盖_python不能覆盖文件内容如何解决
  6. 一文搞定卷积神经网络——从原理到应用
  7. Unity3D中背景音乐和相关音效的添加,背景音乐暂停、停止和播放的设置
  8. 电感式dcdc原理(转)
  9. Office 2016出现加载DLL失败或者库未注册的问题:0x8002801D或者0x80029C4A
  10. Win10不相邻的磁盘怎么合并,一学就会