第8章 输入输出和中断PPT讲稿.ppt
第第8章章 输入输出和中输入输出和中断断第1页,共11页,编辑于2022年,星期一22 九月 202228.3 中断功能的分类中断功能的分类BIOS功能调用功能调用BIOS例例行行程程序序是是系系统统加加电电自自检检时时,所所用用到到的的主主要要I/O设设备备程程序序以及接口控制等功能模块以及接口控制等功能模块;n直接调用这些模块,使程序员不必了解硬件接口的特性;直接调用这些模块,使程序员不必了解硬件接口的特性;DOS功能调用功能调用DOS磁磁盘盘操操作作系系统统,有有IBMBIO.COM和和IBMDOS.COM两两个个模块;模块;DOS模模块块提提供供了了更更多多更更必必要要的的测测试试,使使用用DOS调调用用比比使使用用相相应功能的应功能的BIOS操作更简易,而且对硬件的依赖性更少些。操作更简易,而且对硬件的依赖性更少些。第2页,共11页,编辑于2022年,星期一22 九月 20223DOS功能调用的使用方法功能调用的使用方法1.设置入口参数设置入口参数(AH)=功能调用号功能调用号其他参数根据功能需要而不同,也可没有;其他参数根据功能需要而不同,也可没有;2.执行指令执行指令INT 21H,调用相应的,调用相应的DOS模块模块3.获得输出参数获得输出参数根据不同的功能从不同的位置获取,也可没有。根据不同的功能从不同的位置获取,也可没有。第3页,共11页,编辑于2022年,星期一常用的常用的DOS功能调用功能调用单字符输入单字符输入01号功能调用号功能调用单字符输出单字符输出02号功能调用号功能调用字符串输出字符串输出 09号功能调用号功能调用字符串输入字符串输入0A号功能调用号功能调用程序结束返回程序结束返回4C号功能调用号功能调用22 九月 20224第4页,共11页,编辑于2022年,星期一22 九月 20225功能调用号:功能调用号:01H入口参数:无入口参数:无出口参数出口参数:(AL)=输入字符的输入字符的ASCII码码举例:从键盘上获取一位十进制数据。举例:从键盘上获取一位十进制数据。指令序列:指令序列:执行时状态:执行时状态:光标等待键盘输入光标等待键盘输入,输入一个字符,输入一个字符“1”后返回;后返回;n在屏幕上可看到输入的字符;在屏幕上可看到输入的字符;出口参数:出口参数:(AL)=31H结果处理:结果处理:所需的十进制数据所需的十进制数据=(AL)-30H1、单字符输入(、单字符输入(01号功能调用)号功能调用)MOV AH,01HINT 21H第5页,共11页,编辑于2022年,星期一22 九月 202262、单字符输出(、单字符输出(02号功能调用)号功能调用)功能调用号:功能调用号:02H入口参数:入口参数:(DL)=待输出字符的待输出字符的ASCII码码出口参数出口参数:无:无举例:输出显示变量举例:输出显示变量CHAR所存放的字母所存放的字母指令序列:指令序列:MOV AH,02HMOV DL,CHARINT 21H若若CHAR中存放的是中存放的是61H,则以上指令序列执行完,则以上指令序列执行完毕会在屏幕上显示字符毕会在屏幕上显示字符“a”。第6页,共11页,编辑于2022年,星期一22 九月 202273、字符串输出(、字符串输出(09号功能调用)号功能调用)功能调用号:功能调用号:09H入口参数:入口参数:(DS:DX)=待输出字符串的起始地址待输出字符串的起始地址欲输出字符串欲输出字符串必须以必须以“$”为结束为结束事先存放于存储器中。事先存放于存储器中。出口参数出口参数:无无试将变量试将变量String保存的字符串显示出来。保存的字符串显示出来。变量定义:变量定义:String DB “ABCD$”指令序列:指令序列:“$”是作为显示终止符使用的!MOV AX,SEG StringMOV DS,AXLEA DX,StringMOV AH,09HINT 21H第7页,共11页,编辑于2022年,星期一22 九月 202284、字符串输入(、字符串输入(0A号功能调用)号功能调用)功能调用号:功能调用号:0AH入口参数:入口参数:(DS:DX)=存放输入字符串的起始地址存放输入字符串的起始地址注意:存放输入字符串的缓冲区注意:存放输入字符串的缓冲区必须事先按格式定义必须事先按格式定义;缓冲区定义格式如:缓冲区定义格式如:BUF DB n,?,n DUP(?)出口参数出口参数:在缓冲区中保存输入字符串及其长度。在缓冲区中保存输入字符串及其长度。缓冲区可接收的最大字符数实际接收的字符个数接收的字符串第8页,共11页,编辑于2022年,星期一22 九月 20229从键盘上接收一个字符串举例从键盘上接收一个字符串举例数据段定义:数据段定义:DATA1 SEGMENT buf DB 5,?,5 DUP(0)DATA1 ENDS输入字符串的指令序列:输入字符串的指令序列:MOV AX,SEG bufMOV DS,AXLEA DX,bufMOV AH,0AHINT 21H以上指令序列执行,光标等待键盘输入,输入以上指令序列执行,光标等待键盘输入,输入字符串字符串“abcd”,以回车结束以回车结束,即返回,存储,即返回,存储单元的状态如右图。单元的状态如右图。05-0000000000buf04616263640D第9页,共11页,编辑于2022年,星期一22 九月 2022100A号号DOS功能调用使用注意事项功能调用使用注意事项缓冲区设置:缓冲区设置:由于字符串输入的由于字符串输入的回车结束符也会保存于缓冲区中回车结束符也会保存于缓冲区中,所以,所以一般设置缓冲区的大小应比实际需接收的字符长度多一个一般设置缓冲区的大小应比实际需接收的字符长度多一个单元。单元。缓冲区初始化:缓冲区初始化:若输入的字符串最终需要输出,则可在缓冲区定义时,将若输入的字符串最终需要输出,则可在缓冲区定义时,将其初始化为其初始化为“$”,以使输出的字符串能够正常结束。,以使输出的字符串能够正常结束。注意,最后输入的回车符的处理。注意,最后输入的回车符的处理。第10页,共11页,编辑于2022年,星期一22 九月 202211例例.输入字符串,并换行回显。输入字符串,并换行回显。DATA1 SEGMENT buf DB 10,?,10 DUP($)DATA1 ENDSCODE1 SEGMENT ASSUME CS:CODE1,DS:DATA1START:MOV AX,DATA1 MOV DS,AX LEA DX,buf MOV AH,0AH INT 21HMOV AH,2MOV DL,10INT 21HMOV DL,13INT 21HLEA DX,buf+2 MOV AH,09HINT 21HMOV AX,4C00HINT 21HCODE1 ENDSEND START第11页,共11页,编辑于2022年,星期一