欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    BIOS和DOS中断功能调用.ppt

    • 资源ID:5416573       资源大小:402.50KB        全文页数:71页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    BIOS和DOS中断功能调用.ppt

    1,第五节 BIOS和DOS中断功能调用(教材旧P238、新P239)一、概述 1.BIOS和DOS中断子程层次特点2.中断类型分类3.调用方法二、BIOS功能调用1设置显示方式(10H类型,00H功能)2置光标位置(10H类型,02H功能)3清屏、清窗口(10H类型,06H或07H功能)三、DOS系统功能调用(21H类型中断调用)1显示单字符(02H功能)2显示字符串(09H功能)3单字符输入(01H、07H、08H功能)4字符串输入(0AH功能)5检测键盘状态(0BH功能)6保存中断向量(35H功能)(第六章介绍)7设置中断向量(25H功能),2,复习内容:P339P247(新),P228P246(旧)预内容习:P 110P140(新),P106P134(旧),作业:,1、预习实验二,其中:任务 1、(2)(4),2必做,,任务 1、(1)(3)选做.,实验四 任务1,作为家庭作业,在计算机上调通后,经过教师检查 签字,3,2编写完整汇编语言程序,要求上机调试出来:(1)清屏,在10行5列上显示“Hello China!”(2)将0AH功能输入的字符串,用09H功能显示出来。,在DOS下执行,从键盘输入123456789回车,屏幕上能显示Hello World!吗?为什么?用在DEBUG下查看到的data段的内容来说明。,3问题回答,下面程序,汇编连接后,4,max DB 11,?,4 DUP(?),data SEGMENT,string DB Hello World!,$,data ENDS,code SEGMENT,ASSUME CS:code,DS:data,start:MOV AX,data;置缓冲区地址于DS:DX,MOV DS,AX,LEA DX,max,MOV AH,0AH;调用0AH输入功能,INT 21H,LEA DX,string,MOV AH,09H;调用09H显示功能,INT 21H,MOV AH,4CH,INT 21H;返回DOS,code ENDS,END start,5,第三节 BIOS和DOS中断功能调用(教材旧P238、新P239)一、概述 二、BIOS功能调用三、DOS系统功能调用(21H类型中断调用),6,一、概述1BIOS 和 DOS 中断子程层次特点2.中断类型分类3.调用方法,7,1BIOS和DOS中断子程层次特点,8,层次特点:ROM BIOS中的中断子程 使用IN/OUT指令直接控制外设,实现与外设之间的输入/输出操作,以软件形式向其上层提供服务。IO.SYS中的中断子程(称基本输入/输出BIOS模块)调用ROM BIOS的基本I/O功能,向 MSDOS.SYS提供设备驱动服务。,9,MSDOS.SYS中的中断子程(称DOS内核模块)调用IO.SYS,实现对外设的控制。与标准外设有两层隔离:IO.SYS和ROM BIOS。其中21H类型的中断子程提供了丰富的系统服务,称21类型的中断调用为DOS系统(功能)调用。,10,用户编程原则尽可能使用DOS的系统功能调用,提高程序可移植性。在DOS功能不能实现情况下,考虑用BIOS功能调用。在DOS和BIOS的中断子程 不能解决问题时,使用IN/OUT指令直接控制硬件。,11,2.中断类型分类 向量表中的中断类型分为七类:处理CPU特殊操作(除0、溢出)的00H、04H类型。为DEBUG调试程序设置的单步(01H)、断点(03H)类型。处理CPU的NMI引脚信号的02H类型。非屏蔽硬中断子程 处理CPU的INTR引脚信号的080FH类型。可屏蔽类型硬中断子程 用INT指令调用的中断子程 BIOS功能调用(如101AH)DOS功能调用(如 21H),12,13,中断向量分配表,14,15,16,3.调用方法,17,例1 单字符显示功能调用MOV DL,A;设置入口参数MOV AH,02H;设置功能号 INT 21H;执行中断调用 例2 单字符输入功能调用MOV AH,01H;设置功能号 INT 21H;执行中断调用CMP AL,0DH;分析、应用出口参数JZ exit、,18,二、BIOS功能调用 基本输入/输出模块BIOS:实现对输入/输出设备的控制,内含0 1CH 等类型中断子程,包括显示器、磁盘、键盘、打印机等标准外设的驱动程序。(参看中断类型分配表)BIOS功能调用指对BIOS模块中的中断子程的调用。,19,有关显示器 显示器通过显卡(显示适配器)连接到计算机上。单色显示器只能显示黑白两色。彩色显示器能显示多种颜色。,20,屏幕上各象素的显示信息,存放在显示缓冲区(显存)中。,21,显示器有两种显示方式:,图形方式:将屏幕划分为 mn的点阵,在每个点的位置显示象素,一个点是一个象素。,文本方式将屏幕划分为若干行和列,在每个网格位置上显示象素,一个字符是一个象素。,22,文本方式将屏幕划分为 m列和n行(m n),在每个网格位置上显示象素,一个字符是一个象素。,23,图形方式:将屏幕划分为 mn的点阵,在每个点的位置显示象素,一个点是一个象素。,24,在文本方式下,对应屏幕上的每个字符,在显示缓冲区中占用两个单元:一个存放ASCII码,一个存放显示属性。,25,例 10000111B 或 87H 表示黑底白字,闪烁 01110000B 或70H 表示白底黑字,不闪烁,26,据显存大小,可存储若干页的字符象素。例 16KB 显存能存储:8025方式,4页(0 3),802524=16000 4025方式,8页(0 7),402528=16000,27,1设置显示方式,入口参数 AL=显示方式值 00 4025 黑白文本方式 01 4025 彩色文本方式 02 8025 黑白文本方式 03 8025 彩色文本方式 04 320320 彩色图形方式 功能号 AH=00H类型号 10H出口参数 无 实现功能 将显示方式设置为指定形式,例 将显示方式设置为 8025 彩色文本方式 MOV AL,03H MOV AH,00 INT 10H,28,入口参数 AL=0 CH=窗口左上角行号 CL=窗口左上角列号 DH=窗口右下角行号 DL=窗口右下角列号 BH=窗口属性功能号 AH=06H 或 AH=07H类型号 10H出口参数 无 实现功能 按给定属性清除指定的窗口内容,29,例 清除屏幕显示,将其属性置为反白(白底黑字)显示。MOV AL,0;清屏功能 MOV BH,70H;白底黑字 MOV CH,0;左上角 行号MOV CL,0;左上角 列号 MOV DH,24;右下角 行号 MOV DL,79;右下角 列号 MOV AH,6;功能号 INT 10H;中断调用,30,3.置光标位置 光标控制开始显示的位置,计算机有专门的硬件控制光标的显示大小、位置。光标只在文本方式中出现,在图形方式下光标消失。,31,置光标位置 入口参数 DH=行号 DL=列号 BH=页号 功能号 AH=02H 类型号 10H 出口参数 无 实现功能 将光标设置在指定的位置,32,例 将光标设置在2行5列的位置MOV DH,2MOV DL,5MOV BH,0MOV AH,2INT 10H,33,三、DOS系统功能调用(21H类型中断调用)1显示单字符(02H功能)2显示字符串(09H功能)3单字符输入(01H、07H、08H功能)4字符串输入(0AH功能)5检测键盘状态(0BH功能)6保存中断向量(35H功能)(第六章介绍)7设置中断向量(25H功能),34,1.显示单字符(02H功能)入口参数 DL=要显示字符的ASCII 码 功能号 AH=02H类型号 INT 21H出口参数 无实现功能 显示指定字符,光标随动。,例 显示字符A MOV DL,A MOV AH,02H INT 21H,35,例 使光标回到下一行的行首。MOV DL,0DH;显示回车符MOV AH,02HINT 21HMOV DL,0AH;显示换行符MOV AH,02HINT 21H,36,2.显示字符串(09H功能)入口参数 定义要显示的字符串,字符串尾应为$,作为结束显示的标志。DS:DX=字符串的首地址功能号 AH=09 H类型号 21H出口参数 无实现功能 显示字符串,遇$停止显示,光标随动。,37,例 编程显示字符串 Tsinghua University,data SEGMENT;定义显示的子符串stri DB Tsinghua University,$data ENDScode SEGMENT ASSUME CS:code,DS:datastart:MOV AX,data;置缓冲区地址于DS:DX MOV DS,AX LEA DX,stri MOV AH,09H;调显示功能 INT 21H MOV AH,4CH;返回DOS INT 21H code ENDS END start,38,有关键盘 键盘通过键盘接口电路与计算机连接。键盘上的键有三种类型:字符键 AZ,09等 功能键 F1F12,Page Up等 组合控制键 Shift,Ctrl,Alt等,键盘上的每个键都有一个扫描码。据扫描码可确定操作的是哪个键、是按下键还是释放键;扫描码用一个字节表示。低7位是扫描码的数字编码,与键盘上的键一一对应;最高位D7位表示键的操作状态:当按下键时,D7=0;当释放键时,D7=1,39,键盘中断子程功能(09H类型中断子程)从键盘接口读取操作键的扫描码;将扫描码转换成字符码;大部分键的字符码为ASCII码,无ASCII码键(如组合键Shift、Ctrl等)的字符码为0。将键的扫描码、字符码存放在键盘缓冲区,供其它有关键盘的中断子程应用。,键盘接口对按下键和释放键均向计算机发出中断申请,如果中断响应条件满足,CPU转去执行键盘中断子程。键盘中断子程类型号为09H。,40,3.单字符输入(01H、07H、08H功能)入口参数 无 功能号 AH=01H 类型号 21H 出口参数 AL=键入字符的ASCII码 实现功能 等待从键盘输入一个字符,并在屏幕上回显,光标移动,检测Ctrl-Break键,41,例 利用键盘输入的字符产生分支:MOV AH,1;等待从键盘输入 INT 21H CMP AL,Y;是Y?JZ yes CMP AL,y;是y?JZ yes no:.JMP exit yes:.exit:.,42,例 在中断向量表中查找从键盘输入的字符,并将其个数用二进制形式显示出来。(scanskey.asm),43,入口参数 无 功能号 AH=07H类型号 21H出口参数 AL=键入字符的ASCII码实现功能 等待从键盘输入一个字符,不在屏幕上回显,不检测Ctrl-Break键,44,例 用不带回显功能输入密码时:input:MOV AH,07H;等待从键盘输入 INT 21H MOV DI,AL;存入缓冲区 CMP AL,0DH;是回车符?JNZ input;不是,继续输入 check:、,45,4.字符串输入(0AH 功能)入口参数 DS:DX=缓冲区的首地址(DS:DX)=限制最多输入的字符数 功能号 AH=0AH 类型号 21H 出口参数(DS:DX+1)=实际键入的字符(不含回车符)从(DS:DX+2)开始顺序存放键入的字符串,回车符0DH为串尾最后一字符。实现功能 等待从键盘输入字符串,并存入设定的缓冲区内,同时回显字符串,光标随着移动,回车符使光标回到行首。注意事项:应按要求先定义缓冲区,再调用。,46,例 应用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,BX;应用输入字符、code ENDS,47,data SEGMENT;定义缓冲区max DB 11;定义限制最多输入个数lenth DB?;用于存放实际输入个数stri DB 11 DUP(?);用于存放输入的字符串data ENDS从键盘输入ABCD,回车,内存的存放结果:,48,49,50,0AH功能执行过程:若(DS:DX)字节单元的值为0,则不等待从键盘输入,结束调用。若(DS:DX)字节单元的内容大于0,则等待从键盘输入,并把输入键的ASCII码顺序存放在DS:DX+2开始的单元,按回车键表示结束输入。当按下键的个数超过(DS:DX)中值,发出警告声 嘟嘟,不再接收输入的数据,直到输入回车键。将实际输入的字符个数(不包括回车键)填入(DS:DX+1),结束调用。,51,0AH功能注意事项:输入的字符均带回显,且光标随字符移动。当输入回车符结束时,也回显回车符。表现为功能调用结束后,光标回到了行首。回车符0DH作为一个输入的字符存放在字符串尾,但计数输入个数时,不包括回车键。实际最多能输入的字符数=限制的最多数-1(回车符占一个)执行完0AH功能后,DS和DX的值不变,DS:DX仍指向缓冲区的首地址。整个缓冲区的大小应为:限制的最多数+2 max DB 11,?,11 dup(?),52,例 利用DEBUG查看0A功能输入结果。,data SEGMENT max DB 11,?,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 MOV CH,0 MOV CL,max+1;取输入长度到CX中 MOV AH,4CH;返回DOS INT 21Hcode ENDS END start,53,D:MASMDEBUG TEST0a.exe;装入执行文件-U;反汇编程序 129E:0000 B89D12 MOV AX,129D129E:0003 8ED8 MOV DS,AX129E:0005 8D160000 LEA DX,0000129E:0009 B40A MOV AH,0A129E:000B CD21 INT 21129E:000D B500 MOV CH,00129E:000F 8A0E0100 MOV CL,0001129E:0013 B44C MOV AH,4C129E:0015 CD21 INT 21、-D 129D:0 L10;查看程序执行前缓冲区内容 129D:0000 0B 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00.-G 000D;执行程序 Hello;从键盘输入字符串 Program terminated normally-D 129D:0 L10;查看程序执行后缓冲区内容 129D:0000 0B 05 48 65 6C 6C 6F 0D-00 00 00 00 00 00 00 00.Hello.-,54,思考:1.若将程序改为如下形式,设想程序执行的结果。,data SEGMENT max DB 100H 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 MOV AH,4CH;返回DOS INT 21Hcode ENDS END start,55,结果是:不等待输入,结束0AH功能调用。,56,2.若将程序改为如下形式,设想程序执行的结果。,data SEGMENT max DW 100H,?,100H 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 MOV AH,4CH;返回DOS INT 21Hcode ENDS END start,57,结果是:不等待输入,结束0AH功能调用。,58,59,D:MASMDEBUG e0a09.exe-U;查看程序129F:0000 B89D12 MOV AX,129D129F:0003 8ED8 MOV DS,AX129F:0005 8D160000 LEA DX,0000129F:0009 B409 MOV AH,09129F:000B CD21 INT 21129F:000D 8D160F00 LEA DX,000F129F:0011 B40A MOV AH,0A129F:0013 CD21 INT 21129F:0015 B44C MOV AH,4C129F:0017 CD21 INT 21-D 129D:0 L20;执行程序前查看 data段内容129D:0000 50 6C 65 61 73 65 20 49-6E 70 75 74 20 3A 24 0B Please Input:$.129D:0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00.-G;执行程序 Please Input:Hello!Program terminated normally-D 129 D:0 L20;执行程序后查看 data段内容 129D:0000 50 6C 65 61 73 65 20 49-6E 70 75 74 20 3A 24 0B Please Input:$.129D:0010 06 48 65 6C 6C 6F 21 0D-00 00 00 00 00 00 00 00.Hello!.-,60,data段内存情况:,61,思考:程序中少了一个$符的后果。,data SEGMENT stri DB Please Input:max DB 11,?,11 DUP(?)data ENDScode SEGMENT ASSUME CS:code,DS:datastart:MOV AX,data;置缓冲区地址于DS:DX MOV DS,AX LEA DX,stri MOV AH,09H;显示提示 INT 21H LEA DX,max;等待从键盘输入 MOV AH,0AH INT 21H MOV AH,4CH INT 21H code ENDS END start,62,63,5检测键盘状态(0BH功能)入口参数 无功能号 AH=0BH类型号 21H出口参数 AL=FFH,表示有键按下。AL=0,表示无键按下。实现功能 检测键盘状态(通过检测键盘缓冲区实现),64,例 利用0B功能实现按键退出循环。、continue:、MOV AH,0BH;检测键盘缓冲区是否有键按下 INT 21H CMP AL,0FFH JNZ continue;无键按下继续循环、MOV AH,4CH INT 21H,65,6.保存中断向量(35H功能)入口参数 AL=要保存向量的中断类型号N功能号 AH=35H类型号 21H出口参数 BX=(0:N4)ES=(0:N4+2)实现功能 将类型号N 的中断向量保存在ES、BX中,66,方法一:用堆栈保存中断向量MOV AL,09H;取中断向量 MOV AH,35HINT 21HPUSH ES;用堆栈保存PUSH BX、,例 保存09H类型的中断向量,67,方法二:用变量保存中断向量 save_09cs DW?;定义变量 save_09ip DW?、MOV AX,SEG save_09cs MOV DS,AX MOV AL,09H;取中断向量 MOV AH,35H INT 21H MOV save_09cs,ES;用变量保存 MOV save_09ip,BX,68,7.设置中断向量(25H功能),入口参数 AL=要设置向量的中断类型号N DS:DX=中断子程的入口地址(中断向量)功能号 AH=25H 类型号 21H 出口参数 无 实现功能 将类型N的中断向量设置在向量表中,即(0:N 4)=类型N中断子程入口地址的偏移值(0:N 4+2)=类型N中断子程入口地址的段值,69,例1 设置中断子程Sound 的中断向量,类型号为60H,code SEGMENT ASSUME CS:codestart:、MOV AX,SEG sound MOV DS,AX MOV DX,Offset sound MOV AL,60H MOV AH,25H INT 21H、INT 60H;调用60H中断子程、MOV AH,4CH INT 21H,;中断子程 sound PROC、IRET sound ENDP code ENDS END start,70,汇编语言程序结构作业:一、编写完整汇编语言程序,要求上机调试出来。:1清屏,在10行5列上显示“Hello China!”2将0AH功能输入的字符串用09H功能显示出来。二、问题回答 下面程序,汇编连接后,在DOS下执行,从键盘输入123456789,回车,屏幕上能显示Hello World!吗?为什么?用在DEBUG下查看到的data段的内容来说明。,71,data SEGMENT max DB 11,?,4 DUP(?)string DB Hello World!,$data ENDScode SEGMENT ASSUME CS:code,DS:datastart:MOV AX,data;置缓冲区地址于DS:DX MOV DS,AX LEA DX,max MOV AH,0AH;调用0AH输入功能 INT 21H LEA DX,string MOV AH,09H;调用09H显示功能 INT 21H MOV AH,4CH INT 21Hcode ENDS END start,

    注意事项

    本文(BIOS和DOS中断功能调用.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开