当前位置:文档之家› 中断向量表详解

中断向量表详解

8.4 BIOS中断调用8.4.1 BIOS中断调用概述BIOS (BasicInput/OutputSystem)是IBM-PC机的监控程序,它固化在微型机主板的ROM中,其内容主要有系统测试程序 (Post)、初始化引导程序(Boot)、I/O设备的基本驱动程序和许多常用程序模块,它们一般以中断服务程序的形式存在。

例如,负责显示输出的显示 I/O程序为10H号中断服务程序;负责打印输出的打印I/O程序为17H中断服务程序等。

图8.5 是用户程序和操作系统关系示意图,由图可见BIOS程序直接建立在硬件基础上,磁盘操作系统(DOS)和其他操作系统建立在BIOS基础上,各种高级语言 则建立在操作系统基础上。

用户程序可以使用高级语言,也可以调用DOS 或其他操作系统,还可以调用BIOS,甚至直接指挥硬件设备。

通常应用程序调用DOS提供的系统功能,完成输入/输出或其他操作,这样做用户可以少考虑硬件,实现起来容易。

图8.5 用户程序和操作系统关系示意图应用程序直接对硬件编程的优点是程序的效率高,缺点是需要程序员对硬件性能有较深的了解。

总的来说,编程复杂,所以一般不直接对硬件编程。

BIOS中断程序处于DOS功能调用和硬件环境之间。

和DOS功能调用相比其优点是效率高,缺点是编程相对复杂;和直接对硬件编程相比,优点是实现相对容易,缺点是效率相对低。

在下列情况下可考虑使用BIOS中断:(1)有些功能DOS没有提供,但BIOS提供了;(2)有些场合无法使用DOS功能调用;(3)其他原因。

8.4.2BIOS中断调用方法BIOS的调用实际上是利用每一台计算机中BIOS固有的I/O操作程序来方便地解决自己的问题,由于这些已经在计算机中了,故使用时不必要再把它写入自己的程序,只要指明它的操作位置就可以了。

1.BIOS调用的基本操作由于BIOS中的每一种功能调用往往包含不同的几个操作细节,因此调用时需要说明三部分,基本步骤为:(1)设置分功能号。

按实现的操作功能的要求,给指定寄存器(通常为AH)送入分功能号。

(2)设置入口参数。

按操作要求,给寄存器填写相应参数的内容(某些调用无参数)。

(3)使用中断语句INTn。

执行调用的功能,其中n为中断号。

(4)分析出口参数。

具体步骤如图8.6所示。

图8.6分析出口参数具体步骤例如:MOV AH,0;分功能号为0MOV AL,10H;置入口参数INT 1AH;1AH为中断号,功能为读时间计数器的值2.键盘输入功能调用BIOS中断16H为键盘输入。

16H号中断有三个功能,功能号要求放在AH中,具体功能见表8-3。

图8.7 功能键状态(AH)=0时,读键盘键入的一个ASCII码字符,返回字符码在AL中,扫描码在AH;(AH)=l时,读键盘键入的一个ASCII码字符,并设置ZF 标志位:若按过一键(键盘缓冲区不空),ZF=0,否则ZF=1;(AH)=2时,读特殊功能键的状态送AL,AL各位含义见图8.7表8-3BIOS键盘中断(INT16H)在内存0040: 0017中记录了双态键和组合键的状态,该字节称为键盘状态字节KB-FLAG,其中,高4位表示键Insert、CapsLock、NumLock和 ScrollLock 是ON(=1)还是OFF(=0),低4位表示键Alt、Ctrl、左Shift和右Shift是否按动,若按动,则置1。

这8个键 有时又称为变换键通过INT16H的功能2可以查看上述8个键的状态,有关程序段如下: MOV AH,2INT 16H;取键盘状态送入AL中TEST AL,10000000B;测试键盘状态字节第7位JE INSOFF;如果是0,则转至INS处于OFF的程序段INSOFF:用户通过程序改变键盘状态字节的内容,等效于敲入了对应的键,下面4句汇编语句使Insert键置于ON状态。

MOV AX,0MOV ES,AXMOV AL,10000000BORES:[417H],AL【例8-6】从键盘读入0~9中任一数,根据不同数显示不同的字符串。

要求用BIOS中断来接收键盘输入。

