Int10中断功能详解

Int10中断功能详解
INT 10H 是由 BIOS 对屏幕及显⽰器所提供的服务程序,⽽后倚天公司针对倚天中⽂提供了许多服务程序,这些服务程序也加挂在 INT 10H 内。使⽤ INT 10H 中断服务程序时,先指定 AH 寄存器为下表编号其中之⼀,该编号表⽰欲调⽤的功⽤,⽽其他寄存器的详细说明,参考表后⽂字,当⼀切设定好之后再调⽤ INT 10H。底下是它们的说明:
AH功 能调⽤参数返回参数 / 注释
1 置光标类型  (CH)0―3 = 光标开始⾏   (CL)0―3 = 光标结束⾏
2 置光标位置  BH = 页号     DH = ⾏
  DL = 列 
调盘
3 读光标位置  BH = 页号 CH = 光标开始⾏  CL = 光标结束⾏  DH = ⾏
 DL = 列
4 置显⽰页  AL = 显⽰页号5 屏幕初始化或上卷
6 屏幕初始化或上卷  AL = 上卷⾏数
  AL =0全屏幕为空⽩     BH = 卷⼊⾏属性
  CH = 左上⾓⾏号     CL = 左上⾓列号
  DH = 右下⾓⾏号     DL = 右下⾓列号
7 屏幕初始化或下卷  AL = 下卷⾏数
  AL = 0全屏幕为空⽩     BH = 卷⼊⾏属性
  CH = 左上⾓⾏号
  CL = 左上⾓列号
  DH = 右下⾓⾏号
  DL = 右下⾓列号
8 读光标位置的属性和字符  BH = 显⽰页 AH = 属性  AL = 字符
9 在光标位置显⽰字符及其属
  BH = 显⽰页
  AL = 字符
  BL = 属性
  CX = 字符重复次数
A 在光标位置只显⽰字符  BH = 显⽰页
  AL = 字符
  CX = 字符重复次数
E 显⽰字符(光标前移)  AL = 字符
  BL = 前景⾊
 光标跟随字符移动
13 显⽰字符串  ES:BP = 串地址
  CX = 串长度
  DH, DL = 起始⾏列
  BH = 页号
  AL = 0,BL = 属性
  串:Char,char,……,char
  AL = 1,BL = 属性    光标返回起始位置
  AL = 1,BL = 属性
  串:Char,char,……,char
  AL = 2
  串:Char,attr,……,char,attr     AL = 3
  串:Char,attr,……,char,attr  光标返回起始位置 光标跟随移动
 光标返回起始位置 光标跟随串移动
