汇编语言第6章系统功能调用.ppt_第1页
汇编语言第6章系统功能调用.ppt_第2页
汇编语言第6章系统功能调用.ppt_第3页
汇编语言第6章系统功能调用.ppt_第4页
汇编语言第6章系统功能调用.ppt_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章 系统功能调用 n6.1 系统功能调用概述 n6.2 DOS系统功能调用 n6.3 BIOS系统功能调用 6.1 系统功能调用概述 n(1)直接访问硬件 n(2)使用BIOS功能调用 n(3)使用DOS功能调用 6.2 DOS系统功能调用 n6.2.1常用DOS系统功能调用 n6.2.2 DOS系统功能调用实例 6.2.1常用DOS系统功能调用 n1、DOS功能调用概述 n2、调用方法 n3、DOS功能调用分类 n4、常用DOS系统功能调用 1、DOS功能调用概述 n为了方便程序员的使用,把这些子程序编 写成相对独立的程序模块并且编上号。程 序员利用汇编语言可方便地调用这些子程 序。程序员调用这些子程序可减少对系硬 件环境的考虑和依赖,从而一方面可大大 精简应用程序的编写,另一方面可使程序 有良好的通用性。这 些编了号的可由程序 员调用的子程序就称为DOS功能调用或系 统调用。 例6-1 用 09H 号功能调用,显示输 出指定的串字符串。 n CODE SEGMENT n ASSUME CS:CODE,DS:CODE n ORG 100H ;设置偏移地址 n START: PUSH CS n POP DS;代码段段地址送 DS n LEA DX,STRING;DX字符串的首地址 n MOV AH,09H ;09H 号功能调用 n INT 21H n MOV AH,4CH ;执行 4CH 号功能调用,终止程序运行返回 DOS n INT 21H n STRING DB Welcome to study HUIBIAN!,$ n CODE ENDS n END START 1、DOS功能调用概述 nDOS功能的调用主要包括下面三个方面的 子程序: n基本I/O子程序; n文件管理子程序; n其他(包括内存管理、置取时间、置取中 断向量、终止程序等)。 2、调用方法 nDOS系统功能调用的方法一般可分为以下几步 : n根据所需的功能调用设置入口参数的,但大 部分功能调用需要入口参数,在调用前应按要求 准备好入口参数; 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,1 n INT 21H n功能:从键盘输入字符的ASCII码送入寄 存器AL中,并送显示器显示 4、常用DOS系统功能调用 n2、02H显示输出 n格式:MOVDL,待显示字符的ASCII码 n MOVAH,2 n INT21H n功能:将DL寄存器中的字符送显示器显示 ,如果DL中为(CTRL)+(BREAK)的ASCII 码,则退出。 4、常用DOS系统功能调用 n3、03H异步通信输入 n4、04H异步通信输出 n5、05H打印机输出 n格式:MOVDL, 待打印字符的ASCII码 n MOV AH,5 n INT 21H n功能:将DL寄存器中的字符送打印机打印。 4、常用DOS系统功能调用 n6、06H直接控制台输入输出字符 n06H功能是从键盘输入一个字符,或输出一个字 符到屏幕,有两种入口参数: nDL0FFH,表示是从键盘输入字符。 nZF=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功能是等待从键盘输入字符,将其 ASCII码送入AL寄存器中。其没有入口参 数,出口参数是输入字符码,出口参数送 入AL寄存器中。08H与01H系统功能调用 不同之处在于键入的字符不送屏幕显示。 4、常用DOS系统功能调用 n9、09H显示字符串 n格式:LEA DX,待显示字符串首偏移地址 n MOV AH,9 n INT 21H n功能:将当前数据区中以$结尾的字符串 送显示器显示。 4、常用DOS系统功能调用 n10、0AH键盘输入字符串到缓冲区 n格式:LEA DX,缓冲区首偏移地址 n MOV AH,10 n INT 21H n功能:从键盘上输入一字符串到用户定义 的输入缓冲区内,并送显示器显示。 4、常用DOS系统功能调用 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寄存器中,月份和日期 置入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功能是结束当前正在执行的程序,并 返回操作系统,屏幕显示操作系统提示符 。 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=程序段前缀段地址 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)硬件系统的检测和初始化程序; 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 control 14H 异步通信口 调用 1CH定时处 理 15H 磁带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=0 n出口参数:AL中为键盘输入的字符的 ASCII码值,AH中为扫描码。 n(2)AH=1 n功能:读键盘缓冲区字符到AL寄存器中,并置 ZF标志位,若按过任意一键(即键盘缓冲区不 空),置ZF=0,否则ZF=1. n入口参数:AH=1 n出口参数:若ZF=0,则AL中为输入的字符的 ASCII码。 n由于该功能是从键盘缓冲区读数据,当没有任何 键被按下时,不等待而立即返回。一般通过检测 ZF标志来控制某一程序的执行. n3)AH=2 n功能:读取特殊功能键的状态。 n入口参数:AH=2 n出口参数:AL为各特殊功能键的状态 n2、键盘09H的处理过程 n(1)从键盘接口的输出缓冲寄存器(60H)读取系统扫描码。 n(2)判断该键是单独按下或是与组合键(shift、ctrl或alt)一起按 下。若字符键单独按下,将扫描码转换为相应的ASCII码或扩展码 写入键盘缓冲区。 n(3)如果是换档键(如caps lock、ins等),将其状态存入BIOS数 据区中的键盘标志单元。 n(4)如果是组合键(如ctrl+alt+del),则直接执行,完成其相应 的功能。 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中断调用有二个功能。功能号为0和1 。 n(1)AH=0 本功能为读取时钟计数器的 当前值。 n(2)AH=1 本功能为设置时钟计数器的 当前值。 例6-9编写一个用键盘输入文件名,若输入的文 件存在,则显示其内容,否则,显示文件不存在 的信息的程序,若输入的字符串为空,则程序运 行结束。 n.MODEL SMALL n.DATA n File DB 30, ?, 30 DUP(?), 0 n Err DB “This file isnt found“, 10, 13, “$“ n Buff DB 128 dup(?) n.CODE n .STARTUP nstart: nMOV AH, 0AH ;利用0AH 功能,输入文件名 nLEA DX, File ; DS:DX=输入 缓冲区逻辑地址 nINT 21H ; nMOV BL, File+1 nCMP BL, 0 ;检查文件名是否为 空 nJZ stop ;若空则跳转到stop nXOR 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 nMOV AH, 3FH ;读文件内 容 nMOV CX, 128 nINT 21H nCMP AX, 0 nJZ 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 编写一个创建子目录的程序,若目录创 建成功,显示成功信息,否则,显示创建失败信 息,用键盘输入一个目录路径名,若输入的字符 串为空,则程序运行结束; n.MODEL SMALL n.DATA n Dir DB 30, ?, 30 DUP(?), 0 n Vnews DB “Victory“, 10, 13, “$“ n Fnews DB “Failure“, 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, Offset Dir+2 nMOV AH, 39H ;利用39H 功能,创建子目录 nINT 21H n.IF CARRY? n LEA DX, Fnews n.ELSE n LEA DX, Vnews n.ENDIF nMOV AH, 9H nINT 21H nJMP start nstop: n .EXIT 0 n END 6.3.2 BIOS系统功能调用实例 n例6-14 试编制键入一个39间的数字,输出一个 用“*”组成的三角形的源程序。例如,键入5,输出 的三角形如下所示: n* n* n* n* n* 例6-11 在每页的开始处打印“Hello world”字符串 ,并空一行才打印其它内容; 当打印机不能正 常打印(非硬件故障)时,提示其原因。 n.MODEL SMALL n.DATA n Top DB 0CH, “Hello World“, 0DH, 0AH, 0AH n Count EQU $ - Top n NEWS1 DB “Time Out Error$” n NEWS2 DB “Intput Or Output Error$” n NEWS3 DB “Out of Paper$” n TimeERR EQU 01H n InOut EQU 08H n OutP EQU 20H n.CODE n.STARTUP n MOV AH, 1 n MOV DX, 0 ;初始化连 接在LPT1上的打印机 n INT 17H n n MOV AH, 2 nMOV DX, 0 ;读取LPT1打 印机的状态字节 nINT 17H nTE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论