《BIOS和DOS中断.ppt》由会员分享,可在线阅读,更多相关《BIOS和DOS中断.ppt(89页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、BIOS和DOS中断调用程序设计,第9章,BIOS中断和DOS中断,在存储器系统中,内存从0FE000H高端8K的ROM中存放有基本输入输出系统(Basic Input/Output System,BIOS)例行程序。BIOS给PC系列的不同微处理器提供了兼容的系统加电自检、引导装入、主要I/O设备的处理程序以及接口控制等功能模块来处理所有的系统中断。 使用BIOS功能调用,给程序员编程带来极大方便。程序员不必了解硬件的具体细节,可直接使用指令设置参数,并中断调用BIOS例行程序,所以利用BIOS功能调用编写的程序简洁,可读性好,而且易于移植,磁盘操作系统(Disk Operating Sys
2、tem)是PC机上最重要的操作系统,它是由软盘或硬盘提供的。它的两个DOS模块IBMBIO.COM和IBMDOS.COM使BIOS使用起来更方便。因为DOS模块提供了更多更必要的测试,使用DOS操作比使用相应功能的BIOS操作更简易,而且DOS对硬件的依赖性更少些。 DOS模块和ROM BIOS的关系如下图所示。,DOS中断和BIOS中断使用方法,DOS功能调用与BIOS功能都通过软件中断调用。在中断调用前需要把功能号装入AH寄存器,把子功能号装入AL寄存器,除此之外,还需要在CPU的寄存器中提供专门的调用参数。一般来说,调用DOS或BIOS功能时,有以下几个步骤: (1)将调用参数装入指定的
3、寄存器。 (2)如需功能调用号,把它装入AH。 (3)如需子功能调用号,把它装入AL。 (4)按中断号调用DOS或BIOS。 (5)检查返回参数是否正确。,表9.1 BIOS中断类型,地址(Hex) 类型码 中断名称 03 0 除法错 47 1 单步 8B 2 非屏蔽 CF 3 断点 1013 4 溢出 1417 5 打印屏幕 181B 6 保留 1D1F 7 保留 2023 8 定时器 2427 9 键盘 282B A 保留的硬中断 2C2F B 异步通信(COM2) 3033 C 异步通信(COM1) 3437 D 硬盘 383B E 软盘 3C3F F 并行打印机,地址(Hex) 类型码
4、 中断名称 4043 10 视频显示I/O调用 4447 11 设备检测调用 484B 12 存储器容量检测 4C4F 13 软/硬盘I/O调用 5053 14 通信I/O调用 5457 15 盒式磁带I/O调用 585B 16 键盘I/O调用 5C5F 17 打印机I/O调用 6063 18 ROM BASIC 6467 19 引导程序入口 686B 1A 时间调用 6C6F 1B 键盘CTRL-BREAK控制 7073 1C 定时器报时 7477 1D 显示器参数表 787B 1E 软盘参数表 7C7F 1F 字符点阵结构参数表,表9.2 DOS中断类型,9.1 键盘I/O,9.1.1 A
5、SCII与扫描码 9.1.2 BIOS键盘中断 9.1.3 DOS中断调用,9.1.1 ASCII与扫描码,键盘是计算机最基本的一种输入设备,用来输入信息,以达到人机对话的目的。键盘主要由3种基本类型的键组成: (1)字符数字键: (2)扩展功能键:如Home、End、Backspace、Delete、Insert、PgUp、PgDown以及功能键F1F10 (3)和其他键组合使用的控制键:如Alt,Ctrl,Shift等,键盘和主机通过5芯电缆相连,这5根线分别是电源线、地线、复位线以及键盘数据线和键盘时钟线。PC机系列的键盘触点电路按16行8列的矩阵来排列,用单片机Intel8048来控制
6、对键盘的扫描。按键的识别采用行列扫描法,即根据对行线和列线的扫描结果来确定闭合键的位置,这个位置值称为按键的扫描码,通过数据线将8位扫描码送往主机。当在键盘上“按下”或“放开”一个键时,如果键盘中断是允许的(21H端口的第一位等于0),就会产生一个类型9的中断,并转入到BIOS的键盘中断处理程序。,该处理程序从8255可编程外围接口芯片的输入端口读取一个字节,这个字节的低7位是按键的扫描码。最高位为0或者为1,分别表示键是“按下”状态还是“放开”状态。按下时,取得的字节称为通码,放开时取得的字节称为断码。 如: 按下ESC键取得的通码为01H(00000001B), 放开ESC键时会产生一个断
7、码81H(10000001B)。 BIOS键盘处理程序将取得的扫描码转换成相应的字符码,大部分的字符码是一个标准的ASCII码;没有相应ASCII的键,如Alt和功能键(F1F10),字符码为0;还有一些非ASCII码键产生一个指定的操作。,键盘缓冲区 键盘缓冲区是一个先进先出的环形队列,其所占内存区域如下:,键盘缓冲区是一个环形队列,Buff_Head和Buff_Head是缓冲区的两个指针,当缓冲区满时,系统将不再接受按键信息,而会发出“嘟”的声音,以示要暂缓按键。当KBHeadKBTail时,表示无键盘输入。,Buff_Head DW? ;其内存地址为0000:041AH,缓冲区头指针 B
8、uff_Tail DW? ;其内存地址为0000:041CH,缓冲区尾指针 KBBuff DW16 DUP(?) ;其内存地址为0000:041EH,该缓冲区 的缺省长度为16个字,9.1.2 BIOS键盘中断,类型 16H 的中断提供了基本的键盘操作,它的中断处理程序包括3个不同的功能,分别根据AH寄存器中的子功能号来确定。 (1)AH=0 本功能为从键盘读字符到AL寄存器中。(AL=字符ASCII码,AH=扫描码) (2)AH=1 本功能为读键盘缓冲区字符到AL寄存器中, 并置ZF标志位。(若ZF=0,则AL=字符码,AH=扫描码, ZF=1,缓冲区空) (3)AH=2 本功能为读取特殊功
9、能键的状态。(AL=键盘状态字节),mov ah, 0 int 16h mov BX,AX,从键盘读字符,在计算机键盘上除了可输入各种字符(字母、数字和符号等)的按键之外,还有一些功能键(如:F1、F2、等)、控制键(如:Ctrl、Alt、Shift等)、双态键(如:Num Lock、Caps Lock等)和特殊请求键(如:Print Screen、Scroll Lock等)。 键盘中的控制键和双态键是非打印按键,它们是起控制或转换作用的。当使用者按下控制键或双态键时,系统要记住其所按下的按键。INT 16H的AH=2的功能可以把表示这些键盘状态的字节(称为键盘状态字节)回送的AL寄存器。状态
10、字节如图:,键盘状态字节,1按下右移键Right Shift,1按下左移键Left Shiftv,1按下Ctrl,1按下Alt,1Scrll Lock状态已改变,1Num Lock状态已改变,1Caps Lock状态已改变,1Insert状态已改变,键盘状态字节,Again: mov ah, 2 int 16h mov bx,ax call binihex mov dl,0dh mov ah,2 int 21h jmp again,例9.1 读取键盘状态字,并以十六进制显示,9.1.3 DOS键盘功能调用(INT 21H),无,get_key:mov ah, 1 int 21h cmp al
11、, y je yes cmp al, n je no jne get_key,1)单字符输入 例9.2 接收键盘输入并对其进行测试。,wait_here: mov ah, 7 int 21h cmp al, 0dh jne wait_here,例9.3 检测键盘输入的字符是否是回车键。,mov ah,7 int 21h cmp al,0 je get_ec jmp error get_ec: mov ah,7 int 21h cmp al,3bh;F1 je option1 cmp al,3ch;F2 je option2 jmp erroe,如果程序要求能接收功能键或数字组合键必须进行两次D
12、OS功能调用: 第一次回送00 第二次回送扫描码,例9.4 检测键盘输入的功能键。,data segment smax db 21 sact db ? stri db 21 dup(?) data ends code segment assume cs:code,ds:data Start:mov ax,data mov ds,ax lea dx, stri mov ah,0ah int 21h mov ah,4ch int 21h code ends End start,(1) smax db 21 sact db ? stri db 21 dup(?) (2) smax db 21 db
13、? db 21 dup(?) (3)smax db 21, ?, 21 dup(?),例9.5 输入字符串程序,2)输入字符串,Int 21的功能0ch能清除键盘缓冲区,然后执行在AL中指定的功能。AL中指定的功能可以是1,6,7,8或0AH。, mov ah, 0ch mov al, 08h int 21h inc al je exit Exit:,3)清除键盘缓冲区,例9.6 检测是否有键盘输入, mov ah, 0bh int 21h inc al je exit Exit:,4)检验键盘状态,显示器可以简单的分为单色显示器和彩色显示器。随着显示技术的发展,种类也更加丰富,常见的有阴极摄
14、像管(CRT)、液晶显示器、等离子显示器等。 显示器是通过显卡与主机相连。显示器的显示屏通常称之为屏幕,现在常用的显示器有14和17,常用的显示分辨率为800600或1024768等。常用的显示卡类型为VGA、SVGA、EVGA和TVGA等,显示卡上也都带有大量的显示存储器,能快速显示精美的图象。 1MDA MDA(Monochrome Display Adapter )属于单色显示适配器,是IBM最早研制的视频显示适配器。 2CGA 在MDA推出的同时,IBM也推出了彩色图形显示适配器CGA(Color Graphics Adapter)。,9.2 显示器I/O,3EGA 增强图形显示适配器
15、EGA(Enhanced Graphics Adapter)是IBM公司推出的第二代图形显示适配器,它兼容了MDA和CGA的全部功能。 4VGA 视频图形阵列显示适配器VGA(Video Graphics Array)是IBM公司推出的第三代图形显示适配器,它兼容了MDA、CGA和EGA的全部功能。 5. XGA XGA(Extended Graphics Array)是IBM公司继VGA之后推出的扩展图形显示适配器。,显示模式 计算机系统中的显示器都有二种显示方式:文本显示方式和图形显示方式。 在DOS操作系统环境下,其默认的显示方式为文本显示方式,而在Windows操作系统环境下,其显示方
16、式是图形显示方式,其绝大多数操作界面是以图形界面的窗口形式出现的。,文本显示方式 文本显示方式是指以字符为最小单位的显示方式,每个字符都是以矩形块形式显示的。在BIOS ROM中存有多种不同大小的字符集,主要的显示字符集大小为:88(标准)、814和816等。 在常用的文本显示模式(模式3)下,屏幕被划分成25行,每行可显示80个字符,所以,每屏最多可显示2000(8025)个字符。为了便于标识屏幕上的每个显示位置,我们就用其所在行和列来表示之,并规定:屏幕的左上角坐标为(0, 0),右下角坐标为(24, 79)。 在显示字符时,用一个字节存储该字符的ASCII码,用另一个字节存储的显示属性,
17、即:显示颜色。 在8025的文本显示模式下,满屏可显示2000个字符,也就需要4000个字节来存储一屏的显示信息。,图形显示方式 图形显示是目前最常用的一种显示方式,也是Windows操作系统的默认显示方式。在该显示方式下,我们可以看到优美的图象、VCD、浏览丰富多彩的网页等。 图形显示的最小单位是象素,对每个象素可用不同的颜色来显示。所以,在显示缓冲区内记录的信息是屏幕各象素的显示颜色。 由于各种图形显示模式所能显示的颜色和象素是不同的,它决定了显示缓冲区的存储方式也是不同的。下面给出三个具体的图形显示模式及其存储方式,通过它们可看出各种显示模式在显示缓冲区存储方式上的明显差异。,4色320
18、200图形显示模式 由于每个象素只能是四种颜色之一,而四种情况用2位二进制就可表示,所以,一个字节可表示4个象素的显示颜色,存储一行上的所有象素信息就需要80个字节。 在具体存储过程中,它又把偶数行象素和奇数行分开来存储。偶数行和奇数行的象素总数各有32000个,也都需要8000个字节来存储,并规定: 偶数行象素从0B800:0000H开始存储, 奇数行象素从0B800:2000H开始存储。 该显示模式的存储形式如图所示。,16色640480图形显示模式 640480图形显示模式共有307200个象素,每个象素可选用16种颜色,它需要用4位二进制来表示。该显示模式在存储显示信息时,把该4位分在
19、四个位平面P1、P2、P3和P4上,所以,位平面Pi(i=1,2,3,4)共有307200个二进制位,即有38400个字节。其显示缓冲区的存储形式如图所示。,256色320200图形显示模式 表达256种不同颜色需要8位二进制,即一个字节。在该模式下,其显示缓冲区的存储方式是非常简单的,即:第一个字节存储第一个象素的颜色,第二个字节存储第二个象素的颜色,以此类推,所以,存储满屏象素所需要的字节数为:320200164000。其显示缓冲区的存储方式如图所示。,从上面三种不同图形显示模式的介绍,不难看出:各种显示模式在显示缓冲区存储方式上的明显差异,操作象素方法的难易程度相差也很大,所以,程序员不
20、要用直接操作显示缓冲区的办法来达到改变显示象素的目的,最好是通过BIOS内的中断功能来实现相应的功能,这样,所编写的程序能很方便地适应不同的图形显示模式。,9.2.1 字符属性 显示器的屏幕通常划分为行和列的二维系统,显示适配器就在行列组成的网格位置上显示字符。对应屏幕上的每个字符位置,主存空间都有相应的存储单元与之对应,因此可说是显示屏幕式“存储器的映像”。对应显示屏幕上的每个字符,在存储器中由连续的两个字节表示,一个字节表示ASCII码,另一个字节保存字符的属性。,单色显示的属性值,7 6 5 4 3 2 1 0,背景,前景,闪烁,亮度,1、单色字符属性,2、彩色字符显示,彩色字符显示属性
21、字节,背景颜色组合,前景颜色组合,3. 显示存储器,对于所有的显示适配器,文本方式下显示字符的原理是一样的,所不同的是显存的起始地址不同,对于MDA,显存的起始地址为B000:0000;对于CGA、EGA、VGA是B800:0000.每个字符的ASCII码和属性码字节存放于两个连续的字节中。图形显示方式下,其显示缓冲区段地址为0A000H。 在25 X 80的文本显示方式下,屏幕可有2000个字符位置,因每个字符需要用两个字节,显存容量需要多少?如果显存有16K,可保存几屏幕的数据?对CGA,EGA和VGA的80列显示方式,0页的起始地址是B800:0000,1页的起始地址是B800:1000
22、,2页的起始地址为B800:2000,3页的起始地址为B800:3000 。 例9.7 计算一个字符在显存中的位置(P327),9.2.2 BIOS显示中断调用,10H中断调用为显示器中断,共有17种功 能。下面列出几种主要功能的使用情况。 (1)设置显示方式(0号功能) 入口参数:AH=0(功能号),AL=设置方式(07)。 出口参数:无。 (2)设置光标类型(1号功能) 入口参数:AH=1(功能号),CH=光标开始行,CL=光标结束行。 出口参数:无。根据CX给出光标的大小。,(3)设置光标位置(2号功能) 入口参数:AH=2(功能号),BH=页号,DH=行号,DL=列号。 出口参数:无。
23、根据DX确定了光标位置。 (4)读当前光标位置(3号功能) 入口参数;AH=3(功能号),BH=页号。 出口参数:DH=行号,DL=列号,CX=光标大小。 (5)初始窗口或向上滚动(6号功能) 入口参数:AH=6,AL=上滚行数,CX=上滚窗口左上角的行、列号。DX=上滚窗口右下角的行、列号。BH=空白行的属性。 出口参数:无。当滚动后,底部为空白输入行。,(6)初始窗口或向下滚动(7号功能) 入口参数:AH=7,AL=下滚行数,CX=下滚窗口左上角的行、列号。DX=下滚窗口右下角的行、列号。BH=空白行的属性。 出口参数:无。当滚动后,顶部为空白输入行。 (7)读当前光标位置的字符与属性(8
24、号功能) 入口参数:AH=08H,BH=页号。 出口参数:AL为读出的字符,AH为字符属性。,(8)在当前光标位置写字符和属性(9号功能) 入口参数:AH=9,BH=页号,AL=字符的ASCII码,BL=字符属性,CX=写入字符重复次数。 出口参数:无。 (9)在当前光标位置写字符(10号功能) 入口参数:AH=0AH,BH=页号,AL=字符的ASCII码,CX=写入字符重复次数。 出口参数:无。,(10)显示字符串(13号功能) ES:BP=串地址 CX=串长度 DH,DL=起始行列 BH=页号 AL=0,BL=属性 串:char,charchar 光标返回到起始位置 AL=1,BL=属性
25、串:char,charchar 光标跟随串移动 AL=2 串:char,charchar 光标返回起始位置 AL=3 串:char,charchar 光标跟随串移动,mov ch,5 mov cl,7 mov ah,1 int 10h mov dh,5 mov dl,6 mov bh,0 mov ah,2 int 10h,例9.8 置光标开始行为5,结束行为7,并把它设置到第5行第6列,设置光标位置(2号功能) 入口参数:AH=2(功能号),BH=页号,DH=行号,DL=列号。 出口参数:无。根据DX确定了光标位置。,设置光标类型(1号功能) 入口参数:AH=1(功能号),CH=光标开始行,C
26、L=光标结束行。 出口参数:无。根据CX给出光标的大小。,例9.9 读第0页当前光标位置,MOV AH,3 MOV BH,0 INT 10H,结果DH和DL中分别存放光标行号和列号,而CH和CL中则存放光标大小参数,例9.10 选择显示页,MOV AL, vpage MOV AH,5 INT 10H,例9.11 编写清除全屏幕的程序,Clear_screen proc far ( push ax,bx,cx,dx) mov ah,6 mov al,0 mov bh,7 mov ch,0 mov cl,0 mov dh,24 mov dl,79 int 10h mov dx,2 mov ah,2
27、 int 10h ( pop dx,cx,bx,ax) ret clear_screen endp,初始窗口或向上滚动(6号功能) 入口参数:AH=6,AL=上滚行数,CX=上滚窗口左上角的行、列号。DX=上滚窗口右下角的行、列号。BH=空白行的属性。 出口参数:无。当滚动后,底部为空白输入行。,设置光标位置(2号功能) 入口参数:AH=2(功能号),BH=页号,DH=行号,DL=列号。 出口参数:无。根据DX确定了光标位置。,例9.12 清除左上角为(00)右下角为(24,39)的窗口,初始化为反相显示。该窗口相当于屏幕的左上角,mov ah,7 mov al,0 mov bh,70h mo
28、v ch,0 mov cl,0 mov dh,24 mov dl,39 int 10h mov dx,2 mov ah,2 int 10h,设置光标位置(2号功能) 入口参数:AH=2(功能号),BH=页号,DH=行号,DL=列号。 出口参数:无。根据DX确定了光标位置。,初始窗口或向下滚动(7号功能) 入口参数:AH=7,AL=下滚行数,CX=下滚窗口左上角的行、列号。DX=下滚窗口右下角的行、列号。BH=空白行的属性。 出口参数:无。当滚动后,顶部为空白输入行。,例9.13 在屏幕中心显示小窗口,data segment esc_key equ 1bh win_ulc equ 30 win
29、_ulr equ 8 win_lrc equ 50 win_lrr equ 16 win_width equ 20 data ends code segment assume cs:code,ds:data start:mov ah,2 mov dh,win_lrr mov dl,win_ulc mov bh,0 int 10h mov cx,win_width get_char: mov ah,1 int 21h,cmp al, esc_key jz exit loop get_char mov ah,6 mov al,1 mov ch,win_ulr mov cl,win_ulc mov
30、dh,win_lrr mov dl,win_lrc mov bh,7 int 10h jmp start exit:mov ah,4ch int 21h code ends end,设置光标位置(2号功能) 入口参数:AH=2(功能号),BH=页号,DH=行号,DL=列号。 出口参数:无。根据DX确定了光标位置。,初始窗口或向上滚动(6号功能) 入口参数:AH=6,AL=上滚行数,CX=上滚窗口左上角的行、列号。DX=上滚窗口右下角的行、列号。BH=空白行的属性。 出口参数:无。当滚动后,底部为空白输入行。,例9.16 在品红背景下,显示5个浅绿色闪烁的星号,code segment assu
31、me cs:code start: mov ah,9 mov al,* mov bh,0 mov bl,0dah mov cx,5 int 10h mov ah,4ch int 21h code ends end start,在当前光标位置写字符和属性(9号功能) 入口参数:AH=9,BH=页号,AL=字符的ASCII码,BL=字符属性,CX=写入字符数。 出口参数:无。,9.18在屏幕上以红底蓝字显示字符串“WORLD SCENERY”,string db world scenear len equ $-string mov ah,0 mov al,3 int 10h mov bp,seg
32、string mov es,bp mov bp,offset string,mov cx,len mov dx,0 mov bl,41h mov al,0 mov ah,13h int 10h,设置显示方式(0号功能) 入口参数:AH=0(功能号),AL=设置方式(07)。 出口参数:无。,(10)显示字符串(13号功能) ES:BP=串地址 CX=串长度 DH,DL=起始行列 BH=页号 AL=0,BL=属性 串:char,charchar 光标返回到起始位置 AL=1,BL=属性 串:char,charchar 光标跟随移动 AL=2 串:char,charchar 光标返回起始位置 AL
33、=3 串:char,charchar 光标跟随移动,例 用直接写屏方式在屏幕第5行、第10列以黄色(0EH)显示字符串Hello。 解:在文本显示方式下,每行显示80个字符,每个字符占2个字节,所以,显示一行需要160个字节。若在第m行、第n列位置显示字符,则该位置所对应存储单元的偏移量为:m160 + n2。,.MODEL SMALL.DATAYellowEQU0EHMSG1DBWelcome.CountEQU$-MSG1.CODE.STARTUP MOV AX, 0B800H MOV ES, AX ;彩色显示器的显示缓冲区段地址 MOV DI, 5 IMUL DI, 160 ;5行所跳过的
34、显示存储单元,MOV CX, 10 SHL CX, 1 ;10列所跳过的显示存储单元 ADD DI, CX ;第5行、第10列之前所跳过的所有显示单元 MOV CX, Count LEA SI, MSG1 ;CX:字符个数,SI:显示字符首地址 MOV AH, Yellow ;设置显示属性,即显示颜色 .REPEATLODSB;取显示字符 STOSW ;向显示缓冲区设置显示字符和属性 .UNTILCXZ .EXIT0 END,9.2.3 DOS显示功能,计算机与外设交换信息的过程中: 并行通信:多位数据通过多条数据线同时传送。 串行通信:多位数据通过同一条数据线按位传送。 并行通信就是把一个字
35、符的各数位用几条线同时进行传输。与串行通信(一位一位传输)相比,在相同传输率下,并行通信的信息实际传输速度快、信息率高。但并行通信比串行通信所用电缆多,随着距离的增加,电缆的开销会成为突出的问题。所以,并行通信总是用在数据传输率要求较高,而传输距离较短的场合。,9.3 串行通信口I/O,串行通信可以分为两种类型:同步通信、异步通信。,异步通信,一个字符一个字符地传输,每个字符一位一位地传输,传输一个字符时,以起始位开始,然后传输字符本身的各位,接着传输校验位,最后以停止位结束该字符的传输。一次传输的起始位、字符各位、校验位、停止位构成一组完整的信息,称为帧(Frame)。 帧与帧之间可有任意个
36、空闲位。 起始位之后时数据的最低位。,在异步通信中,每个字符都要用起始位作为字符的开始和结束的标志,占用了传输的时间,所以在数据块传送时,为了提高效率,就要去掉这些标志,采用同步通信。同步通信方式不给每个字符都加起始位和停止位,而把字符顺序的连接起来,组成一个数据块(首尾相连的数据串),把这样一个数据块称为一个信息桢。在数据的开始加上一个同步字符,而在信息的末尾加有一定的差错检验字符,其格式如下:,同步通信,同步字符 字符1 字符2 字符n 校验字符,数据块,实现串行通信有专用的接口芯片,常用的有USART(通用同步/异步接收/发送器)如Intel8251和UART(通用异步接收/发送器)如I
37、ns 8250。 无论是UART,还是USART,均能实现数据发送时所需要的并串转换以及数据被CPU接收时所需要的串并转换。,串行通信接口,串行通信基础,起始位,最低位,最高位,奇偶位,停止位,数据位,起始位逻辑01位 数据位逻辑0或15位、6位、7位、8位 校验位逻辑0或11位或无 停止位逻辑11位、1.5位或2位 空闲位逻辑1任意数量,异步通信的信息格式:,并行通信中,传输速率以每秒钟传输多少字节来表示。而串行通信中,传输速率是用波特率来表示。所谓波特率是指单位时间内传送二进制数据的位数(简写为bps)。在计算机里,每秒传输多少位和波特率的含义是完全一致的。但是要注意,在最初的定义上(波特
38、率是每秒传输离散信号的数目),每秒传输多少位和波特率是不相同的。 收、发双方的波特率必须一致。传输一位所需要的时间 T叫“位周期”。,波特率和传输率,例:计算串行传输5页,每页80 x25个字符总共需要多少位?假设每个字符8位,1位起始位和1位终止位。计算传输上述五页所需要的时间。数据传输率分别为2400bps 和9600bps,RS232串行通信接口,为了兼容各厂家生产的数据通信设备,1960年电子工业协会(Electronics Industries association ,EIA)制定了RS-232接口标准,以后又陆续发布了修订版本RS-232A,RS-232B和RS-232C。目前广
39、泛应用于个人计算机上的RS-232串行接口,他安装于PC机内的通信适配器版上。 PC机上的COM1、COM2接口,就是RS-232C接口,使用9针和25针连接器,RS-232C采用负逻辑,且信号电平与TTL不兼容, 规定逻辑“1”在-3V-15V之间,逻辑“0”在+3V+15V 之间。 RS-232C不是TTL电平的接口标准,当计算机与外设进行通信时,必须有相应的电平转换电路。通常采用的是MC1488和MC1489电平转换器。,串行接口芯片8250、8251均使用TTL电平,应使用电平转换电路与RS-232C连接器连接。 MC1488:TTL电平RS232电平 (用于发送方) MC1489:T
40、TL电平RS232电平 (用于接收方),IBM PC通信端口 在微机系统中,可以有两个或多个端口连接到不同的外部设备上进行通信,如IBM PC和80X86兼容机可以连接4个通信端口,他们的编号为COM14(BIOS编号为COM03),但程序每次只能对其中一个端口进行存取。当微机加电自检时,由加电自检程序来测试通用异步收发器的4个COM端口是否存在,如果微机系统中设置了COM端口,则设置的每个COM端口的I/O地址就写到BIOS数据区的0040:00000040:0007,每个端口地址占用两个字节。如果没有连接串行端口,BIOS数据区 的这几个单元的内容就成为0。可以用DEBUG查看URAT的端
41、口地址。 保存在BIOS数据区的COM端口地址称为基地址,因为每个 COM端口都包括一组位的寄存器,程序员可以通过这些寄存器进行编程,以控制数据按设定的格式发送或接收数据。 BIOS数据区的COM端口地址是第一个寄存器的地址。,串行口功能调用 、DOS串行通信口功能 使用DOS命令可以设置串行通信参数,如波特率,字长,校验位和终止位。 格式:MODE COMm:b ,p ,d , s 例如:MODE COM1 :24,O,8,1 说明:波特率用最高两位来表示,P是校验位(N无,O奇,E偶。 端口号的分配:BIOS位,DOS为,DOS串行通信口功能调用,例: INPUT_CHAR DB ? :
42、MOV AH,3 INT 21H MOV INPUT _CHAR,AL,BUFFER DB HELLO BUF_LEN EQU $-BUFFER : MOV BX,SEG BUFFER MOV DS,BX MOV BX, OFFSET BUFFER MOV CX,BUF_LEN NEXT: MOV DL ,BX MOV AH,4 INT 21H LOOP NEXT,串行通信口 BIOS功能调用(int 14h),例:两台PC机通过COM2端口进行串行数据通信,编写一个汇编语言程序,要求从一台PC 机上键盘上输入的字符传送到另一台PC机,若按下ESC键,则退出程序。在程序中,COM2端口初始化为
43、 4800BPS,8位数据,无校验,1位终止位;,.data message db serial communication via com2,4800,no p,1stop,8 bit data ,0ah,0dh,$ db any key press is sent to other PC ,0ah,0dh db press esc to exit,$ .code main proc mov ax,data mov ds,ax mov ah,09 mov bx,offset message int 21h mov ah,0 mov dx,1 mov al,03ch int 14h again
44、: mov al,01 int 16h jz next mov ah,0 int 16h,cmp al,1bh je exit mov ah,1 mov dx,1 int 14h next: mov ah,3 mov dx,1 int 14h and ah,1 cmp ah,1 jne again mov ah,2 mov dx,1 int 14h mov dl,al mov ah,2 int 21h jmp again exit:mov ah,4ch int 21h main endp end,9.4 磁盘文件管理,9.4.1 BIOS磁盘存取功能 9.4.2 DOS磁盘存取功能,9.4.2
45、 DOS磁盘存取功能,DOS功能调用中断(INT 21H)提供了两类磁盘文件管理功能,一类是FCB表控制方式,另一类是文件代号式存取方式。 当用户需要打开或建立一个文件时,必须提供文件标识符。文件标识符用ASCII Z字符串表示。ASCII Z字符串是指文件标识符的ASCII字符串后面再加1个“0”字符。文件标识符的字符串包括驱动器名、路径名和文件名。其格式为 d:pathfilename.exe 其中d为驱动器名,path为路径名,.exe为文件名后缀。,1建立文件(3CH) 功能:按指定文件名建立文件。 入口参数:(AH)3CH,DS:DX指向ASCII Z字符串的段地址和偏移地址, (C
46、X)文件属性。 出口参数:若操作成功,则CF0, (AX)文件代号; 若操作失败,则CF1,(AX)错误代码。,2打开文件(3DH) 功能:打开由ASCII Z串指定的文件。 入口参数:(AH)3DH,DS:DX指向ASCII Z字符串的段地址和偏移地址, (AL)存取方式代码(0:读文件,1:写文件,2:读、写文件)。 出口参数:若操作成功,则CF0,(AX)文件代号; 若操作失败,则CF1,(AX)错误代码。,3关闭文件(3EH) 功能:关闭文件代号指定的文件。 入口参数:(AH)3EH,(BX)文件代号。 出口参数:若操作成功,则CF0; 若操作失败,则CF1,(AX)错误代码。,4读文
47、件(3FH) 功能:按文件代号读取文件。 入口参数:(AH)3FH,(BX)文件代号,(CX)要读取的字节数; DS:DX指向接收数据缓冲区的段地址和偏移地址。 出口参数:若操作成功,则CF0,(AX)实际读入字节数,(AX)0,文件结束; 若操作失败,则CF1,(AX)错误代码。,5写文件(40H) 功能:按文件代号写文件。 入口参数:(AH)40H,(BX)文件代号,(CX)要写入的字节数; DS:DX指向存放写入信息数据缓冲区的段地址和偏移地址。 出口参数:若操作成功,则CF0,(AX)写入字节数; 若操作失败,则CF1,(AX)错误代码。,6 . 移动文件指针(42H) 功能:移动由文
48、件代号标志的文件读写指针的位置 入口参数:在bx预置文件代号,在cx:dx双字中预置移 动位移量,在 al 中预置移动方式 移动方式: 00h 移动后文件指针值=0+移动位移量 01h 移动后文件指针值=当前文件指针值+移动位移量02h 移动后文件指针值=文件尾值+移动位移量 出口参数:CF=0 表示移动成功,此时CX:DX双字中返回移动后文件指针值;CF=1 表示移动失败,此时AX中返回值为1表示移动方式无效,为6表示无效的文件代号。,7取/置文件属性(43H) 功能:按文件代号写文件。 入口参数:(AH)43H,DS:DX指向ASCII Z串的段地址和偏移地址。 (AL)0,取文件属性,(AL