第九章 bios 和 dos 中断

17
第第第 BIOS 第 DOS 第第 第第第第第 第 第第第 0FE000H 第第第 8KBROM 第第第第第第第第第第 第第第第 第第 第第 BIOS 第第第第第第第第第 第第第第第 第第第第第第第 、,。 第第第第第DOS 第 PC 第第第第第第第第 第第第第第第第第 ,: IBMBIO.COM 第第第第第第第第第第第 :。 IBMDOS.COM 第第第 第第第第第第第第第 第第第第第第 :一一。 DOS 第第第 BIOS 第第第第第第第第第第第 第第第第第第 ,: 1 第第第第第第第第第第第第第第 2 第第第第第第 第第第第 ), AH 3 第第第第第第第 第第第第 ), AL 4 第第第第第第 DOS 第 BIOS 第第 5 第第第第第第第第第第

Upload: mahsa

Post on 28-Jan-2016

73 views

Category:

Documents


0 download

DESCRIPTION

第九章 BIOS 和 DOS 中断. 在存储器系统中,从地址 0FE000H 开始的 8KB ROM 中装有基本输入输出系统例行程序。 优点:利用 BIOS 功能编写的程序简洁、可读性强,而且易于移植。 磁盘操作系统 DOS 是 PC 机最重要的操作系统,有两个程序模块: IBMBIO.COM :输入输出设备处理程序。 IBMDOS.COM :包括一个文件管理程序和一些处理程序。 DOS 功能和 BIOS 功能都通过软件中断调用,其调用步骤: ( 1 )将调用的参数装入指定的寄存器 ( 2 )如需功能号,把它装入 AH - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第九章  BIOS 和 DOS 中断

第九章 BIOS 和 DOS 中断 在存储器系统中,从地址 0FE000H 开始的 8KBROM 中装有基本输入输出系统例行程序。

优点:利用 BIOS 功能编写的程序简洁、可读性强,而且易于移植。

磁盘操作系统 DOS 是 PC 机最重要的操作系统,有两个程序模块:

IBMBIO.COM :输入输出设备处理程序。 IBMDOS.COM :包括一个文件管理程序和一些处理程序。

DOS 功能和 BIOS 功能都通过软件中断调用,其调用步骤: ( 1 )将调用的参数装入指定的寄存器 ( 2 )如需功能号,把它装入 AH ( 3 )如需子功能号,把它装入 AL ( 4 )按中断号调用 DOS 和 BIOS 中断 ( 5 )检查返回参数是否正确

Page 2: 第九章  BIOS 和 DOS 中断

9.1 键盘 I/O 键盘是计算机最基本的一种输入设备,用来输入信息,以达到人机对话的目的。主要由三种基本类型键组成: 字符数字键: A~Z 、 a~z 、 0~9 、 % 、 # 、 $ 等 扩展功能键:如 Home 、 End 、 Backspace 、 Delete 、 Insert 、 PgUp 、 PgD 以及程序功能键 F1~F10 等 和其他键组合使用的控制键:如 Alt 、 Ctrl 、 Shift 等

注意:字符数字键给计算机传送一个 ASCII 码字符,而扩展功能键产生一个动作。

键盘和主机通过五芯电缆连接,五根线分别是:电源线、地线、复位线、键盘数据线、键盘时钟线。

Page 3: 第九章  BIOS 和 DOS 中断

扫描码

当在键盘上“按下”或“放开”一个键时,如果键盘中断是

允许的( 21H 的端口第一位是 0 ),就会产生一个类型为 9的

中断,并转入到 BIOS 的键盘中断处理程序。

该处理程序从 8255 可编程外围接口芯片的输入端口 60H

读取一个字节。

字节的低七位:扫描码

字节的最高位: 0 :表示“按下”状态,该字节称为通码

1 :表示“放开”状态,该字节称为段码

字符码

BIOS 处理程序把取得的扫描码转换成相应的字符码,大

部分键的字符码是一个标准的 ASCII 码。

Page 4: 第九章  BIOS 和 DOS 中断

转换成的字符码以及扫描码存储在 ROM BIOS 数据区的键盘缓冲区 KB_BUFFER 中 .

0040: 001A   BUFF _HEAD DW ?

0040: 001C BUFF _TAIL DW ?

0040: 001E KB _BUFFER DW 16 DUP (?)

0040: 003E KB _BUFFER _END LABEL WORD

注意:该缓冲区是一个先进先出的循环队列, BUFF _HEAD 和 BUFF _TAIL 是缓冲区的两个地址指针。

当这两个地址指针相等时,说明缓冲区是空。

当缓冲区已满又按下一个键时, BIOS 不处理这个键,并发出“嘀”的声音。

Page 5: 第九章  BIOS 和 DOS 中断

BIOS 键盘中断( INT 16H )

AH=0 :从键盘读一个字符

返回参数: AL= 字符码 AH= 扫描码

AH=1 :读数据缓冲区的字符

返回参数:当 ZF=0 时

AL= 字符码 AH= 扫描码

当 ZF=1 时

缓冲区空

AH=2 :读键盘状态字节

返回参数: AL= 键盘状态字节

Page 6: 第九章  BIOS 和 DOS 中断

DOS 键盘功能调用 ( INT 21H )

单字符输入