AH=00H
AH=00/INT 10H 是⽤来设定显⽰模式的服务程序,AL 寄存器表⽰欲设定的模式:
AL⽂字/图形分辨率颜⾊
00⽂字40*252
01⽂字40*2516
02⽂字80*252
03⽂字80*2516
04图形320*2002
05图形320*2004
06图形640*2002
AH=01H
您可以把光标想成⼀个⼩的矩形,平时这个矩形扁平位于某字底部,但藉由此功能可以改变其⼤⼩与位置。光标起始处与终⽌处分别由 CL 与 CH 的 0 到 4 位表⽰,参考下图:
⽽ CH 的第 7 位必须是 0,第 5、6 位表⽰光标属性:
位 6      位 5      属性
0          0          正常
0          1          隐形
1          0
1          1          闪烁缓慢
此功能是设定光标位置,位置⽤ DH、DL 表⽰,DH 表⽰列号,DL 表⽰⾏号。由左⾄右称之为『列』,屏幕最上⾯⼀列为第零列,紧靠第零列的下⼀列称为第⼀列……;由上⽽下称之为『⾏』,屏幕最左边⼀⾏称之为第零⾏,紧靠第零⾏右边的⼀⾏为第⼀⾏。故最左边,最上⾯的位置为 DH=0 且 DL=0;最左边第⼆列,DH=1,DL=0。如果是⽂字模式时,BH 为欲改变光标位置的显⽰页,如果是图形模
式,BH 要设为 0。
以⾏列来说明 DH、DL 之意义,⼩⽊偶常常搞混,底下以座标⽅式解释。在⽂字模式下,字符的位置类似数学直⾓座标系的座标,但是 Y 轴⽅向相反,Y 轴是以屏幕最上⾯为零,越下⾯越⼤,直到 24 为⽌,存于 DH 内。X 轴和直⾓座标系相同,越右边越⼤,存于 DL 内,其最⼤值视显⽰模式⽽变。
AH=03H
AH=03H/INT 10H 这个中断服务程序返回时,会在 DX ⾥⾯有光标的⾏列位置,CX 内有光标的⼤⼩,DX、CX 之数值所代表的意义和AH=02H/INT 10H、AH=01H/INT 10H 相同。
AH=04H
此功能是探测光笔之位置,似乎只有 CGA 卡有接上光笔??
AH=05H
这个功能是把指定的显⽰页显⽰于屏幕上,欲显⽰的显⽰页于 AL 寄存器中指定。此功能只能在⽂字模式下才能发⽣作⽤。
AH=06H/07H
这个服务程序的功⽤是把某⼀个设定好的矩形区域内的⽂字向上或向下移动。先说明向上移动,即调⽤ AH=06H/INT 10H。当此服务程序⼯作时,会使矩形区域的⽂字向上移动,⽽矩形区域底端移进空格列。向上移动的列数存⼊ AL 中 ( 如果 AL 为零,表⽰使矩形区域的所有列均向上移 ),底端移⼊空格列的属性存于 BH,矩形区域是藉由 CX、DX 来设定左上⾓与右上⾓的座标,左上⾓的⾏与列分别由 CL、CH 设定,右下⾓的⾏与列由 DL、DH 设定。
AH=07H/INT 10H 和 AH=06H/INT 10H 相似,只是卷动⽅像不同⽽已。
AH=08H
这个服务程序是⽤来取得光标所在位置的字符及属性,调⽤前,BH 表⽰欲读取之显⽰页,返回时,AL 为该位置之 ASCII 字符,AH 为其属性。有关属性的说明,请参考。
AH=09H
这个功能是在光标位置显⽰字符,所要显⽰字符的 ASCII 码存于 AL 寄存器,字符重复次数存于 CX 寄存器,显⽰页存于 BH 寄存器,属性存于 BL 寄存器,其属性使⽤与 AH=08/INT 10H ⼀样。
AH=0AH
这个功能和 AH=09H/INT 10H ⼀样,差别在 AH=0AH 只能写⼊⼀个字符,⽽且不能改变字符属性。
AH=0BH
这个服务程序是选择调⾊盘。显⽰模式 5 是 320*200 的图形模式,最多可以显⽰ 4 种颜⾊,这四种颜⾊的意思是最多可以『同时』显⽰⼀种背景⾊及三种前景⾊,⽽这三种前景⾊有两种⽅式可供选择,因此事实上,在显⽰模式 5 有两种调⾊盘可供选择。就好像您去买 12种颜⾊的⽔彩,但可在调⾊盘上以任意⽐例搭配出许多种颜⾊。
调⾊盘 0 的三⾊是绿、红、黄;调⾊盘 1 的三⾊是青、紫红、⽩。背景⾊有 16 六种可供选择,这 16 种就是的 16 ⾊。调⽤此中断时,先决定要设定背景⾊抑或调⾊盘,
要设定背景⾊时,则使 BH 为 0,再使 BL 之数值为 0 到 0fh 之间表⽰的 16 ⾊之⼀。
要设定调⾊盘时,则使 BH 为 1。再设定 BL 为零或⼀表⽰选择那⼀种调⾊盘。
背景⾊只有在前景⾊为 0 时才会显现出来。
AH=0CH
AH=0Ch/INT 10H 是在绘图模式中显⽰⼀点 ( 也就是写⼊点像,write graphics pixel ),⽽ AH=0DH/INT 10H 则是读取点像 ( read graphics pixel )。
写⼊时,要写⼊位置 X 座标存于 CX 寄存器,Y 座标存于 DX 寄存器,颜⾊存于 AL 寄存器。和⽂字模式相同,萤光幕上的 Y 座标是最上⾯⼀列为零,越下⾯越⼤,X 座标则和数学的定义相同。CX、DX、AL 值之范围与显⽰模式有关:
显⽰模式X 座标Y 座标颜⾊
40~3190~1990、1
50~3190~1990~3
60~6390~1990、1
AH=0DH/INT 10H 则是读取某⼀位置之点像,您必须指定 CX、DX,⽽ INT 10H 会传回该位置点像之颜⾊。
AH=0EH
这个⼦程序是使显⽰器像打字机⼀样的显⽰字符来,在前⾯⽤ AH=09H/INT 10H 和 AH=0AH/INT 10H 都可以在萤光幕上显⽰字符,但是这两奘⽅式显⽰字符之后,光标位置并不移动,⽽ AH=0EH/INT 10H 则会使光标位置移动,每显⽰⼀个字符,光标会往右移⼀格,假如已经到最右边了,则光标会移到最左边并移到下⼀列,假如已经移到最下⾯⼀列的最右边,则屏幕会向上卷动。
AL 寄存器存要显⽰的字符,BH 为⽬前的显⽰页,如果是在图形模式,则 BH 须设为 0,假如是在图形模式下,也可以设定 BL 来表⽰⽂字的颜⾊,⽂字模式下的 BL 则⽆功能。
AH=0FH
这个服务程序是得到⽬前的显⽰模式,调⽤前只需使 AH 设为 0fh,当由 INT 10H 返回时,显⽰模式存于 AL 寄存器 ( 参考
AH=00H/INT 10H 的显⽰模式表 ),⽬前的显⽰页存于 BH 寄存器,总字符⾏数存于 AH 寄存器。
所谓属性是指字符的颜⾊、背景颜⾊、是否闪烁、有没有底线等性质。在彩⾊显⽰卡 ( CGA/EGA/VGA 等 ) 的⽂字模式中,颜⾊是⽤ 4个位表⽰,故可以表现出 16 种颜⾊,如下表:
⼆进制数颜⾊例⼦⼆进制数颜⾊例⼦
0000⿊⾊black1000灰⾊gray
0001蓝⾊blue1001淡蓝⾊light blue
0010绿⾊green1010淡绿⾊light green
0011青⾊cyan1000淡青⾊light cyan
0100红⾊red1100淡红⾊light red
0101紫红⾊magenta1101淡紫红⾊light magenta
0110棕⾊brown1110黄⾊yellow
0111银⾊light gray1111⽩⾊
在彩⾊显⽰器⾥,如 CGA、EGA、VGA 等,常⽤⼀个字节 ( 8 个位 ) 来表⽰⽂字颜⾊和背景颜⾊,通常以第 0~3 位表⽰⽂字本⾝颜⾊;第 4~6 位表⽰背景颜⾊,背景颜⾊只有上表左栏的 8 种⽽已;第 7 个位,表⽰是否闪烁,0 表⽰不闪烁,1 表⽰闪烁。
但是在单⾊显⽰器⾥,如 MDA 和 Hercules 卡中,这些颜⾊表并⽆意义,所以属性解释⽅式不同,请
看下表:
数值属性
00H空格,不显⽰任何数据
77H显⽰⽩⾊⽅块
07H正常的⿊底⽩字
70H反⽩的⽩底⿊字
01H加底线

本文发布于:2024-09-20 20:25:10,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/372249.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:光标   位置   字符   服务程序
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议