2)DOS功能调用及汇编基础(.doc_第1页
2)DOS功能调用及汇编基础(.doc_第2页
2)DOS功能调用及汇编基础(.doc_第3页
2)DOS功能调用及汇编基础(.doc_第4页
2)DOS功能调用及汇编基础(.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

第九次课4.3 DOS功能调用1、DOS功能在PC机的操作系统(DOS)的开发过程中,为了简化程序,开发了一些常用的子程序,而这些子程序,在用户操作系统的安装过程中,将将这些常用的子程序安装到了内存单元中,用户可以在编写自己的用户程序时,进行调用。其中有两种:BIOS子程序:功能 管理与计算机相连接的外部设备(显示器、键盘、磁盘驱动)程序,称为基本输入输出系统 (basic Input/output system)这部分程序是存放在ROM 区 所以通常称为:ROM BIOSDOS功能程序:与BIOS程序一样,DOS功能程序也是计算机操作系统开发人员编写的一些常用的用于磁盘文件管理的子程序,主要用于磁盘文件的建立、打开、读写、关闭,用户同样可以在自己的程序中对他们进行调用,简化用户程序的开发。与BIOS不同的是DOS功能程序是存放在硬盘上的,在系统上电时,由操作系统,将其安装到内存中的,称为常驻内存程序。用户调用这两种程序一般采用中断指令进行调用: DOS功能的调用方法:1、 在AH中写入功能调用号2、 在指定的寄存器中设置入口参数3、 用INT 21 指令执行调用4、 根据出口参数分析调用执行情况 DOS 功能程序功能1功能2功能3AH=0AH=1AH=3结束实际上,DOS 程序 被组成了一个大程序存放在内存单元中,从nn1:nn2 开始的单元中,在操作系统上电进行系统初始化时,将nn1:nn2 存放到了中断向量表中,0000H:0084H开始的连续4个单元中, 当用户在用户程序中用INT 21H 调用DOS的某一个功能时,即控制程序转移到nn1:nn2 开始的程序,在这段程序中首先根据AH中的功能,可以分析出用户调用的哪一个功能从而在转到相应地方执行相应的程序段。以下以几个DOS功能的应用介绍DOS功能使用方法: 2、常用功能调用1)键盘输入单字符并显示 调用号:01,无入口参数。 功能:等待键入,检查是否是Ctr - Break键,是,退出。不是将键入的字符送 AL 寄存器并显示。MOV AH ,01 INT 21H2)键盘输入字符串调用号:0AH,入口参数:DS:DX = 缓冲区首地址功能:将键盘键入的以 ENTER (0DH)结尾的字符串写到DS:DX指定的内存区。为此,应先用程序设置一内存区。 例:从键盘输入一个字符串,写到从标号BUF开始的单元中 数据段:BUF DB 20 第一个字节设的最大长度(含0DH) DB ? 第二个字节空出,由DOS功能最后填实际长度(不含0DH) DB 20 DUP (?) 第三字节开始写字符 程序段 MOV DX ,OFFSET BUF MOV AH , 0AH INT 21H 注:键入字符超出缓冲区范围,超出的字符丢失且响铃警告,若小于设置范围,保持原来内容3)输出单字符调用号:02, 入口参数:DL 功能:将DL的内容显示(DL = 待输出字符的ASII码) MOV DL ,A MOV AH,02 INT 21H 程序执行后,在显示器上显示字符 A4)输出字符串 调用号:09H, 入口参数:DS:DX(缓冲区首地址) 功能:将缓冲区内以&结尾的字串显示,&(24H)不显示。 BUF DB ABCDEF& MOV DX , OFFSET BUF MOV AH , 09H INT 21H执行结果在显示器上显示 ABCDEF5)返回操作系统调用号:4CH , 无入口参数。 MOV AH ,4CH INT 21H 结束当前程序,返回操作系统。6)设置中断向量调用号:25H ,入口参数:AL = 中断类型号 DS:DX = 中断程序入口地址。 若中断类型号是 40,中断程序入口地址 0300:2400H,装中断向量。 MOV AX ,0300H MOV DS ,AX MOV DX ,2400H MOV AH ,25H MOV AL ,40 INT 21H例 将键盘输入的字符串显示在显示器上 DSG SEGMENTBUF DB 80 DB ? DB 80 DUP(&) 24H DSG ENDS STA SEGMENT ST DB 100H DUP(?) STA ENDSCSG SEGMEMT ASSUMENT CS:CSG,DS:DSG START:MOV AX,DSG MOV DS,AX MOV AX,STA MOV SS,AX MOV sP,LENGTH ST MOV DX,OFFSET BUF MOV AH,0AH INT 21H MOV DX,OFFSET BUF+2 MOV AH, 09H INT 21H MOV AH, 4CH INT 21CSG ENDS END44 汇编过程1、用行编辑文件建立和修改源程序。 在我们作试验的系统上安装有行编辑文件EDLIN 这个文件主要用于汇编源程序的录入: EDLIN ABC.ASM 如果是一个新文件将显示:New file * (录入所编写的源文件)如果是一个已有文件将显示:EDLIN 将ABC文件装入并显示在显示器上对原有的文件进行编辑、修改End of input file2、利用MASM文件将汇编语言源程序汇编为由机器码表示的目标文件。 MASM ABC 可以生成三个文件 目标文件(*.OBJ), 列表文件( *.LST) ,交叉引用文件 *.CRF Object filename ABC.OBJ: 回车 Source filenamenul.LST: 回车 Cross filenamenul.CRF: 回车 Warning Errors: 0 Severe Errors: 03、利用 LINK 文件将目标文件 连接成可执行文件。 LINK ABCRun file ABC.OBJ: 回车 List filenul.LST: 回车 Libraries filenul.CRF: 回车 Warning Errors: No STACK Segment There was 1 error detected4、在DOS下执行文件 ABC4、用DEBUG调试程序。 C: DEBUG ABC。EXE DEBUG程序是专门用于对程序进行调试的一个程序, 在DEBUG中提供了多种命令,用于实现程序的运行过程 g 全速运行命令 t 单步运行命令 等在DEBUG状态下有一个窗口用于显示CPU内部各个寄存器的当前值,同时可以观察到内存中指定单元单元的内容,从而帮助编程人员检测自己编的程序的运行状况。汇编语言程序设计基础(2)一、 汇编语言程序设计结构象高级语言程序一样,任何一个复杂的汇编语言程序均是由一些简单的基本程序结构构成的, 在汇编语言程序中常见的基本程序结构主要包括:顺序结构 循环结构 分支结构 主子程序结构(1)顺序结构程序顺序结构是汇编程序中最常见和最简单的一种程序结构。取数N-ALBX指向TABLE查表 XLAT存结果结束开始例1 在内存TABLE 开始的连续16个单元存放着0-15的平方表,求DATA中的任意数N的平方值,结果放在RESULT中。DSG SEGMENTTABLE DB 0,1,4,9,16,25,-225DATA DB ?RESULT DB ?DSG ENDSSSG SEGMENTTT DB 100DUP(?)SSG ENDSCSG SEGMENT ASSUME CS:CSG,DS:DSG,SS:SSGBEGIN: MOV AX,DSG MOV DS, AX MOV AX, SSG MOV SS,AX MOV SP ,LENGTH TT MOV BX, OFFSET TABLE MOV AL, OFFSET DATA XLAT MOV OFFSET RESULT,AL MOV AH ,4CH INT 21CSG ENDSEND BEGIN(2) 分支程序分支程序结构是汇编程序中常见的结构,分以下两种If /then case 条件成立yesno条件1成立条件2成立条件n-1成立P1P2Pn列1:已知在内存中存放着两个带符号的8位二进制数 A、B,求其中的最大值,结果放在AL中 Dsg segment A DB 0A0H B DB 09H Dsg ends CSG SEGMENTASSUME CS:CSG, DS:DSG START: 系统初始化 Mov SI,offset A MOV AL SI CMP AL, SI+1 JGE BB MOV AL,SI+1 HLT例 2 将一位BCD变为相应ASCII码的程序3、子程序结构子程序是一个带有自返回功能的程序段,其基本流程为:开始现场保护功能实现现场恢复返回 子程序功能:由子程序实现的功能 入口参数: 需要由主程序传递给子程序的参数 出口参数:子程序处理的结果 参数的传递方法:(1) 利用寄存器传递:(2) 利用存储器传递:传送地址(3) 利用堆栈进行传递:例:已知在内存单元中从NN1:NN2有n个带符号数,求其中的最大值入口参数:数据个数,起始地址,出口参数:最大值利用寄存器传送:数据个数-CX起始地址-DS:SI最大值-AL利用存储器进行传送:1、 固定地址的传送:确定DS:2000 开始 数据个数、偏移地址、段地址,结果 2、 浮动地址的传送:用SI 指定参数的存放地址利用堆栈进行传送: MOV AX,N PUSH CX MOV AX,NN1 PUSH AX MOV AX,NN2 PUSHU AX 作业:1、编写一个完整的汇编语言程序,

温馨提示

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

评论

0/150

提交评论