首页 清华电子系李老师计算机硬件技术基础chap3-345课件

清华电子系李老师计算机硬件技术基础chap3-345课件

举报
开通vip

清华电子系李老师计算机硬件技术基础chap3-345课件第五节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功能)...

清华电子系李老师计算机硬件技术基础chap3-345课件
第五节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功能)复习内容:P239~P247预内容习:P110~P140作业:1、预习实验二其中:任务1、(2)(4),2必做,任务1、(1)(3)选做.2、选择其中之一大作业(1)、实验四任务1,作为家庭作业,在计算机上调通,经过教师检查签字(2)、阅读教课书中P125~P132(3.8.1~3.8.4节)的程序并写出 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf 。3.编写完整汇编语言程序, 要求 对教师党员的评价套管和固井爆破片与爆破装置仓库管理基本要求三甲医院都需要复审吗 上机调试出来:(1)清屏,在10行5列上显示“HelloChina!”(2)将0AH功能输入的字符串,用09H功能显示出来。在DOS下执行,从键盘输入‘123456789’回车,屏幕上能显示‘HelloWorld!’吗?为什么?用在DEBUG下查看到的data段的内容来说明。4.问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 回答下面程序,汇编连接后第五节BIOS和DOS中断功能调用(教材旧P238、新P239)一、概述二、BIOS功能调用三、DOS系统功能调用(21H类型中断调用)一、概述1.BIOS和DOS中断子程层次特点2.中断类型分类3.调用方法1.BIOS和DOS中断子程层次特点用户程序磁盘管理模块(DOS内核)MSDOS.SYS系统功能基本输入/输出BIOS模块IO.SYS设备驱动ROMBIOS基本I/O系统硬件装入命令处理模块COMMAND.COM用户命令DOS系统层次结构层次特点:ROMBIOS中的中断子程使用IN/OUT指令直接控制外设,实现与外设之间的输入/输出操作,以软件形式向其上层提供服务。IO.SYS中的中断子程(称基本输入/输出BIOS模块)调用ROMBIOS的基本I/O功能,向MSDOS.SYS提供设备驱动服务。用户程序磁盘管理模块(DOS内核)MSDOS.SYS系统功能基本输入/输出BIOS模块IO.SYS设备驱动ROMBIOS基本I/O系统硬件装入命令处理模块COMMAND.COM用户命令用户编程原则①尽可能使用DOS的系统功能调用,提高程序可移植性。②在DOS功能不能实现情况下,考虑用BIOS功能调用。③在DOS和BIOS的中断子程不能解决问题时,使用IN/OUT指令直接控制硬件。用户程序磁盘管理模块(DOS内核)MSDOS.SYS系统功能基本输入/输出BIOS模块IO.SYS设备驱动ROMBIOS基本I/O系统硬件装入命令处理模块COMMAND.COM用户命令⑥保留类型为DOS系统保留(1)指现在未用到,以后系统可能会用到。(2)已用到,但不向用户公开。为用户保留(1)被系统子程嵌套调用了的类型(如1BH、1CH)。使用户在系统功能基础上扩充功能。(2)系统未占用类型(如60H~67H)。⑦非中断向量类型对应向量表中的4个单元存放的不是中断向量。(如1DH、1EH、1FH、41H、46H、22H)通常是一些参数表的地址信息.中断向量分配表(续)中断向量分配表(续)3.调用方法设置入口参数在AH设置功能号m执行中断指令INTN分析、应用出口参数例1单字符显示功能调用MOVDL,‘A’;设置入口参数MOVAH,02H;设置功能号INT21H;执行中断调用例2单字符输入功能调用MOVAH,01H;设置功能号INT21H;执行中断调用CMPAL,0DH;分析、应用出口参数JZexit、、、二、BIOS功能调用基本输入/输出模块BIOS:实现对输入/输出设备的控制,内含0–1CH等类型中断子程,包括显示器、磁盘、键盘、打印机等标准外设的驱动程序。(参看中断类型分配表)BIOS功能调用指对BIOS模块中的中断子程的调用。③屏幕上各象素的显示信息,存放在显示缓冲区(显存)中。640KBRAM基本内存0000:00000040:00000050:00000070:0000A000:0000B000:0000C800:0000F600:0000FE00:0000FE00:1FFF显示缓存区(显存)硬盘驱动器控制ROM32KBROMBASIC8KBROMBIOSIO.SYS模块COMMAND.COM常驻模块MSDOS.SYS模块用户程序空间COMMAND.COM暂驻模块256KBROMDOS工作区ROMBIOS工作区128KBRAM保留区1KB中断向量表④显示器有两种显示方式:图形方式:将屏幕划分为m×n的点阵,在每个点的位置显示象素,一个点是一个象素。文本方式将屏幕划分为若干行和列,在每个网格位置上显示象素,一个字符是一个象素。~~~~640×480图形方式640点480点图形方式:将屏幕划分为m×n的点阵,在每个点的位置显示象素,一个点是一个象素。在文本方式下,对应屏幕上的每个字符,在显示缓冲区中占用两个单元:一个存放ASCII码,一个存放显示属性。41H07H42H07H61H70H62H70H、、、显示缓冲区(显存)字符A,黑底白字字符B,黑底白字字符a,白底黑字字符b,白底黑字据显存大小,可存储若干页的字符象素。例16KB显存能存储:80×25方式,4页(0~3),80×25×2×4=1600040×25方式,8页(0~7),40×25×2×8=160001.设置显示方式入口参数AL=显示方式值0040×25黑白文本方式0140×25彩色文本方式0280×25黑白文本方式0380×25彩色文本方式04320×320彩色图形方式功能号AH=00H类型号10H出口参数无实现功能将显示方式设置为指定形式例将显示方式设置为80×25彩色文本方式MOVAL,03HMOVAH,00INT10H2.清屏、清窗口功能入口参数AL=0CH=窗口左上角行号CL=窗口左上角列号DH=窗口右下角行号DL=窗口右下角列号BH=窗口属性功能号AH=06H或AH=07H类型号10H出口参数无实现功能按给定属性清除指定的窗口内容3.置光标位置光标控制开始显示的位置,计算机有专门的硬件控制光标的显示大小、位置。光标只在文本方式中出现,在图形方式下光标消失。~~~~~~~~~~~~~~~~0列0行79列24行5列1列1行2行置光标位置入口参数DH=行号DL=列号BH=页号功能号AH=02H类型号10H出口参数无实现功能将光标设置在指定的位置例将光标设置在2行5列的位置MOVDH,2MOVDL,5MOVBH,0MOVAH,2INT10H~~~~~~~~~~~~~~~~0列0行79列24行5列1列1行2行三、DOS系统功能调用(21H类型中断调用)1.显示单字符(02H功能)2.显示字符串(09H功能)3.单字符输入(01H、07H、08H功能)4.字符串输入(0AH功能)5.检测键盘状态(0BH功能)6.保存中断向量(35H功能)(第六章介绍)7.设置中断向量(25H功能)1.显示单字符(02H功能)入口参数DL=要显示字符的ASCII码功能号AH=02H类型号INT21H出口参数无实现功能显示指定字符,光标随动。例显示字符AMOVDL,‘A’MOVAH,02HINT21H例使光标回到下一行的行首。MOVDL,0DH;显示回车符MOVAH,02HINT21HMOVDL,0AH;显示换行符MOVAH,02HINT21H~~~~~~~~~~~~~~~~HelloWorld2.显示字符串(09H功能)入口参数①定义要显示的字符串,字符串尾应为’$’,作为结束显示的标志。②DS:DX=字符串的首地址功能号AH=09H类型号21H出口参数无实现功能显示字符串,遇’$’停止显示,光标随动。例编程显示字符串’TsinghuaUniversity’dataSEGMENT;定义显示的子符串striDB‘TsinghuaUniversity’,‘$’dataENDScodeSEGMENTASSUMECS:code,DS:datastart:MOVAX,data;置缓冲区地址于DS:DXMOVDS,AXLEADX,striMOVAH,09H;调显示功能INT21HMOVAH,4CH;返回DOSINT21HcodeENDSENDstart有关键盘①键盘通过键盘接口电路与计算机连接。②键盘上的键有三种类型:字符键A~Z,0~9等功能键F1~F12,PageUp等组合控制键Shift,Ctrl,Alt等③键盘上的每个键都有一个扫描码。◢◢据扫描码可确定操作的是哪个键、是按下键还是释放键;◢◢扫描码用一个字节表示。低7位是扫描码的数字编码,与键盘上的键一一对应;最高位D7位表示键的操作状态:当按下键时,D7=0;当释放键时,D7=1⑤键盘中断子程功能(09H类型中断子程)◢从键盘接口读取操作键的扫描码;◢将扫描码转换成字符码;大部分键的字符码为ASCII码,无ASCII码键(如组合键Shift、Ctrl等)的字符码为0。◢将键的扫描码、字符码存放在键盘缓冲区,供其它有关键盘的中断子程应用。④键盘接口对按下键和释放键均向计算机发出中断申请,如果中断响应条件满足,CPU转去执行键盘中断子程。键盘中断子程类型号为09H。3.单字符输入(01H、07H、08H功能)①入口参数无功能号AH=01H类型号21H出口参数AL=键入字符的ASCII码实现功能等待从键盘输入一个字符,并在屏幕上回显,光标移动,检测Ctrl-Break键例利用键盘输入的字符产生分支:MOVAH,1;等待从键盘输入INT21HCMPAL,‘Y’;是’Y’?JZyesCMPAL,‘y’;是’y’?JZyesno:......JMPexityes:......exit:...例在中断向量表中查找从键盘输入的字符,并将其个数用二进制形式显示出来。(scanskey.asm)codeSEGMENT;代码段开始ASSUMECS:codebegin:MOVAX,0000H;设置查找首地址MOVDS,AXMOVSI,0000HMOVCX,0400H;设置查找长度MOVBX,0;计算值初值MOVAH,01H;从键盘输入INT21H;输入关键字MOVDL,AL;保存在DL中next:LODSB;从串取CMPAL,DL;与关键字比较JNZpointINCBX;计算值加1point:LOOPnext;查找结束?CALLdisplay;调用显示子程MOVAH,4CH;调用4CH功能INT21H;返回DOS;用二进制显示BX内容子程displayPROCMOVCX,16;显示位数rotate:ROLBX,1MOVDL,BLANDDL,01HADDDL,30HMOVAH,2HINT21HLOOProtateRET;子程返回displayENDPcodeENDS;代码段结束ENDbegin②入口参数无功能号AH=07H类型号21H出口参数AL=键入字符的ASCII码实现功能等待从键盘输入一个字符,不在屏幕上回显,不检测Ctrl-Break键例用不带回显功能输入密码时:input:MOVAH,07H;等待从键盘输入INT21HMOV[DI],AL;存入缓冲区CMPAL,0DH;是回车符?JNZinput;不是,继续输入check:、、、、、、4.字符串输入(0AH功能)入口参数DS:DX=缓冲区的首地址(DS:DX)=限制最多输入的字符数功能号AH=0AH类型号21H出口参数(DS:DX+1)=实际键入的字符(不含回车符)从(DS:DX+2)开始顺序存放键入的字符串,回车符0DH为串尾最后一字符。实现功能等待从键盘输入字符串,并存入设定的缓冲区内,同时回显字符串,光标随着移动,回车符使光标回到行首。注意事项:应按要求先定义缓冲区,再调用。例应用0AH功能输入字符串。dataSEGMENT;定义缓冲区maxDB11;定义限制最多输入个数lenthDB?;用于存放实际输入个数striDB11DUP(?);用于存放输入的字符串dataENDScodeSEGMENTASSUMECS:code,DS:datastart:MOVAX,data;置缓冲区地址于DS:DXMOVDS,AXLEADX,maxMOVAH,0AHINT21H;调0A输入功能MOXCH,0MOVCL,lenth;取字符串长度放CX中LEABX,stri;取字符串首址于BX中MOVAL,[BX];应用输入字符、、、、、codeENDSdataSEGMENT;定义缓冲区maxDB11;定义限制最多输入个数lenthDB?;用于存放实际输入个数striDB11DUP(?);用于存放输入的字符串dataENDS从键盘输入‘ABCD’,回车,内存的存放结果:0B04414243440D00max07000000000000000080a0b0f12345690c0d0elenthstri地址内容DS:DX如下编程与上例相同:dataSEGMENTmaxDB11等价于:DB?maxDB11,?,11DUP(?)DB11DUP(?)dataENDScodeSEGMENTASSUMECS:code,DS:datastart:MOVAX,data;置缓冲区地址于DS:DXMOVDS,AXLEADX,maxMOVAH,0AH;调输入功能INT21HMOXCH,0MOVCL,max+1;取字符串长度放CX中LEABX,max+2;取字符串首址于BX中MOVAL,[BX];应用输入字符、、、codeENDSdataSEGMENTmaxDB11DB?DB11DUP(?)dataENDS从键盘输入‘ABCD’,回车,内存的存放结果:等价于maxDB11,?,11DUP(?)0B04414243440D00max07000000000000000080a0b0f12345690c0d0e地址内容DS:DX0AH功能执行过程:①若(DS:DX)字节单元的值为0,则不等待从键盘输入,结束调用。②若(DS:DX)字节单元的内容大于0,则等待从键盘输入,并把输入键的ASCII码顺序存放在DS:DX+2开始的单元,按回车键表示结束输入。当按下键的个数超过(DS:DX)中值,发出警告声’嘟嘟’,不再接收输入的数据,直到输入回车键。③将实际输入的字符个数(不包括回车键)填入(DS:DX+1),结束调用。DS:DX000000000000000000000000000000000AH功能注意事项:◢输入的字符均带回显,且光标随字符移动。当输入回车符结束时,也回显回车符。表现为功能调用结束后,光标回到了行首。◢回车符0DH作为一个输入的字符存放在字符串尾,但计数输入个数时,不包括回车键。实际最多能输入的字符数=限制的最多数-1(回车符占一个)◢执行完0AH功能后,DS和DX的值不变,DS:DX仍指向缓冲区的首地址。◢整个缓冲区的大小应为:限制的最多数+2maxDB11,?,11dup(?)例利用DEBUG查看0A功能输入结果。dataSEGMENTmaxDB11,?,11DUP(?)dataENDScodeSEGMENTASSUMECS:code,DS:datastart:MOVAX,data;置缓冲区地址于DS:DXMOVDS,AXLEADX,maxMOVAH,0AH;调输入功能INT21HMOVCH,0MOVCL,max+1;取输入长度到CX中MOVAH,4CH;返回DOSINT21HcodeENDSENDstartD:\MASM>DEBUGTEST0a.exe;装入执行文件-U;反汇编程序129E:0000B89D12MOVAX,129D129E:00038ED8MOVDS,AX129E:00058D160000LEADX,[0000]129E:0009B40AMOVAH,0A129E:000BCD21INT21129E:000DB500MOVCH,00129E:000F8A0E0100MOVCL,[0001]129E:0013B44CMOVAH,4C129E:0015CD21INT21、、、-D129D:0L10;查看程序执行前缓冲区内容129D:00000B00000000000000-0000000000000000................-G000D;执行程序Hello;从键盘输入字符串Programterminatednormally-D129D:0L10;查看程序执行后缓冲区内容129D:00000B0548656C6C6F0D-0000000000000000..Hello.........-思考:1.若将程序改为如下形式,设想程序执行的结果。dataSEGMENTmaxDB100HDUP(?)dataENDScodeSEGMENTASSUMECS:code,DS:datastart:MOVAX,data;置缓冲区地址于DS:DXMOVDS,AXLEADX,maxMOVAH,0AH;调输入功能INT21HMOVAH,4CH;返回DOSINT21HcodeENDSENDstart结果是:不等待输入,结束0AH功能调用。0000000000000000max07000000000000000080a0b0f12345690c0d0e地址内容DS:DX注意:由于DS:DX限制输入最大字符数为0,所以不等待输入,结束0AH功能调用。原因是:2.若将程序改为如下形式,设想程序执行的结果。dataSEGMENTmaxDW100H,?,100HDUP(?);定义为字类型dataENDScodeSEGMENTASSUMECS:code,DS:datastart:MOVAX,data;置缓冲区地址于DS:DXMOVDS,AXLEADX,maxMOVAH,0AH;调输入功能INT21HMOVAH,4CH;返回DOSINT21HcodeENDSENDstart结果是:不等待输入,结束0AH功能调用。0001000000000000max07000000000000000080a0b0f12345690c0d0e地址内容DS:DX注意:0AH功能以字节类型应用DS:DX指向的缓冲区。并不随缓冲区类型定义的变化而变化。原因是:例编程从键盘输入字符串,给出显示提示’Pleaseinput:’dataSEGMENTstriDB‘PleaseInput:’,’$’maxDB11,?,11DUP(?)dataENDScodeSEGMENTASSUMECS:code,DS:datastart:MOVAX,data;置缓冲区地址于DS:DXMOVDS,AXLEADX,striMOVAH,09H;显示提示INT21HLEADX,max;等待从键盘输入MOVAH,0AHINT21HMOVAH,4CHINT21HcodeENDSENDstart利用DOS功能调用,编写小程序D:\MASM>DEBUGe0a09.exe-U;查看程序129F:0000B89D12MOVAX,129D129F:00038ED8MOVDS,AX129F:00058D160000LEADX,[0000]129F:0009B409MOVAH,09129F:000BCD21INT21129F:000D8D160F00LEADX,[000F]129F:0011B40AMOVAH,0A129F:0013CD21INT21129F:0015B44CMOVAH,4C129F:0017CD21INT21-D129D:0L20;执行程序前查看data段内容129D:0000506C656173652049-6E707574203A240BPleaseInput:$.129D:00100000000000000000-0000000000000000................-G;执行程序PleaseInput:Hello!Programterminatednormally-D129D:0L20;执行程序后查看data段内容129D:0000506C656173652049-6E707574203A240BPleaseInput:$.129D:00100648656C6C6F210D-0000000000000000.Hello!.........-data段内存情况:striPleaseInput:$0B06Hello!0D0000000000000000max思考:程序中少了一个’$’符的后果。dataSEGMENTstriDB‘PleaseInput:’maxDB11,?,11DUP(?)dataENDScodeSEGMENTASSUMECS:code,DS:datastart:MOVAX,data;置缓冲区地址于DS:DXMOVDS,AXLEADX,striMOVAH,09H;显示提示INT21HLEADX,max;等待从键盘输入MOVAH,0AHINT21HMOVAH,4CHINT21HcodeENDSENDstartdataSEGMENTstriDB‘PleaseInput:’maxDB11,?,11DUP(?)dataENDSstriPleaseInput:0B0000000000000000000000000000000000maxB8A8128ED88D160000B409CD218D160Estart注意:09H功能只在遇到’$’符才结束显示。5.检测键盘状态(0BH功能)入口参数无功能号AH=0BH类型号21H出口参数AL=FFH,表示有键按下。AL=0,表示无键按下。实现功能检测键盘状态(通过检测键盘缓冲区实现)例利用0B功能实现按键退出循环。、、continue:、、、、、、MOVAH,0BH;检测键盘缓冲区是否有键按下INT21HCMPAL,0FFHJNZcontinue;无键按下继续循环、、、、MOVAH,4CHINT21H6.保存中断向量(35H功能)入口参数AL=要保存向量的中断类型号N功能号AH=35H类型号21H出口参数BX=(0:N×4)ES=(0:N×4+2)实现功能将类型号N的中断向量保存在ES、BX中方法一:用堆栈保存中断向量MOVAL,09H;取中断向量MOVAH,35HINT21HPUSHES;用堆栈保存PUSHBX、、、例保存09H类型的中断向量方法二:用变量保存中断向量save_09csDW?;定义变量save_09ipDW?、、、MOVAX,SEGsave_09csMOVDS,AXMOVAL,09H;取中断向量MOVAH,35HINT21HMOVsave_09cs,ES;用变量保存MOVsave_09ip,BX7.设置中断向量(25H功能)入口参数AL=要设置向量的中断类型号NDS:DX=中断子程的入口地址(中断向量)功能号AH=25H类型号21H出口参数无实现功能将类型N的中断向量设置在向量表中,即(0:N×4)=类型N中断子程入口地址的偏移值(0:N×4+2)=类型N中断子程入口地址的段值例1设置中断子程Sound的中断向量,类型号为60HcodeSEGMENTASSUMECS:codestart:、、MOVAX,SEGsoundMOVDS,AXMOVDX,OffsetsoundMOVAL,60HMOVAH,25HINT21H、、INT60H;调用60H中断子程、、MOVAH,4CHINT21H;中断子程soundPROC、、、、、、、、、IRETsoundENDPcodeENDSENDstart
本文档为【清华电子系李老师计算机硬件技术基础chap3-345课件】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
海洋里徜徉
暂无简介~
格式:ppt
大小:1MB
软件:PowerPoint
页数:69
分类:
上传时间:2023-02-24
浏览量:0