Presentation is loading. Please wait.

Presentation is loading. Please wait.

第九章 BIOS和DOS中断 在存储器系统中,从地址0FE000H开始的8K ROM(只读存储器)中装有BIOS(Basic Iuput /output System)例行程序。驻留在ROM中的BIOS给PC系列的不同微处理器提供了兼容的系统加电自检,引导装入,主要I/O设备的处理程序以及接口控制等功能模块来处理所有的系统中断。使用BIOS功能调用,给程序员编程带来很大方便,程序员不必了解硬件操作的具体细节,直接用指令设置参数,然后中断调用BIOS中的子功能,所以利用BIOS功能编写的程序简洁,可读性好,

Similar presentations


Presentation on theme: "第九章 BIOS和DOS中断 在存储器系统中,从地址0FE000H开始的8K ROM(只读存储器)中装有BIOS(Basic Iuput /output System)例行程序。驻留在ROM中的BIOS给PC系列的不同微处理器提供了兼容的系统加电自检,引导装入,主要I/O设备的处理程序以及接口控制等功能模块来处理所有的系统中断。使用BIOS功能调用,给程序员编程带来很大方便,程序员不必了解硬件操作的具体细节,直接用指令设置参数,然后中断调用BIOS中的子功能,所以利用BIOS功能编写的程序简洁,可读性好,"— Presentation transcript:

1 第九章 BIOS和DOS中断 在存储器系统中,从地址0FE000H开始的8K ROM(只读存储器)中装有BIOS(Basic Iuput /output System)例行程序。驻留在ROM中的BIOS给PC系列的不同微处理器提供了兼容的系统加电自检,引导装入,主要I/O设备的处理程序以及接口控制等功能模块来处理所有的系统中断。使用BIOS功能调用,给程序员编程带来很大方便,程序员不必了解硬件操作的具体细节,直接用指令设置参数,然后中断调用BIOS中的子功能,所以利用BIOS功能编写的程序简洁,可读性好,而且易于移植。

2 DOS(Disk Operating System)是PC机上最重要的操作系统,它是由软盘或硬盘提供的。它的两个DOS模块IBMBIO
DOS(Disk Operating System)是PC机上最重要的操作系统,它是由软盘或硬盘提供的。它的两个DOS模块IBMBIO.COM和IBMDOS.COM使BIOS用起来更方便,因为DOS模块提供了更多更必要的测试,使DOS操作比使用相应功能的BIOS操作更简易,而且DOS对硬件的依赖性更少些。

3

4

5

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

7 §9.1键盘I/O 键盘和主机通过五芯电缆相连,这五根线分别是电源线、地线、复位线以及键盘数据线和键盘时钟线。PC机系列的键盘触点电路按16行×8列的矩阵来排列,用单片机Intel 8048来控制对键盘的扫描。按键的识别采用行列扫描法,即根据对行线和列线的扫描结果来确定闭合键的位置,并通过键盘数据线将闭合键所对应的扫描码(8位)送往主机。

8 §9.1键盘I/O 字符码与扫描码 当我们在键盘上"按下"或"放开"一个键时,如果键盘中断是允许的(21H端口第1位=0),就会产生一个类型9的中断,并转入到BIOS的键盘中断处理程序。该处理程序从8255可编程序外围接口芯片的输入端口60H读取一个字节,这个字节的低7位是键的扫描码。最高位为0或为1,分别表示键是"按下"状态还是"放开"状态。按下时,取得的字节称为通码,放开时取得的字节称为断码。如按下Esc键时产生一个通码为01H( B),放开Esc键时产生一个断码为81H( B)。  

9 §9.1键盘I/O BIOS键盘中断

10 §9.1键盘I/O

11 §9.1键盘I/O 例9.1 读取键盘状态字节,并以十六进制显示出各位的状态。   AGAIN:   MOV    AH,02H         INT    16H           MOV    BX,AX        CALL    BINIHEX         MOV    DL,0DH         MOV    AH,02H   INT    21H   JMP    AGAIN      

12 §9.1键盘I/O DOS键盘功能调用 上面介绍了BIOS键盘中断(16H),它能同时回送字符码和扫描码,这在使用功能键和变换键的程序中是很重要的。但对一般的键盘操作,我们最好使用适应能力更强的INT 21H中断提供的键盘功能调用。在编写程序时,你会感到使用DOS 21H键盘功能调用非常方便。

13 §9.1键盘I/O

