《汇编语言第6章系统功能调用.ppt》由会员分享,可在线阅读,更多相关《汇编语言第6章系统功能调用.ppt(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第6章章 系统功能调用系统功能调用n6.1 系统功能调用概述系统功能调用概述n6.2 DOS系统功能调用系统功能调用n6.3 BIOS系统功能调用系统功能调用6.1 系统功能调用概述n(1)直接访问硬件n(2)使用BIOS功能调用n(3)使用DOS功能调用 6.2 DOS系统功能调用系统功能调用n常用常用DOS系统功能调用系统功能调用 n DOS系统功能调用实例系统功能调用实例 常用常用DOS系统功能调用系统功能调用n1、DOS功能调用概述功能调用概述n2、调用方法、调用方法n3、DOS功能调用分类功能调用分类n4、常用、常用DOS系统功能调用系统功能调用1、DOS功能调用概述功能调用概述n
2、为了方便程序员的使用,把这些子程序编写成相对独立的程序模块并且编上号。程序员利用汇编语言可方便地调用这些子程序。程序员调用这些子程序可减少对系硬件环境的考虑和依赖,从而一方面可大大精简应用程序的编写,另一方面可使程序有良好的通用性。这 些编了号的可由程序员调用的子程序就称为DOS功能调用或系统调用。例例6-1 用 09H 号功能调用,显示输出指定的串字符串。n CODE SEGMENTn ASSUME CS:CODE,DS:CODEn ORG 100H ;设置偏移地址n START:PUSH CSn POP DS;代码段段地址送 DSn LEA DX,STRING;DX字符串的首地址n MOV
3、 AH,09H ;09H 号功能调用n INT 21Hn MOV AH,4CH ;执行 4CH 号功能调用,终止程序运行返回 DOSn INT 21Hn STRING DB Welcome to study HUIBIAN!,$n CODE ENDSn END START1、DOS功能调用概述功能调用概述nDOS功能的调用主要包括下面三个方面的子程序:n基本I/O子程序;n文件管理子程序;n其他(包括内存管理、置取时间、置取中断向量、终止程序等)。2、调用方法、调用方法nDOS系统功能调用的方法一般可分为以下几步:n根据所需的功能调用设置入口参数的,但大部分功能调用需要入口参数,在调用前应按要
4、求准备好入口参数;n把功能调用号送AH寄存器;n发软中断指令“INT 21H”;n可根据有关功能调用的说明取得出口参数。大部分功能调用都有出口参数,部分功能调用没有出口参数。3、DOS功能调用分类功能调用分类n(1)字符I/O管理 n(2)初级文件管理 n(3)高级文件管理 n(4)内存管理 n(5)作业管理 n(6)其他资源管理 4、常用、常用DOS系统功能调用系统功能调用n1、01H键盘输入并回显 n格式:MOVAH,1n INT 21Hn功能:从键盘输入字符的ASCII码送入寄存器AL中,并送显示器显示 4、常用、常用DOS系统功能调用系统功能调用n2、02H显示输出n格式:MOV DL
5、,待显示字符的ASCII码n MOVAH,2n INT21H n功能:将DL寄存器中的字符送显示器显示,如果DL中为(CTRL)+(BREAK)的ASCII码,则退出。4、常用、常用DOS系统功能调用系统功能调用n3、03H异步通信输入n4、04H异步通信输出n5、05H打印机输出n格式:MOVDL,待打印字符的ASCII码n MOV AH,5n INT 21Hn功能:将DL寄存器中的字符送打印机打印。4、常用、常用DOS系统功能调用系统功能调用n6、06H直接控制台输入输出字符 n06H功能是从键盘输入一个字符,或输出一个字符到屏幕,有两种入口参数:nDL0FFH,表示是从键盘输入字符。nZ
6、F=0,将字符的ASCII码送入寄存器AL。nZF=1,寄存器AL中不是键入字符ASCII码。nDL0FFH,表示输出一个字符到屏幕。此时DL寄存器中内容就是输出字符的ASCII码。此调用与01H和02H功能调用不同之处在于不检查Ctrl+Break。4、常用、常用DOS系统功能调用系统功能调用n7、07H直接控制台输入无回显n07H功能是等待从标准输入设备(键盘)输入字符(ASCII码)并送入AL寄存器中,但不送屏幕显示。没有入口参数,出口参数是输入字符码,出口参数送入AL寄存器中 4、常用、常用DOS系统功能调用系统功能调用n8、08H键盘输入无回显n08H功能是等待从键盘输入字符,将其A
7、SCII码送入AL寄存器中。其没有入口参数,出口参数是输入字符码,出口参数送入AL寄存器中。08H与01H系统功能调用不同之处在于键入的字符不送屏幕显示。4、常用、常用DOS系统功能调用系统功能调用n9、09H显示字符串n格式:LEA DX,待显示字符串首偏移地址n MOV AH,9n INT 21Hn功能:将当前数据区中以$结尾的字符串送显示器显示。4、常用、常用DOS系统功能调用系统功能调用n10、0AH键盘输入字符串到缓冲区 n格式:LEADX,缓冲区首偏移地址n MOV AH,10n INT 21Hn功能:从键盘上输入一字符串到用户定义的输入缓冲区内,并送显示器显示。4、常用、常用DO
8、S系统功能调用系统功能调用n11、0BH检查键盘状态n0BH功能是键盘有任意键按下时,则将0FFH送入AL寄存器中,并检查该键是否是Ctrl+Break,如果是则退出。无任何键按下时则将0送入AL寄存器中。4、常用、常用DOS系统功能调用系统功能调用n12、2BH设置日期n2BH的功能是设置有效日期。n入口参数:nCX=年nDH=月nDL=日n出口参数存放在AL寄存器中,AL=0表示设置成功,日期有效;AL=0FFH表示设置无效。4、常用、常用DOS系统功能调用系统功能调用n13、2AH取得日期n2AH的功能是将当前有效日期取到CX和DX寄存器中。其出口参数是年号、月份和日期,年号置入CX寄存
9、器中,月份和日期置入DX寄存器中。4、常用、常用DOS系统功能调用系统功能调用n14、2DH设置时间n2DH的功能是设置有效时间。n入口参数:nCH=时nCL=分nDH=秒nDL=10毫秒;n出口参数存放在AL中,AL=0表示设置时间有效;AL=0FFH表示设置无效。4、常用、常用DOS系统功能调用系统功能调用n15、2CH取得时间n2CH功能是将当前有效时间取到CX和DX寄存器中;其没有入口参数,出口参数存放在CX和DX寄存器中,时间存放格式与2DH 号系统功能调用相同。4、常用、常用DOS系统功能调用系统功能调用n16、4CH返回操作系统n4CH功能是结束当前正在执行的程序,并返回操作系统
10、,屏幕显示操作系统提示符。DOS中断的功能、入口和出口参数中断功能入口参数出口参数INT 20H程序正常退出cs=程序段前缀段地址INT 21H系统功能调用AH=调用号功能调用入口参数功能调用出口参数 INT 22H结束退出INT23HCtrl+Break退出INT 24H出错退出INT 25H读盘AL=盘号CX=读入扇区数DX=起始逻辑扇区号Ds:BX:缓冲区首址CF=1表示读盘出错 CF=O表示读盘正常 INT 26H写盘AL=盘号既:写盘扇区数DX=起始逻辑扇区号DS:缓冲区的段地址BX=缓冲区的偏移地址CF=1表示写盘出错 CF=0表示写盘正常 INT 27H驻留退出CS=程序段前缀段
11、地址Dx=驻留程序的长度6.3 BIOS系统功能调用系统功能调用n6.3.1 BIOS系统功能调用概述系统功能调用概述n6.3.2 BIOS系统功能调用实例系统功能调用实例6.3.1 BIOS系统功能调用概述系统功能调用概述nBIOS系统功能除处理系统的全部内部中断外,还提供了许多基本输入输出设备级的控制功能。这时我们变成时能够用到的基本的同输入输出之间的基本界面。n在只读存储器中提供了BIOS基本的输入输出系统,它占用系统板上8K字节的ROM区,又称ROMBIOS。在系统板的ROM中存放着一套程序称为BIOS(基本输入输出系统),BIOS中主要包含以下几部分内容:n (1)硬件系统的检测和初
12、始化程序;n (2)外部中断和内部中断的中断例程;n (3)用于对硬件设备进行I/O操作的中断例程;n (4)其他和硬件系统相关的中断例程。nBIOS中主要包含以下几部分内容:n (1)硬件系统的检测和初始化程序;n (2)外部中断和内部中断的中断例程;n (3)用于对硬件设备进行I/O操作的中断例程;n (4)其他和硬件系统相关的中断例程。BIOS使用的中断类型号中断号功能中断号功能10H显示器I/O调用18H磁带BASIC接口11H设备检验调用19H自检程序接口12H存储器检验调用1AH时间调用13H软盘I/O调用1BHctrlbreak control14H异步通信口调用1CH定时处理1
13、5H磁带I/O调用1DH显示器参数表16H磁盘I/O调用1EH软盘参数表17H打印机I/O调用1FH字符点阵结构参数表n键盘I/O中断调用(16H中断调用)n16H中断调用有三个功能,功能号为02。n(1)AH=0 n功能:从键盘读字符到AL寄存器,当无键按下时,处于等待状态。n入口参数:AH=0n出口参数:AL中为键盘输入的字符的ASCII码值,AH中为扫描码。n(2)AH=1 n功能:读键盘缓冲区字符到AL寄存器中,并置ZF标志位,若按过任意一键(即键盘缓冲区不空),置ZF=0,否则ZF=1.n入口参数:AH=1n出口参数:若ZF=0,则AL中为输入的字符的ASCII码。n由于该功能是从键
14、盘缓冲区读数据,当没有任何键被按下时,不等待而立即返回。一般通过检测ZF标志来控制某一程序的执行.n3)AH=2 n功能:读取特殊功能键的状态。n入口参数:AH=2n出口参数:AL为各特殊功能键的状态 n2、键盘09H的处理过程n(1)从键盘接口的输出缓冲寄存器(60H)读取系统扫描码。n(2)判断该键是单独按下或是与组合键(shift、ctrl或alt)一起按下。若字符键单独按下,将扫描码转换为相应的ASCII码或扩展码写入键盘缓冲区。n(3)如果是换档键(如caps lock、ins等),将其状态存入BIOS数据区中的键盘标志单元。n(4)如果是组合键(如ctrl+alt+del),则直接
15、执行,完成其相应的功能。n(5)对于中止组合键(如ctrl+C或ctrl+break),强行中止应用程序的执行,返回DOS.n(6)将转换的ASCII码作为低字节,以原来的系统扫描码作为高字节存入键盘缓冲区,供系统调用。n(7)在完成上述任务后,结束中断调用并返回。至此,一次按键输入的信息才真正送入计算机之中。n2、打印机I/O中断调(17H中断调用)n17H中断调用有三个功能,功能号为02。n(1)AH=0 本功能为把AL中指定的字符在打印机上打印出来。n(2)AH=1 本功能为对指定的打印机初始化。n(3)AH=2 本功能为读取打印机的状态信息。n3、时钟中断调用(1AH中断调用)n1AH
16、中断调用有二个功能。功能号为0和1。n(1)AH=0 本功能为读取时钟计数器的当前值。n(2)AH=1 本功能为设置时钟计数器的当前值。例例6-9编写一个用键盘输入文件名,若输入的文件存在,则显示其内容,否则,显示文件不存在的信息的程序,若输入的字符串为空,则程序运行结束。n.MODELSMALLn.DATAn File DB30,?,30 DUP(?),0n Err DBThis file isnt found,10,13,$n BuffDB128 dup(?)n.CODE n.STARTUP nstart:nMOV AH,0AH;利用0AH功能,输入文件名nLEA DX,File ;DS:
17、DX=输入缓冲区逻辑地址nINT 21H;nMOV BL,File+1nCMP BL,0;检查文件名是否为空nJZ stop;若空则跳转到stopnXOR BH,BH nMOV FileBX+2,0 nMOV DX,Offset File+2 nMOV AH,3DH;打开文件功能 ;DS:DX=子目录说明串首地址 nMOV AL,0H;AL=打开方式(0为只读)nINT 21H nJNC found nLEA DX,Err nMOV AH,9H;显示字符串功能nINT 21H nJMP start nfound:n MOV BX,AX;把文件句柄赋给BX nview:n LEA DX,BUFF
18、 nMOV AH,3FH;读文件内容nMOV CX,128 nINT 21H nCMP AX,0nJZ cls;读取的字符数为0 nJC cls;读错误 nPUSH BX;保存文件句柄 nMOV DX,offset buff nMOV CX,AX nMOV BX,1;屏幕设备的句柄规定为1 nMOV AH,40H;在屏幕上显示读出的字符nINT 21H nPOP BX;恢复文件句柄 nJMP view ncls:n MOV AH,3EH;关闭文件nINT 21H nJMP START nstop:n.EXIT 0 n END 例例6-10 编写一个创建子目录的程序,若目录创建成功,显示成功信息
19、,否则,显示创建失败信息,用键盘输入一个目录路径名,若输入的字符串为空,则程序运行结束;n.MODELSMALLn.DATAn DirDB30,?,30 DUP(?),0n Vnews DBVictory,10,13,$n Fnews DBFailure,10,13,$n.CODE n.STARTUP nstart:MOV AH,0AH ;利用0AH功能,输入目录名nLEA DX,Dir nINT 21H nMOV BL,Dir+1 nCMP BL,0 nJZ stop;检查输入的字符串是否为空 n nXOR BH,BH nMOV DirBX+2,0;确保字符串以0为结束标志nMOV DX,O
20、ffset Dir+2 nMOV AH,39H;利用39H功能,创建子目录nINT 21H n.IF CARRY?nLEADX,Fnewsn.ELSEnLEADX,Vnewsn.ENDIF nMOV AH,9H nINT 21H nJMP start nstop:n.EXIT 0 n END6.3.2 BIOS系统功能调用实例系统功能调用实例n例6-14 试编制键入一个39间的数字,输出一个用“*”组成的三角形的源程序。例如,键入5,输出的三角形如下所示:n*n*n*n*n*例例6-11 在每页的开始处打印“Hello world”字符串,并空一行才打印其它内容;当打印机不能正常打印(非硬件故
21、障)时,提示其原因。n.MODEL SMALLn.DATAn TopDB0CH,Hello World,0DH,0AH,0AHn CountEQU$-Topn NEWS1DBTime Out Error$”n NEWS2DBIntput Or Output Error$”n NEWS3DBOut of Paper$”n TimeERREQU01Hn InOut EQU08Hn OutP EQU20Hn.CODEn.STARTUPnMOV AH,1 nMOV DX,0 ;初始化连接在LPT1上的打印机nINT 17Hn nMOV AH,2 nMOV DX,0;读取LPT1打印机的状态字节nINT
22、 17H nTEST AL,TimeERR or InOut or OutP nJNZ ErrNEWS nErrNEWS:nTEST AL,TimeERR nJZ errmsg1 nLEA DX,NEWS1 nJMP displaynerrmsg1:nTEST AL,InOut nJZ errmsg2 nLEA DX,NEWS2 nJMP disp nerrmsg2:n LEA DX,NEWS3 ndisplay:n MOV AH,9H n INT 21H nMOV CX,Count;待打印的字符个数 nXOR BX,BX nStart:nMOV AH,5H;调用05H功能打印字符nMOV D
23、L,TopBX nINT 21H nINC BX nLOOP startn.EXIT0 nENDnCODE SEGMENTnASSUME CS:CODEnSTART:MOV AH,0nINT 16HnCMP AL,33HnJC STARTnCMP AL,3AHnJNC STARTnAND AL,0FHnMOV BL,ALnMOV BH,0nSJW1:MOV DL,0AHnMOV AH,2nINT 21HnMOV DL,0DHnMOV AH,2nINT 21HnINC BHnCMP BL,BHnJNC SJW2nMOV AH,4CHnINT 21HnSJW2:XOR CL,CLnSJW3:MOV DL,*nMOV AH,2nINT21HnINC CLnCMP CL,BHnJNZ SJW3nJMP SJW1nCODE ENDSnEND START