程序如下:STACK SEGMENT PARA STACK;堆栈段定义DB 256 DUP(?)STACK ENDSDATA SEGMENT PARA PUBLIC 'DATA';数据段定义,设每字符THIRTY DB 30;串长30PARM DB 128 DUP(0)MSG0DB'ILIKEIBMPC…'MSG1 DB '8080PROGRAMMINGISRUN…'MSG2 DB 'TIMETOBUYMANYDISKETTES…'MSG3 DB 'THISPROGRAMWORKS…'MSG4 DB 'TURNOFFTHATPRINTER!…'MSG5 DB 'IHAVEMANY…'MSG6 DB 'THEPSPCANBEUSEFUL…'MSG7 DB 'BASICWASEASIERTHENTHIS…'MSG8 DB 'DOSISINDISPESABLE…'MSG9DB'LASTMESSAGEOFTHEDAY..'ERRMSG DB 'ERROR!INVALIDPARAMETER!!!‘DATAENDSCODE SEGMENT PARA PUBLIC 'CODE';代码段START PROC FARASSUME CS:CODEPUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV ES,AXASSUME ES:DATAMOV DX,AXASSUME DS:DATAMOV AH,0;功能号为0INT 16H;键盘输入,字符在AL中SUB AL,'0';减去字符‘0’的ASCII码 JC ERROR;键入字符编码小于30H转 CMP AL,9;是9吗JAE RROR;大于9转,否则顺序执行 MOV BX,OFFSETMSG0;MSG0位移送BX MUL THIRTY;(AL)×30ADD BX,AX;计算输入信息在信息表中的位移CALLDISPLAY;转子显示信息 RET;返回ERROR:MOV BX,OFFSET ERRMSG;出错显示信息位移送BX CALLDISPLAY;转子显示信息 RET;返回DISPLAY PROC NEARMOV CX,30;显示字符个数DISP1:MOV AL,[BX]CALL DISPCHAR;专显示字符子程序 INC BXLOOP DISP1MOVDL,0DH;显示回车符CALL DISPCHARMOV DL,0AH;显示换行符CALL DISPCHARRETDISPLAY ENDPDISPCHAR RPOC NEAR;显示AL中字符号程序PUSH BXMOV BX,0MOV AH,14;14号功能调用为输出字符INT 10HPOP BXRETDISPCHAR ENDPCODE ENDSEND START3.BIOS显示功能调用显示器是微型机系统重要的输出设备。

显示器与微型机之间的接口电路又称做显示适配器(显 示卡)。

显示卡的种类很多,有MDA卡、HGC卡、CGA卡、EGA 卡和VGA卡等。

IBM-PC和PC/XT单色显示器使用单色显示器适配器MDA (MonochromeDisplayAdapter)卡,它不支持图形方式,只支持80列和25行的文本方式。

文本方式又称为字符方式、字符/数字方 式。

IBM-PC和PC/XT彩色显示器使用彩色/图形适配器CGA(ColorGraphicsAdapter)卡,支持文本和图形两种方式且有单色、 彩色两种显示。

有关显示输出的DOS功能调用不多,而BIOS调用(INT10H)的功能很强,主要包括设置显示方式,设置光标大小和位置,设置调色板号,显示字符和显示图形等,见表8-4。

下面做简单介绍。

表8-4中断类型10H的功能调用操作1)显示方式的设置INT10H的0H功能用来设置显示方式,详见表8-4。

方式0~6是CGA卡的工作方式,其中,0~3是文本方式,4~6是图形方式。

方式7是MDA卡的惟一工作方式。

文本方式在屏幕上显示字符,字符在屏幕上的位置用行、列坐标表示,如图8.8所示。

25×80文本方式下的行号为0~24,列号为0~79,则屏幕左上角为第0行、第0列,右下角为第24行、第79列。

也就是说,文本方式下屏幕上显示的字符位置是固定的。

屏幕各行列号所确定的位置的显示内容,由显示卡上的显示存储器的对应位置的存储单元提供,这就是屏幕的“存储器映像”。

即如果向某显示存储器写入字符的ASCII码,字符就会显示在屏幕的相应位置上。

对应的显示在屏幕上的每个字符在存储器中由连续的两个字节表示,一个字节保存字符ASCII码,另一个字节保存字符属性。

在屏幕上仅显示字母、数字和一些字符图形的方式就是文本方式。

在文本方式下字符的属性字节既适用于单色显示也适用于彩色显示。

图8.8 显示器屏幕字符位置图(1)单色字符显示。

该显示方式定义了字符显示的特性,包括字符是否闪烁,是否加亮,是否反显(白底黑字)。

单色字符显示属性字节的各位功能如图8.9所示,各位的不同组合将使字符呈现不同的属性,如表8-5所示。

(2) 彩色字符显示。

在显示彩色文本时,字符的属性字节用于定义前景(显示的字符)和背景的颜色,每个字符可以选择16种颜色中的一种,而背景只能选择8种颜色 之一。

图8.10给出了以16色文本方式显示的属性字节的各位内容。

前景的16种颜色由D0~D3位组合,R、G和B分别代表红(Red)、绿 (Green)和蓝(Blue),BL表示闪烁,I为亮度。

闪烁和亮度仅适用于前景。

表8-6列出了16色字符方式颜色的组合。

图8.10 16色文本方式属性字节内容表8-616种颜色的组合(3) 显示存储器。

对所有的显示适配器,文本方式下显示字符的原理都是一样的,差别仅是不同适配器的视频显示存储器的起始地址不同:MDA的显存起始地址为 B000:0000;CGA、EGA和VGA的显存起始地址为B800:0000。

每个字符的ASCII码和属性码存放于连续的两个字节中。

显示存储单元 与屏幕上字符的对应关系如图8.11所示。

在25 ×80的文本显示方式下,屏幕有2000个字符位置,由于每个字符用两个字节表示,所以需要显存容量为4KB(4000B)。

如果有16KB显存,则可以 保存4屏显示字符的数据,通常称为4页数据。

对CGA、EGA和VGA的80列显示方式,0页在显存中的起始地址为B800:0000,1页为B800: 1000,2页为B800:2000,3页为B800:3000。

相关主题