AH=1 :键盘输入并回显(可用 ctrl+c 或 ctrl+break 自动退出 )

AH=8 : 不回显键盘输入(可用 ctrl+c 或 ctrl+break 自动退出 )

AH=7 :直接键盘输入

( 不支持 ctrl+c 或 ctrl+break 退出 , 也不回显 )

入口参数:无

出口参数: AL= 输入字符的 ASCII 码

AH=6 :直接读写控制台

( DL ) =00H~0FEH 时,请求输出字符

( DL ) =0FFH 时,请求读键盘字符

Page 7: 第九章  BIOS 和 DOS 中断

输入字符串

AH=0AH :从键盘输入一串字符并把它存入用户定义的缓冲区中

缓冲区:第一个字节保存最大字符数(由用户给出)

第二个字节保存实际输入字符数(由计算机自动填入)

之后的字节存放字符串(包括结束标志回车在内)

缓冲区的长度 = 最大字符数 + 2

检验键盘状态

AH=0BH :检验键盘是否被按动,若按动, AL=0FFH

否则, AL=00H

Page 8: 第九章  BIOS 和 DOS 中断

清除键盘缓冲区

AH=0CH :清除键盘缓冲区,然后执行 AL 中指定的功能。

AL=1 、 6 、 7 、 8 或 0AH

例: MOV AH , 0CH

MOV AL , 08H

INT 21H

优点:可以避免由于偶然超前输入的字符而出现的错误。

Page 9: 第九章  BIOS 和 DOS 中断

9.2 显示器 I/O

显示器通过显示适配器与 PC 机连接,显示器可以简单的分成单色显示器和彩色显示器。

显示适配器也称为显示卡,可分为:

单色显示适配器( MDA )

彩色图形适配器( CGA )

增强型图形适配器( EGA )

视频图形阵列适配器( VGA )

Page 10: 第九章  BIOS 和 DOS 中断

字符属性

显示器的屏幕通常划分为行和列的一个二维系统,显示适配器并在行和列组成的网格位置上显示字符。

例如: 25 行 × 80 列的屏幕0 × 0

24 ×7924× 0

0 × 79

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

Page 11: 第九章  BIOS 和 DOS 中断

字符显示

单色字符显示:字符的属性定义了字符的显示特征。

彩色字符显示:属性字节能够选择前景(显示的字符)和背景

的颜色。

显示存储器(显存)

对于所有的显示适配器,文本方式下显示字符的原理都是一样的,所不同的是各种适配器的视频显示存储器的起始地址不同:

MDA 显存的起始地址为: B000H : 0000H

CGA 、 EGA 、 VGA 显存的起始地址为 B800H : 0000H

Page 12: 第九章  BIOS 和 DOS 中断

屏幕上某一字符位置在显存中的偏移地址为:

Char_offset = page_offset + ( (row × width) +column) × byte

其中: Char_offset 是在显存中的偏移地址

page_offset 是页偏移地址

row 是行号

column 是列号

width 是每行可显示的字符数

byte 在显存中表示每个字符所用的字节数

Page 13: 第九章  BIOS 和 DOS 中断

VIDEO MACRO WIDTH , PAGE _NUM

PUSH AX

MOV AL , WIDTH

MUL DH

XOR DH , DH

ADD AX , DX

SHL AX , 1

ADD AX , PAGE_NUM*1000H

MOV DI , AX

POP AX

ENDM

例 9.7

Page 14: 第九章  BIOS 和 DOS 中断

BIOS 显示中断( INT 10H )控制光标

AH=1 :控制光标的行的开始和结束,控制光标的显现和关闭

(CH)0~3 = 光标开始行 (CH)4 = 1: 光标关闭

(CL)0~3 = 光标结束行 (CH)4 = 0: 光标显现

AH=2 :设置光标的位置。

(BH)=页号 (DH)= 行号 (DL)= 列号

读光标位置

AH=3 :读光标的位置,页好必须在 BH 中指定。

(DH)= 行号 (CH)=光标开始行

(DL)= 列号 (CL)=光标结束行

Page 15: 第九章  BIOS 和 DOS 中断

清屏和卷屏

AH=6 :使屏幕内容上卷指定的行。

AH=7 :使屏幕内容下卷指定的行。

字符显示

AH=09H :把一个字符及其属性送到显示屏幕,然后光标返

回到它的初始位置。

AH=0AH :只把字符送到显示屏幕,然后光标返回到它的

初始位置。

AH=08H :可读取当前光标位置的字符及其属性。

Page 16: 第九章  BIOS 和 DOS 中断

彩色和字符串显示

AH=09H :显示彩色字符时, BL 中设置的数据应为前景和

背景属性值。

AH=13H :显示字符串有 4 种方式:

AL=0 或 1 ,必须指定整个显示字符串的属性。

AL=2 或 3 ,必须指定每个字符的属性。

Page 17: 第九章  BIOS 和 DOS 中断

DOS 显示功能调用( INT 21H )AH=2 :显示一个字符(检验 Ctrl+Beak )

入口参数: DL= 字符

AH=6 :显示一个字符(不检验 Ctrl+Beak )

入口参数: DL= 字符

AH=9 :显示字符串

入口参数: DS : DX= 串地址(‘ $’ 结束标志)