14 §9.1键盘I/O 单字符输入 例9.2   GET_KEY: MOV   AH, 1                INT   21H        CMP   AL,'Y'               JE    YES                 CMP   AL,'N'               JE    NO                  JNE   GET_KEY       

15 §9.1键盘I/O 例9.4         MOV   AH, 7                 INT  21H         CMP   AL, 0                 JE   GET_EC                JMP   ERROR           GET_EC:   MOV   AH, 7         INT  21H         CMP   AL, 3BH                JE   OPTION1         CMP   AL, 3CH                JE   OPTION2         CMP   AL, 3DH                JE   OPTION3         JMP   ERROR        

16 §9.1键盘I/O 输入字符串 中断21H的功能A能从键盘读入一串字符并把它存入用户定义的缓冲区中 缓冲区的第一个字节保存最大字符数
缓冲区的第二个字节是实际输入字符的个数

17 §9.1键盘I/O 例如,在数据区定义的字符缓冲区如下:     MAXLEN  DB  32     ACTLEN  DB  ?     STRING  DB  32 DUP(?)   输入字符串的指令如下:     LEA    DX, MAXLEN         MOV    AH, 0AH          INT   21H

18 §9.1键盘I/O By brooks too broad for leaping↙

19 §9.1键盘I/O .model small .stack .data User_string db 50,0,50 dup (?)
.code Read_keys proc far mov mov ds,ax Lea dx,user_string Mov ah,0ah Int 21h Sub ch,ch Mov cl,user_string+1 add dx,2 Exit: mov ax,4c00h int 21h Read_keys endp end read_keys

20 §9.1键盘I/O 清除键盘缓冲区 从键盘输入的字符实际上先放在一个16字节的键盘缓冲区内,功能1,7,8和0AH实际上是从键盘缓冲区取得字符。   功能0CH的用法如下:   MOV AH, 0CH   MOV AL, 08H   INT 21H

21 §9.1键盘I/O 检验键盘状态 例9.6 SOUNDER: ┆ MOV AH , 0BH INT 21H
         INC    AL               JNZ    SOUNDER            RET         

22 §9.2显示器I/O 显示字符

23 §9.2显示器I/O 文本方式设置 INT 10h AH=0 设置显示方式 AL=00 40×25 黑白文本,16级灰度

24 §9.2显示器I/O 单色字符显示

25 §9.2显示器I/O

26 §9.2显示器I/O 彩色字符显示

27 §9.2显示器I/O

28 §9.2显示器I/O 显示存储器 显存地址B800:0000 假设显存16KB,可保存4屏幕(页)数据
B800:0000,B800:1000,B800:2000,B800:3000 屏幕上某一字符位置在显存中的偏移地址: Char_offset=Page_offset+((row×width)+column)×byte

29 §9.2显示器I/O

30 §9.2显示器I/O   例9.7 计算屏幕上某一字符位置所对应的显存地址      Video_addr  MACRO width,page_num      ;input :DH= row, DL= column      ;output:DI = Char_offset       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

31 §9.2显示器I/O BIOS中断

32 §9.2显示器I/O 控制光标大小、位置 例9.8 置光标开始行为5,结束行为7,并把它设置到第5行第6列。         MOV   CH,5  ;光标开始行         MOV   CL,7  ;光标结束行         MOV   AH,1  ;显现光标         INT   10H    ;BIOS调用 MOV   DH,4  ;5行         MOV   DL,5  ;6列         MOV   BH,0  ;0页         MOV   AH,2  ;设置光标位置         INT   10H    ;BIOS 调用

33 §9.2显示器I/O 读光标位置 例9.9 读0页的当前光标位置。    MOV  AH,3  ;读光标位置    MOV  BH,0  ;0页    INT  10H   ;BIOS 调用 选择显示页 例9.10 选择显示页   MOV  AL,vpage  ;AL = 显示页号   MOV  AH,5    ;功能号   INT  10H     ;BIOS调用

34 §9.2显示器I/O 清屏和卷屏   ;clear screen     mov ah, 6   ;to scroll up screen     mov al, 0   ;blank screen     mov bh, 7   ;blank line     mov ch, 0   ;upper left row     mov cl, 0   ;upper left column     mov dh, 24   ;lower right row     mov dl, 79  ;lower right column     int 10h    ;call video BIOS

