第九章_BIOS和DOS中断15772.pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第九章_BIOS和DOS中断15772.pptx》由会员分享,可在线阅读,更多相关《第九章_BIOS和DOS中断15772.pptx(56页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第九章 BIOS 和DOS中断 9.1 键盘I/O 9.2 显示器I/O 9.3 打印机I/O 9.4 串行通信口I/O640KB RAM 基本内存0000:0000 0040:0000 0050:0000 0070:0000 A000:0000 B000:0000 C800:0000 F600:0000 FE00:0000 FE00:1FFF显示缓存区(显存)硬盘驱动器控制ROM32KB ROM BASIC8KB ROM BIOSIO.SYS模块COMMAND.COM常驻模块MSDOS.SYS模块用户程序空间COMMAND.COM暂驻模块256KB ROMDOS工作区ROM BIOS工作区1
2、28KB RAM 保留区1KB中断向量表 MS DOS系统中有两层内部子程序可供用户使用:基本输入输出子程序(BIOS)层功能模块及咖层功能模块。这些子程序对用户来说均可看成中断处理程序,它们的入口都在中断入口表中。用户用户不必过多地关心有关设备的物理性能及接口方面的细节,即不用直接使用IN或OUT语句,只需调用相应子程序即可使用设备。使用汇编语言程序可以直接调用它们,这极大地方便了用户对这些微机系统的扩充开发,因而掌握这些子程序的使用十分重要。在系统存储器中,从地址0FE000H开始的8KB ROM(只读存储器)中装有BIOS(basic input/output system,基本输入输出
3、系统)例行程序。驻留在ROM中的BIOS提供了系统加电自检,引导装入,主要IO设备的处理以及接口控制等功能模块。使用BIOS功能调用,给程序员编程带来了很大的方便。程序员不必了解硬件IO接口的特性,可直接用指令设置参数,然后中断调用BIOS中的例行程序,所以利用BIOS功能编写的程序简洁,可读性好,而且易于移植。BIOSDOSDOS是IBM PC机的磁盘操作系统,IBMBIO.COM:是一个输入输出设备处理程序,它提供了DOS到ROM BIOS的低级接口,它完成将数据从外设读入内存,或把数据从内存写到外设去的工作。IBMDOS.COM包括一个文件管理程序和一些处理程序,在DOS运行的程序可以调
4、用这些处理程序。为了完成DOS功能调用,IBMDOSCOM把信号传送给IBMBIO.COM,形成一个或多个BIOS调用。它的两个模块IBMBIO.COM和IBMDOS.COM使BIOS使用起来更方便。因为:DOS模块提供了更多重必要的测试,使DOS操作比使用相应功能的BIOS操作更简易,而且DOS对硬件的依赖性更少些。l 用户编程原则尽可能使用DOS的系统功能调用,提高程序可移植性。在DOS功能不能实现情况下,考虑用BIOS功能调用。在DOS和BIOS的中断子程不能解决问题时,使用IN/OUT 指令直接控制硬件。在一些情况下,既能选择DOS中断也能选择BIOS中断来执行同样的功能,但在少数情况
5、下必须使用BIOS功能。DOS中断能处理大多数的IO,但有一些功能还没有提供。设置入口参数在AH设置功能号(如需要,在AL设置子功能号)执行中断指令INT N分析、应用出口参数Dos/Bios中断调用的基本步骤DOS功能调用 INT 21H 用户在程序中调用DOS提供的一些子功能:(1)一般设备的输入输出(2)磁盘的输入输出及磁盘文件的管理(3)其它 调用方法:(1)设置调用参数(2)MOV AH,功能号(3)INT 21H(1)DOS键盘功能调用(AH=1,6,7,8,A,B,C)例:单字符输入(AH=1)get-key:mov ah,1 int 21h cmp al,Y je yes cm
6、p al,N je no jne get_key yes:no:例:输入字符串(AH=0ah)定义缓冲区:(1)maxlen db 32 actlen db?string db 32 dup(?)(2)maxlen db 32,0,32 dup(?)(3)maxlen db 32,33 dup(?)lea dx,maxlen mov ah,0ah int 21h20 maxlen actlen HOWAREYOU20200d string 0b(DX)(2)DOS显示功能调用(AH=2,6,9)例:显示单个字符(AH=2)mov ah,2mov dl,Aint 21h例:显示字符串(AH=9)
7、string db HELLO,0dh,0ah,$mov dx,offset stringmov ah,9int 21h(3)DOS打印功能(AH=5)l 有关键盘 一种输入设备,通过键盘接口电路与计算机连接。键盘上的键有三种类型:字符数字键 AZ,09等 扩展功能键 F1F12,Page Up等 组合控制键 Shift,Ctrl,Alt等 键盘上的每个键都有一个扫描码。据扫描码可确定操作的是哪个键、是按下键还是释放键;扫描码用一个字节表示。低7位是扫描码的数字编码,与键盘上的键一一对应;最高位D7位表示键的操作状态:当按下键时,D7=0;当释放键时,D7=19.1 键盘 I/O一个ASCII
8、码产生一个动作改变其它键所产生的字符码 键盘中断子程功能(09H类型中断子程)从键盘接口读取操作键的扫描码(8255的输入端口61H);将扫描码转换成字符码;大部分键的字符码为ASCII码,无ASCII码键(如组合键Shift、Ctrl等)的字符码为0。还有一些非ASCII码键产生一个指定的动作 将键的扫描码、字符码存放在键盘缓冲区KB_BUFFER,供其它有关键盘的中断子程应用。键盘接口对按下键和释放键均向计算机发出中断申请,如果中断响应条件满足,CPU转去执行键盘中断子程。键盘中断子程类型号为09H。键盘缓冲区 0040:001A BUFF_HEAD DW?0040:001C BUFF_T
9、AIL DW?0040:001E KB_BUFFER DW 16 DUP(?)0040:001A KB_BUFFER _END LABEL WORD 先进先出的循环队列首地址末地址大小单字符输入(01H、07H、08H功能)入口参数 无 功能号 AH=01H 类型号 21H 出口参数 AL=键入字符的ASCII码 实现功能 等待从键盘输入一个字符,并在屏幕上回显,光标移动,检测Ctrl-Break键例 利用键盘输入的字符产生分支:MOV AH,1;等待从键盘输入 INT 21H CMP AL,Y;是Y?JZ yes CMP AL,y;是y?JZ yes no:.JMP exit yes:.ex
10、it:.例 在中断向量表中查找从键盘输入的字符,并将其个数用二进制形式显示出来。(scanskey.asm)code SEGMENT;代码段开始 ASSUME CS:code begin:MOV AX,0000H;设置查找首地址 MOV DS,AX MOV SI,0000H MOV CX,0400H;设置查找长度 MOV BX,0;计算值初值 MOV AH,01H;从键盘输入 INT 21H;输入关键字 MOV DL,AL;保存在DL中 next:LODSB;从串取 CMP AL,DL;与关键字比较 JNZ point INC BX;计算值加1 point:LOOP next;查找结束?CAL
11、L display;调用显示子程 MOV AH,4CH;调用4CH功能 INT 21H;返回DOS;用二进制显示BX内容子程 display PROC MOV CX,16;显示位数 rotate:ROL BX,1 MOV DL,BL AND DL,01H ADD DL,30H MOV AH,2H INT 21H LOOP rotate RET;子程返回 display ENDP code ENDS;代码段结束 END begin 入口参数 无 功能号 AH=07H类型号 21H出口参数 AL=键入字符的ASCII码实现功能 等待从键盘输入一个字符,不在屏幕上回显,不检测Ctrl-Break键例
12、 用不带回显功能输入密码时:input:MOV AH,07H;等待从键盘输入 INT 21H MOV DI,AL;存入缓冲区 CMP AL,0DH;是回车符?JNZ input;不是,继续输入 check:、4.字符串输入(0AH 功能)入口参数 DS:DX=缓冲区的首地址(DS:DX)=限制最多输入的字符数 功能号 AH=0AH 类型号 21H 出口参数(DS:DX+1)=实际键入的字符(不含回车符)从(DS:DX+2)开始顺序存放键入的字符串,回车符0DH为串尾最后一字符。实现功能 等待从键盘输入字符串,并存入设定的缓冲区内,同时回显字符串,光标随着移动,回车符使光标回到行首。注意事项:应
13、按要求先定义缓冲区,再调用。例 应用0AH功能输入字符串。data SEGMENT;定义缓冲区max DB 11;定义限制最多输入个数lenth DB?;用于存放实际输入个数stri DB 11 DUP(?);用于存放输入的字符串data ENDScode SEGMENT ASSUME CS:code,DS:datastart:MOV AX,data;置缓冲区地址于DS:DX MOV DS,AX LEA DX,max MOV AH,0AH INT 21H;调0A输入功能 MOX CH,0 MOV CL,lenth;取字符串长度放CX中 LEA BX,stri;取字符串首址于BX中 MOV AL
14、,BX;应用输入字符、code ENDS data SEGMENT;定义缓冲区max DB 11;定义限制最多输入个数lenth DB?;用于存放实际输入个数stri DB 11 DUP(?);用于存放输入的字符串data ENDS从键盘输入ABCD,回车,内存的存放结果:0B 04 41 42 43 44 0D 00max0 700 00 00 00 00 00 00 008 0a 0b0f1 23 4 5 6 90c 0d0elenthstri地址内容DS:DX如下编程与上例相同:data SEGMENT max DB 11 等价于:DB?max DB 11,?,11 DUP(?)DB 1
15、1 DUP(?)data ENDS code SEGMENT ASSUME CS:code,DS:datastart:MOV AX,data;置缓冲区地址于DS:DX MOV DS,AX LEA DX,max MOV AH,0AH;调输入功能 INT 21H MOX CH,0 MOV CL,max+1;取字符串长度放CX中 LEA BX,max+2;取字符串首址于BX中 MOV AL,BX;应用输入字符、code ENDSdata SEGMENTmax DB 11 DB?DB 11 DUP(?)data ENDS从键盘输入ABCD,回车,内存的存放结果:等价于max DB 11,?,11 DU
16、P(?)0B 04 41 42 43 44 0D 00max0 700 00 00 00 00 00 00 008 0a 0b0f1 23 4 5 6 90c 0d0e地址内容DS:DX0AH功能执行过程:若(DS:DX)字节单元的值为0,则不等待从键盘输入,结束调用。若(DS:DX)字节单元的内容大于0,则等待从键盘输入,并把输入键的ASCII码顺序存放在DS:DX+2开始的单元,按回车键表示结束输入。当按下键的个数超过(DS:DX)中值,发出警告声 嘟嘟,不再接收输入的数据,直到输入回车键。将实际输入的字符个数(不包括回车键)填入(DS:DX+1),结束调用。DS:DX00 00 00 0
17、0 00 00 00 00 00 00 00 00 00 00 00 000AH功能注意事项:输入的字符均带回显,且光标随字符移动。当输入回车符结束时,也回显回车符。表现为功能调用结束后,光标回到了行首。回车符0DH作为一个输入的字符存放在字符串尾,但计数输入个数时,不包括回车键。实际最多能输入的字符数=限制的最多数-1(回车符占一个)执行完0AH功能后,DS和DX的值不变,DS:DX仍指向缓冲区的首地址。整个缓冲区的大小应为:限制的最多数+2 max DB 11,?,11 dup(?)例 利用DEBUG查看0A功能输入结果。data SEGMENT max DB 11,?,11 DUP(?)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第九 _BIOS DOS 中断 15772
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内