版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,4.3 DOS系统功能调用(高级调用),DOS系统功能调用的作用:系统功能调用由操作系统OS提供的一组实现特殊功能的子程序供程序员在程序中调用,以减轻编程工作量。 系统功能调用的分类:功能调用一种称为DOS(高级)功能调用,另一种称为BIOS(低级)功能调用。 BIOS功能调用包括:系统测试、初始化引导、一部分中断矢量装入程序及外部设备系统功能调用的实现方式:用户程序在调用这些系统服务程序时,不是用CALL命令,而是采用软中断指令INT n来实现。 DOS系统功能调用都是用软中断指令INT 21H来实现的。它具有90多个子功能的中断服务程序,它们通过功能号AH来区分。它不依赖于具体的硬件系
2、统。 的服务程序,IBM是将其存放在开始的单元中,它们都固化在系统主板的ROM中。它与系统硬件直接相关。 参见附录E,2,系统功能调用的实现方式:用户程序在调用这些系统服务程序时,不是用CALL命令,而是采用软中断指令INT n来实现。 DOS系统功能调用都是用软中断指令INT 21H来实现的。它具有90多个子功能的中断服务程序,它们通过功能号AH来区分。它不依赖于具体的硬件系统。,DOS是IBM PC的操作系统,负责管理系统的所有资源,协调微机的操作。其中包括大量的可供用户调用的服务程序。DOS的功能调用不依赖具体的硬件系统。,3,4.3.1BIOS功能调用(低级调用),定义:基本输入输出系
3、统,是固化在EPROM中的一组实现基本输入输出功能的子程序。 功能: 系统测试程序、初始化引导程序、一部分中断矢量装入程序及外部设备的服务程序等。BIOS与系统硬件有直接的依赖关系。 调用方法:BIOS调用通过多个软中断提供,具体的调用方法为: MOV AH, INT ,4,BIOS中的几个主要中断类型如下: INT 10H屏幕显示 INT 13H磁盘操作 INT 14H串行口操作 INT 16H键盘操作 INT 17H打印机操作 每类中断由包含许多子功能,调用时通过功能号指定。 BIOS功能调用说明见附录E。,5,1.键盘输入 键盘是最基本的输入设备,它包括三种类型:字符键、扩展功能键、及其
4、它组合使用的控制键。每一个字符键对应一个ASCII码,扩展功能键产生一个动作,而控制功能键改变其它键产生的字符码。 键盘上的每个键对应一个扫描码,扫描码用一个字节来表示,低7位是数字编码,最高位表示键的状态。当有键按下时,最高位等于0。根据扫描码就能唯一地确定哪个键改变了状态。 BIOS键盘处理程序将获取的扫描码转换成相应的字符码。BIOS的键盘中断类型码为16H,送入AH的功能号可以是0、1或2。,6,(1)只取出按键的字符码的扫描码 INT 16H 执行结果:AL=字符码,AH=扫描码 (2)只判断有无键按下 MOV AH,1 INT 16H 执行结果:若ZF=0,则AL=字符码,AH=扫
5、描码 若ZF=1,则键盘缓冲区空。,2号功能用来判断Shift Alt Num等功能键是否被按下。,7,2.显示器输出 显示器通过显示适配器(显卡)与PC连接是计算机与显示器的接口。显示器的屏幕是由行和列缓存的二维系统。每一个字符都对应一个特定的行和列,0行0列表示屏幕的左上角。 BIOS显示器输出的类型码为10H,功能包括设置显示方式、设置光标大小和位置、设置调色板号、显示字符等。 每个字符在主存中占两个字节,一个是字符的ASCII码,另一个是字符属性。若要显示一个字符,在先设置光标位置,然后提供被显示字符的ASCII码(功能号9)及其属性(功能号10)。,8,4.3.2 DOS功能调用 所
6、有的DOS系统功能调用都是利用软中断指令INT 21H来实现的。就是在程序中要调用DOS功能的时候,只要一条INT 21H指令即可。,INT 2lH功能分类: 大致可以分为四个方面,即为 (1)设备管理(2)目录管理(3)文件管理 (4)内存管理、存取时间、存取终端矢量、终止程序等。参见附录D.3,9,为了便于使用这些子功能,INT 21H对每个子功能都进行了编号功能号,用户通过指定的功能号来调用不同子功能。,D0S系统功能调用的使用方法: AH功能号; 设置该功能所要求的其他入口参数; 执行INT 21H指令; 分析出口参数。,10,关于数据输入和输出我们这里只讨论键盘输入和显示输出,调用系
7、统功能需要提供入口参数及所调用的功能号,调用结束返回结果。,1. DOS键盘功能调用,(1) 从键盘输入一个字符(功能号=1有回显、7、8无回显) MOV AH,1 INT 21H ,INT 21H的几个最常用的功能,11,例:程序中有时需要用户对提示做出应答。 GET_KEY: MOV AH,1;等待键入字符 INT 21H;结果在AL中 CMP AL,Y ;是Y? JZ YES ;是,转YES CMP AL,N ;是N? JZ NO ;是,转NO JMP GET_KEY;否则继续等待输入 YES: NO: ,12,(2) 输入字符串(功能号=0AH) 此功能调用从键盘输入一串字符并把它存入
8、用户指定的缓冲区中。 MOV AH, 0AH LEA DX, INT 21H,(预留的N1个字节的存储单元),N2,N1,N1: 缓冲区长度(最大键入字符数) N2: 实际键入的字符数(不包括回车符),用户定义的输入字符串的缓冲区格式,13,若用户键入的字符数(包括回车)定义的N1,本功能调用将不再接收新的键入,且光标不再向右移动。 例:设在数据段定义键盘缓冲区如下: STR1 DB 10,?,10 DUP(?) 调用DOS功能的0AH号功能的程序段为: LEA DX,STR1 MOV AH,0AH INT 21H 此程序段最多从键盘接收10个按键(包括回车)。,14,2. DOS显示功能调用
9、,(1) 在显示器上显示一个字符(功能号=2,6) MOV AH, 2 MOV DL, INT 21H 例:在显示器上显示一个字符A MOV AH, 2 MOV DL, A ;或MOV DL, 41H INT 21H,15,MOV AH, 9 LEA DX, INT 21H 注意:被显示的字符串必须以$结束。如果希望光标能自动换行,则就在字符串结束前加上回车及换行的ASCII码0DH和0AH。,(2)显示字符串(功能号=9),16,例:在屏幕上显示:HELLO,WORLD! ;在数据段定义字符串: DATA SEGMENT STR1 DB HELLO,WORLD!$ DATA ENDS ;在代
10、码段中进行显示输出 MOV AH,9 LEA DX,STR1 INT 21H 完整的程序: HELLO.ASM,17,3.返回到DOS 一个实际可运行的用户程序在执行完后,应返回到DOS提示符状态下,用HLT指令使CPU停止运行将无法把控制权还给DOS操作系统。为使程序正常退出并返回DOS,可以用DOS系统功能调用的4CH号功能。 MOV AH,4CH INT 21H,18,BIOS中断程序处于DOS功能调用和硬件环境之间,和DOS功能调用相比其优点是效率高,缺点是编程相对复杂;和直接对硬件编程相比,优点是实现相对容易,缺点是效率相对较低。 在一些情况下既能选择DOS中断也能选择BIOS中断来
11、执行同样的功能。例如,打印机输出一个字符的功能,可用DOS中断21H的功能5,也可用BIOS中断17H的功能0。因为BIOS比DOS更靠近硬件。一般情况下,尽可能地使用DOS功能,但在少数情况下必须使用BIOS功能。例如,BIOS中断17H的功能2为读打印机状态,DOS就没有等效的功能。 因此,对BIOS和DOS调用的选择原则是,无法使用DOS功能调用或DOS没有提供而BIOS提供了功能的情况下可以考虑使用BIOS中断。,BIOS中断调用与DOS功能调用的比较,19,4.4 汇编语言程序设计基础,4.4.1 概述 1.程序质量(自学) 2.汇编语言程序设计的步骤: 1-定义问题,分析问题 2-
12、建立数学模型,确定算法 3-画出程序框图(流程图) 4-分配内存工作单元和寄存器 5-根据框图,编写源程序 6-上机运行、调试程序。将源程序存成.ASM文件; 对源程序汇编,生成.OBJ目标文件; 把.OBJ文件连接成.EXE执行文件。 3.源程序的基本结构:顺序(查表)、分支、循环、过程,20,(1)用方框表示工作框,框中用简明语言标明要完成的功能,(2) 用菱形框表示判断框,框中标明比较、判断和条件,如何绘制程序框图(流程图)?,N,Y,?,21,(4)各框之间用直线连起来表示程序走向。,框中标明子程序名字(入口参数等),(3)用 框表示调用子程序或过程。,流程图的例子FlowChart.
13、doc,22,汇编语言上机过程:,Y,Y,Y,N,N,N,有错 ?,有错 ?,有错 ?,结束,汇 编,输入(修改)源程序,连 接,运 行,查 错,开始,用EDIT,NOTEPAD等任何文本编辑器。源程序存为.ASM文件,用MASM宏汇编程序进行汇编。 汇编后生成.OBJ目标文件。 命令格式:MASM ;,用LINK连接程序进行连接。 连接后生成.EXE可执行文件。 命令格式:LINK ;,用TD、DEBUG等调试程序进行调试。 命令格式:TD ,23,标号:,条件满足 ?,处理,4.4.2 顺序程序(p172-173) 4.4.3 分支程序,N,Y,IFTHEN结构,程序结构: 测试/比较指令
14、 (TEST/CMP) 条件转移指令 (Jx 标号) 处理体 标号: 其他指令 ,24,程序结构: TEST/CMP指令 Jx 标号1 处理体P1 JMP 标号2 标号1: 处理体P2 标号2:其他指令 ,条件满足 ?,处理P1,处理P2,标号1:,标号2:,条件1,条件2,IFTHENELSE结构,25,标号1:,条件1成立 ?,P1,N,Y,CASE结构,程序结构: TEST/CMP指令(测试条件1) Jx 标号1 ;不满足转标号1 处理体P1 JMP 标号n+1 标号1:TEST/CMP指令(测试条件2) Jx 标号2 ;不满足转标号2 处理体P2 JMP 标号n+1 标号2:TEST/
15、CMP指令(测试条件3) Jx 标号3 ;不满足转标号3 处理体P3 JMP 标号n+1 标号3:TEST/CMP指令(测试条件4) 标号n+1:(公共出口),条件2成立 ?,条件n成立 ?,Pn+1,标号2:,标号n:,标号n+1:,P2,Pn,N,N,Y,Y,例:P175,例4-17,统计成绩。流程图中虚线框内,26,4.4.4 循环程序,1DOUNTIL 结构 先执行,再判断条件。工作部分至少执行一次。,初始化,循环体,循环控制,继续循环?,Y,N,27,2. DO WHILE 结构 先判断条件,再执行。工作部分有可能一次都不执行。,初始化,循环体,循环控制,继续循环?,Y,N,28,注
16、意:循环可以嵌套(多重循环),但多个循环体之间不能交叉,控制条件不能混淆。 例:P176例4-18,数据从大到小排序。 冒泡法实例:3,7,2,8,68,7,6,3,2。 内外两层循环; 每轮内循环使一个最小的数沉底,因为最小的数沉底,下轮内循环就不用再比较最底下的数,所以内循环的循环次数每一轮比上一轮要逐次减1; 外循环用于控制有多少轮内循环。若有n个数据,则外循环次数为n-1。,BSORT.ASM,29,掌握以下几点: 调用子程序用CALL指令,返回调用程序用RET指令。 子程序允许嵌套调用。 进入子程序后首先要保护主程序的运行状态(标志位)和使用的寄存器内容(称为保护现场),退出子程序前
17、要恢复现场。 调用前要预先确定子程序中要使用哪些寄存器,并定义入口参数和出口参数。参数传递可利用寄存器、存储单元或堆栈(要用BP寻址)。,4.4.5 子程序设计举例,30,例1: 二进制数(0-F)转换成ASCII(0-F)的子程序。 BIN2ASC PROC ;要转换的数在AL的低四位 ;转换结果仍在AL中 CMP AL, 9 JA A2F ADD AL, 30H; 9, +37H DONE: RET BIN2ASC ENDP 调用方法:(在主程序中) MOV AL, 0CH CALL BIN2ASC (AL中有0CH的ASCII码43H, C),31,例2. 字符串处理程序设计 此例取自p
18、179例4-20。 对字符串进行操作时,往往需要确定它的长度。通常字符串结束标志以CR或$作标志。所以可以用扫描CR或$的方法计算出串长。 在计算串长时,应注意串长一般应小于255个字节。 以下是流程图和源程序。,32,简化的流程图:,开始,求串长,串长256?,显示串长高位,显示串长低位,结束,Y,警告: 太长,求串长,当前字符是?,搜索CR字符 同时指针增量,返回,N,串长加1,存串长,N,找到?,N,Y,Y,初始化指针/计数器,33,程序如下: DATA SEGMENT STRING DB This is a string,0DH,$ LENGTH1 DW ? ;串长度存放在这里 CR DB 0DH MESSAGE DB The string is too long!,0DH,0AH,$ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA MAIN PROC FAR BEGIN: MOV AX,DATA MOV ES,AX MOV DS,AX,34,CALLSTRLEN;调用子程序计算串长 MOVDX,LENGTH1 ;结果在DX寄存器中 CMPDX,100H JBNEXT1;若(DX)100H,转 LEADX,MESSAGE;若(DX)100H, MOVAH,9 INT21H ;显示信息 JMPNEXT2 NEXT1: M
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026 湖南事业编财会岗 面试专项练习试卷
- 2026年 事业单位水利岗面试考点梳理 题型分析含答案
- 2026事业单位水利岗面试易错题集含答案
- 2026 财会岗面试高频题集锦
- 消防安全员等级划分
- 医护健康宣教模板参考
- 2026年巢湖市烟草专卖局人员招聘考试备考题库及答案详解
- 2026年大兴安岭市烟草专卖局人员招聘参考题库及答案详解
- 2026年残联专职干事招聘笔试试题及答案
- 2026年佛山市东平新城开发公司人员招聘参考题库及答案详解
- 2026-2027学年高三第一次联考(月考)试卷语文+答案
- 2026-2027学年小学音乐五年级上册(全册)教学设计苏少版(简谱)
- 2027年西藏自治区语文中考查缺补漏模拟卷(含答案)
- 小学五年级综合实践活动《姓氏大探秘》教学设计
- 2026年国家电网考试历年真题库(附答案)
- 2026外研版八年级上册 Unit 2 Getting along 中考题型测试(语法选择题、完形填空、短文填空)
- 2026年人工智能训练师(二级)理论基础真题及解析
- 江南大学介绍
- 行书课件教学课件
- 2025年秋季学期国家开放大学《理工英语4》形考任务综合测试完整答案(不含听力部分)
- 2025年山东事业编考试真题(附答案)
评论
0/150
提交评论