资源描述:
《微机原理与接口技术第七章3.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、§7.3DOS功能调用一、概述:例:编写完整汇编语言程序,要求:(1)清屏,在10行5列上显示“HelloChina!”(2)将0AH功能输入的字符串,用09H功能显示出来。结果如下:dataSEGMENTmaxDB11,?,4DUP(?)stringDB‘HelloWorld!’,’$’dataENDScodeSEGMENTASSUMECS:code,DS:data1start:MOVAX,data;置缓冲区地址于DS:DXMOVDS,AXLEADX,maxMOVAH,0AH;调用0AH输入功能INT21HLEADX,stringMOVAH,09H;调用09
2、H显示功能INT21HMOVAH,4CHINT21H;返回DOScodeENDSENDstart2PC—DOS是IBMPC微型计算机的磁盘操作系统。它为用户提供了许多命令,也有80多个子程序可供用户调用。这些子程序的功能主要是实现对存储器和基本I/O设备的管理等。为了便于调用将所有子程序顺序编号,如PCDOS2.0有87个子程序,编号从0开始到57H。用户编程原则①尽可能使用DOS的系统功能调用,提高程序可移植性。②在DOS功能不能实现情况下,考虑用BIOS功能调用。③在DOS和BIOS的中断子程不能解决问题时,使用IN/OUT指令直接控制硬件。31.调用方法
3、设置入口参数在AH设置功能号m执行中断指令INTN分析、应用出口参数42、DOS功能调用要注意的问题使用DOS功能调用还要注意下列问题:(1)从键盘输入的字符由系统自动转换为ASCII码,在进行数据处理时要特别注意;(2)需要在屏幕上显示的字符要在程序中将其转换为ASCII码。5二、DOS系统功能调用(21H类型中断调用)1.显示单字符(02H功能)入口参数DL=要显示字符的ASCII码功能号AH=02H类型号INT21H出口参数无实现功能显示指定字符,光标随动。例显示字符AMOVDL,‘A’MOVAH,02HINT21H62.显示字符串(09H功能)入口参数
4、①定义要显示的字符串,字符串尾应为’$’,作为结束显示的标志。②DS:DX=字符串的首地址功能号AH=09H类型号21H出口参数无实现功能显示字符串,遇’$’停止显示,光标随动。7例编程显示字符串’TsinghuaUniversity’dataSEGMENT;定义显示的子符串striDB‘TsinghuaUniversity’,‘$’dataENDScodeSEGMENTASSUMECS:code,DS:datastart:MOVAX,data;置缓冲区地址于DS:DXMOVDS,AXLEADX,striMOVAH,09H;调显示功能INT21HMOVAH,4
5、CH;返回DOSINT21HcodeENDSENDstart83.单字符输入(01H、07H、08H功能)①入口参数无功能号AH=01H类型号21H出口参数AL=键入字符的ASCII码实现功能等待从键盘输入一个字并在屏幕上回显,光标移动,检测Ctrl-Break键9例利用键盘输入的字符产生分支:MOVAH,1INT21H;等待从键盘输入CMPAL,‘Y’;是’Y’?JZyesCMPAL,‘y’;是’y’?JZyesno:......JMPexityes:......exit:...10②入口参数无功能号AH=07H类型号21H出口参数AL=键入字符的ASCII
6、码实现功能等待从键盘输入一个字符,不在屏幕上回显,不检测Ctrl-Break键11例用不带回显功能输入密码时:input:MOVAH,07H;等待从键盘输INT21HMOV[DI],AL;存入缓冲区CMPAL,0DH;是回车符?JNZinput;不是,继续输入check:、、、124.字符串输入(0AH功能)入口参数DS:DX=缓冲区的首地址(DS:DX)=限制最多输入的字符数功能号AH=0AH类型号21H出口参数(DS:DX+1)=实际键入的字符(不含回车符)从(DS:DX+2)开始顺序存放键入的字符串,回车符0DH为串尾最后一字符。实现功能等待从键盘输入字
7、符串,并存入设定的缓冲区内,同时回显字符串,光标随着移动,回车符使光标回到行首。注意事项:应按要求先定义缓冲区,再调用。13例应用0AH功能输入字符串。dataSEGMENT;定义缓冲区maxDB11;定义限制最多输入个数lenthDB?;用于存放实际输入个数striDB11DUP(?);用于存放输入的字符串dataENDScodeSEGMENTASSUMECS:code,DS:data14start:MOVAX,data;置缓冲区地址于DS:DXMOVDS,AXLEADX,maxMOVAH,0AHINT21H;调0A输入功能MOVCH,0MOVCL,lent
8、h;取字符串长度放CX中LEABX,s