1 / 17

第九章 BIOS 和 DOS 中断

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

mahsa
Download Presentation

第九章 BIOS 和 DOS 中断

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 9.1 键盘I/O • 键盘是计算机最基本的一种输入设备,用来输入信息,以达到人机对话的目的。主要由三种基本类型键组成: • 字符数字键:A~Z、a~z、0~9、%、#、$ 等 • 扩展功能键:如Home、End、Backspace、Delete、Insert、PgUp、PgD以及程序功能键F1~F10等 • 和其他键组合使用的控制键:如Alt、Ctrl、Shift等 注意:字符数字键给计算机传送一个ASCII码字符,而扩展功能键产生一个动作。 键盘和主机通过五芯电缆连接,五根线分别是:电源线、地线、复位线、键盘数据线、键盘时钟线。

  3. 扫描码 当在键盘上“按下”或“放开”一个键时,如果键盘中断是 允许的(21H的端口第一位是0),就会产生一个类型为9的 中断,并转入到BIOS的键盘中断处理程序。 该处理程序从8255可编程外围接口芯片的输入端口60H 读取一个字节。 字节的低七位:扫描码 字节的最高位:0:表示“按下”状态,该字节称为通码 1:表示“放开”状态,该字节称为段码 字符码 BIOS处理程序把取得的扫描码转换成相应的字符码,大 部分键的字符码是一个标准的ASCII码。

  4. 转换成的字符码以及扫描码存储在ROM BIOS数据区的键盘缓冲区KB_BUFFER中. 0040: 001ABUFF _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不处理这个键,并发出“嘀”的声音。

  5. BIOS键盘中断(INT 16H) AH=0:从键盘读一个字符 返回参数:AL=字符码 AH=扫描码 AH=1:读数据缓冲区的字符 返回参数:当ZF=0时 AL=字符码 AH=扫描码 当ZF=1时 缓冲区空 AH=2:读键盘状态字节 返回参数:AL=键盘状态字节

  6. 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时,请求读键盘字符

  7. 输入字符串 AH=0AH:从键盘输入一串字符并把它存入用户定义的缓冲区中 缓冲区:第一个字节保存最大字符数(由用户给出) 第二个字节保存实际输入字符数(由计算机自动填入) 之后的字节存放字符串(包括结束标志回车在内) 缓冲区的长度 = 最大字符数 + 2 检验键盘状态 AH=0BH:检验键盘是否被按动,若按动,AL=0FFH 否则,AL=00H

  8. 清除键盘缓冲区 AH=0CH:清除键盘缓冲区,然后执行AL中指定的功能。 AL=1、6、7、8或0AH 例: MOV AH,0CH MOV AL,08H INT 21H 优点:可以避免由于偶然超前输入的字符而出现的错误。

  9. 9.2 显示器I/O 显示器通过显示适配器与PC机连接,显示器可以简单的分成单色显示器和彩色显示器。 显示适配器也称为显示卡,可分为: 单色显示适配器(MDA) 彩色图形适配器(CGA) 增强型图形适配器(EGA) 视频图形阵列适配器(VGA)

  10. 0 × 79 0 × 0 24× 0 24 ×79 字符属性 显示器的屏幕通常划分为行和列的一个二维系统,显示适配器并在行和列组成的网格位置上显示字符。 例如:25行× 80列的屏幕 对应屏幕上的每个字符,在存储器中由连续的两个字节表示,一个字节保存ASCII码,另一个字节保存字符的属性。

  11. 字符显示 单色字符显示:字符的属性定义了字符的显示特征。 彩色字符显示:属性字节能够选择前景(显示的字符)和背景 的颜色。 显示存储器(显存) 对于所有的显示适配器,文本方式下显示字符的原理都是一样的,所不同的是各种适配器的视频显示存储器的起始地址不同: MDA显存的起始地址为:B000H:0000H CGA、EGA、VGA显存的起始地址为B800H:0000H

  12. 屏幕上某一字符位置在显存中的偏移地址为: Char_offset = page_offset + ( (row × width) +column) × byte 其中: Char_offset 是在显存中的偏移地址 page_offset 是页偏移地址 row 是行号 column是列号 width是每行可显示的字符数 byte在显存中表示每个字符所用的字节数

  13. 例9.7 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

  14. 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)=光标结束行

  15. 清屏和卷屏 AH=6:使屏幕内容上卷指定的行。 AH=7:使屏幕内容下卷指定的行。 字符显示 AH=09H:把一个字符及其属性送到显示屏幕,然后光标返 回到它的初始位置。 AH=0AH:只把字符送到显示屏幕,然后光标返回到它的 初始位置。 AH=08H:可读取当前光标位置的字符及其属性。

  16. 彩色和字符串显示 AH=09H:显示彩色字符时,BL中设置的数据应为前景和 背景属性值。 AH=13H:显示字符串有4种方式: AL=0或1,必须指定整个显示字符串的属性。 AL=2或3,必须指定每个字符的属性。

  17. DOS显示功能调用(INT 21H) AH=2:显示一个字符(检验Ctrl+Beak) 入口参数:DL=字符 AH=6:显示一个字符(不检验Ctrl+Beak) 入口参数:DL=字符 AH=9:显示字符串 入口参数:DS:DX=串地址(‘$’结束标志)

More Related