35 §9.2显示器I/O 例9.12 清除左上角为(0,0),右下角为(24,39)的窗口,初始化为反相显示,该窗口相当于全屏幕的左半部分。       MOV   AH,7   ;下卷功能       MOV   AL,0   ;清屏       MOV   BH,70H  ;反相显示属性       MOV   CH,0   ;左上行       MOV   CL,0   ;左上列       MOV   DH,24   ;右下行       MOV   DL,39   ;右下列       INT   10H    ;BIOS显示调用 例9.13见书P331

36 §9.2显示器I/O 字符显示 功能09H BH 显示页 AL 显示字符 BL 属性 CX 字符重复的次数 功能0AH

37 §9.2显示器I/O 例9.14 置光标到0显示页的(20,25)位置,并以正常属性显示一个星号'*'。         MOV   AH,2   ;置光标位置       MOV   BH,0   ;0页       MOV   DH,20  ;20行       MOV   DL,25   ;25列       INT   10H    ;BIOS调用       MOV   AH,9   ;写字符       MOV   AL,'*'  ;字符'*'       MOV   BH,0   ;0页       MOV   BL,7   ;正常属性       MOV   CX,1   ;字符重复次数       INT   10H    ;BIOS调用

38 §9.2显示器I/O 例9.15 在0显示页的(11,0)位置读取字符和属性。       MOV   AH,2   ;置光标位置       MOV   BH,0   ;0页       MOV   DH,11   ;11行       MOV   DL,0   ;0列       INT   10H    ;BIOS调用       MOV   AH,8   ;读字符和属性       MOV   BH,0   ;0页       INT   10H    ;BIOS调用

39 §9.2显示器I/O 彩色和字符串显示

40 §9.2显示器I/O 例9.16 在品红背景下,显示5个浅绿色闪烁的星号。
例9.16 在品红背景下,显示5个浅绿色闪烁的星号。    MOV   AH,09   ;显示字符和属性功能   MOV   AL,'*'  ;显示字符   MOV   BH,0    ;0页   MOV   BL,0DAH  ;彩色属性   MOV   CX,05   ;字符显示次数   INT   10H     ;BIOS调用

41 §9.2显示器I/O 13H 共有4种工作方式,AL=0,1要指定整个显示字符串的属性,AL=2,3要指定每个字符的属性 例9.17,例9.18

42 §9.2显示器I/O DOS显示功能调用

43 §9.4串行通信口I/O 并行 串行 异步方式 一次传送一个数据块 同步方式 一次传送一个字节

44 §9.4串行通信口I/O 波特率 比特率

45 §9.4串行通信口I/O 串口功能调用 AH 功能 调用参数 返回参数 3 从串行通信口读一个字符 AL=输入的8位数据 4
DOS串口通信口功能 AH 功能 调用参数 返回参数 3 从串行通信口读一个字符 AL=输入的8位数据 4 向串行通信口写一个字符 DL=输出的8位数据

46 §9.4串行通信口I/O 例9.24 从串行通信口输入一字符并存入INPUT_CHAR单元中。    MOV   AH, 3      ; 从串行通信口读字符    INT   21H       ; DOS调用    MOV   INPUT_CHAR, AL ; 输入字符在AL中      .      .    INPUT_CHAR DB 0

47 §9.4串行通信口I/O 例9.25 将字符串HELLO输出到串行通信口。      MOV   BX, SEG BUFFER   ; DS: BX = 串地址      MOV   DS, BX      MOV   BX, OFFSET BUFFER      MOV   CX, BUF_LEN     ; CX = 串长度   NEXT: MOV   DL, [BX]      ; 取字符      MOV   AH, 4        ; 通信口输出      INT   21H        ; DOS调用      INC   BX         ; 指针加1      LOOP   NEXT      .      .   BUFFER DB   'HELLO'   BUF_LEN EQU  $-BUFFER

48 §9.4串行通信口I/O 串口功能调用 BIOS串行口通信功能(INT 14h)

49 §9.4串行通信口I/O

50 §9.4串行通信口I/O


Download ppt "第九章 BIOS和DOS中断 在存储器系统中,从地址0FE000H开始的8K ROM(只读存储器)中装有BIOS(Basic Iuput /output System)例行程序。驻留在ROM中的BIOS给PC系列的不同微处理器提供了兼容的系统加电自检,引导装入,主要I/O设备的处理程序以及接口控制等功能模块来处理所有的系统中断。使用BIOS功能调用,给程序员编程带来很大方便,程序员不必了解硬件操作的具体细节,直接用指令设置参数,然后中断调用BIOS中的子功能,所以利用BIOS功能编写的程序简洁,可读性好,"

Similar presentations


Ads by Google