实验五汇编语言程序设计和调试(二)doc_第1页
实验五汇编语言程序设计和调试(二)doc_第2页
实验五汇编语言程序设计和调试(二)doc_第3页
实验五汇编语言程序设计和调试(二)doc_第4页
实验五汇编语言程序设计和调试(二)doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、预备知识:DOS系统功能调用1概述 DOS (Disk Operating System)是计算机的磁盘操作系统,它有两个重要的DOS模块:(1)IBMBIOCOM,称为基本输入输出设备处理程序,它提供了DOS到ROM BIOS(Basic InputOutput System)的低级接口,完成将数据从外设读入内存,或将数据从内存写入外设中去的工作;(2)IBMDOSCOM,它包含文件管理程序和其他一些处理程序。 在DOS下运行的程序都可以用中断方式调用上面提到的I0设备处理程序、文件管理等程序,实现用户对I/O或文件管理的要求,这就称为“DOS系统功能调用”。 为了完成DOS调用,IBMDO

2、SCOM将信息传送给IBMBIOSCDM,形成1个或多个BIOS调用。它们之间的关系如图所示。 在有些情况下,既能选择DOS中断,也能选择BIOS中断来执行同样的功能。所以应尽量使用DOS中断功能,但是还有一些情况,由于没有等效的DOS中断功能,必须使用BIOS中断功能。 DOS中断可处理多数的IO,但有一些功能还没有提供,如声音控制,这就要考虑用IO指令在端口级进行编程,或使用高级语言编程来实现。2DOS系统功能调用(1)DOS系统功能调用方法 一般调用时要包含以下3部分内容: 入口参数初始化; 子程序编号送人AH; 子程序请求中断指令:INT 21H。一般采用INT 21 H调用DOS功能

3、。 有的子程序不要入口参数,但大部分需要将参数送入指定地点。 调用结束时,如有出口参数,一般存放在寄存器中。(2)I0 DOS系统功能调用实例 键盘单个字符输入/输出 (a) AH=1、7、8:键盘单个字符输入功能调用。以AH1为例: MOV AH,1 1NT 21H 执行上述指令,将扫描键盘,一旦有键按下,就将相应键的ASCII码读入;先检查是否是按下<Ctrl-Break>键,如是则退出命令执行;否则将键值送人AL寄存器,同时将这个字符显示在屏幕上。 AH=7 等待从标准输入设备输入字符,然后将其送入AL,但不显示,也不对字符进行检查。AH=8 功能与AH=1类同,只是不在屏幕

4、上显示 (b) AH=2:键盘单个字符输出功能调用。它要求将显示字符的ASCII码(入口参数)送给寄存器DL。显示时,光标跟随字符移动,并检查是否按下<Ctrl-Break>键,如果是按下此键,则退出命令执行。例如,下面代码实现将字符“A”送人屏幕显示: MOV DL,41H ;大写字符A的ASCII编码 MOV AH,2 ;功能号02H送AH 1NT 21H ;中断21H,DOS系统功能调用 输出字符串 AH=9的功能是显示字符串。它要求DS:DX必须指向内存中1个以“$”作为结束的字符串。如果希望光标自动换行,可在字符串结束以前加上回车和换行符的ASCII码。 A1 DB 41

5、H,42H,43H,0AH,0DH,'$' ;数据段定义字符串A、B、C ;0AH是换行、0DH是回车符号LEA DX,A1 ;A1偏移地址送DXMOV AH,09H ;AH09H,显示A1输入字符串INT 21H ;中断21H,DOS功能调用 字符串输入 AH=lO功能是从键盘接收字符串到用户定义的输入缓冲区中。缓冲区内第一个字节指出缓冲区所能容纳的字符个数。如果键入的字符数比此数字大,就会发出“嘟嘟”声,而且光标不再向右移动;如输入的字符数少于定义的字节数,缓冲区其余的字节填以0。缓冲区内第二个字节是实际输入的字符个数,这个数据由该功能自动填入。从第三个字节开始,依次按字节

6、存放从键盘上接收到的字符,最后结束字符串的回车符0DH还要占用1字节,所以整个缓冲区的大小应为最大字符数(包括回车符在内)加上2。调用时,要求DS:DX指向输入缓冲区。例如: DATA SEGMENT BUF DB 16 ;缓冲区长度 DB 9 ;保留为系统填人实际输入的字符个数 DB 16 DUP(?) ;定义32Byte的存储空间 DATA ENDS CODE SEGMENT MOV AX,DATA MOV DS,AX MOV DX,OFFSET BUF MOV AH,10 INT 21H CODE ENDS 如果我们键入字符串:HOW DO YOU DO? 此时缓冲区BUF中各单元内容如

7、下:100EHOWDOYOUDO?0D00实验五 汇编语言程序设计和调试(二) DOS功能调用一实验目的与要求1、进一步熟悉8086/8086汇编语言的基本指令系统2、初步了解DOS系统功能调用在汇编语言程序中的应用二实验准备1. PC系列微型计算机一台;2. 软件安装DOS系统、含EDIT.EXE、MSAM.EXE 、LINK.EXE或其他软件编辑工具;3. C盘下创建MASM目录。三实验要求1启动计算机并进入DOS状态和MASM子目录。2在当前盘的MASM目录下用EDIT编辑工具将自己编写的源程序编辑成一个源程序文件,以“文件名.ASM”名称存储在当前盘。 3使用MASM对源程序汇编,生成

8、目标程序文件(文件名.OBJ) (注:若汇编出错,找出错误原因并进行修改,直至正确) (1)命令格式及操作过程。 (2)汇编结束后记录屏幕所显示的内容。 4返回EDIT环境查看列表文件 (1)命令格式及操作过程。 (2)记录屏幕所显示的内容。 5使用LINK软件生成可执行程序文件(文件名.EXE) (1)命令格式及操作过程。 (2)记录屏幕所显示的内容。6运行生成可执行程序文件(文件名.EXE) (1)命令格式及操作过程。 (2)记录屏幕所显示的内容。 7在DEBUG状态下装入文件名.EXE,按要求调试程序。 8用DEBUG的D命令查看程序区。 9用DEBUG的U命令反汇编出全代码段的语句。1

9、0用DEBUG的T命令,按步数运行该程序,并用R或D命令查看结果。四实验内容和实验步骤使用EDIT、MASM和LINK等程序实现以下汇编语言源程序的输入、汇编、链接、调试和运行。1、程序一:显示预先输入的字符串(1)源程序:NAME EXAMP1 SS_SEG SEGMENT PARA STACKSTACK DB 100H DUP(0) SS_SEG ENDS DS_SEG SEGMENT A1 DB Assembly Language and Programming,0AH,0DH, $ A2 DB 41H,42H,43H,0AH,0DH ,$ DS_SEG ENDS CS_SEG SEGM

10、ENT ASSUME CS:CS_SEG,DS:DS_SEG,SS:SS_SEG MAIN PROC FAR START: PUSH DS XOR AX,AX PUSH AX MOV AX,DS_SEG MOV DS,AX MOV AX,SS_SEG MOV SS,AX LEA DX,A1 ; D0S功能调用入口参数,A1为屏显首址. MOV AH,09H ; D0S功能调用号 INT 21H ; 中断号MOV DX,OFFSET A2 INT 21H RET MAIN ENDP CS_SEG ENDS ENDS START (2)实验步骤:(1)利用EDIT 全屏幕编辑程序的编辑功能输入以上

11、程序,以文件名为LX51.ASM存入C盘MASM子目录下。(2)在DOS系统下执行执行文件MASM.EXE ,用宏汇编程序将LX51.ASM.汇编成目标文件LX51.OBJ(3) 运行LINK执行文件将目标文件LX51.OBJ连接成为可执行的文件LX51.EXE。(4) 查看列表文件LX51.LST , 键入C:MASM>EDIT LX51.LST 观察显示列表文件内容,记录有关内容: 数据段的起始单元的偏移地址:数据段中变量A1、A2的偏移地址:数据段占有字节数: 数据段中变量A1单元存放的数据: A2单元存放的数据: 代码段中从START标号开始的13句指令的机器码为: (5)在DO

12、S环境下运行程序,命令格式为: C:MASM5 >LX51.EXE (运行可执行文件) 程序运行结束屏幕所显内容为:(6)在MASM目录下输入如下命令,写出屏幕所显示的内容:C:MASM >DEBUG LX51.EXE(7)在DEBUG状态下用U命令观察屏幕所显示的内容,写出: 代码段的首单元的段地址和偏移地址: 和LX51.LST文件显示的代码段指令比较,从START开始的13句指令的机器码及其存放的地址有否区别: 数据段和堆栈段的段基地址分别为:(8)根据数据段的段地址,在DEBUG状态下输入显示存储单元D命令,检查变量A1、A2的地址及其存放的数据:(9)在DEBUG 下采用

13、 G 命令运行程序,命令格式为: G= 0000 ××××(RET指令的地址)写出屏幕所显示的内容:(10)若要求程序执行后在屏幕上显示: 1 2 3 4 5 1 2 3 1请修改源程序中数据段的内容,然后调试运行,给予实现。写出修改的程序内容:DS_SEG SEGMENTA1 DB A2 DB DB DS_SEG ENDS2、程序二:将键盘输入的字符在下行显示(1)源程序: NAME EXAMP3 DATA SEGMENTMESSAGE DB PLEASE INPUT A STRING: $ ;定义输入提示BUF DB 255 , ? , 255 DU

14、P(0) DATA ENDSCODE SEGMENTASSUME CS: CODE , DS: DATASTART: MOV AX , DATA MOV DS , AXMOV DX , OFFSET MESSAGE MOV AH , 9 INT 21H ;显示输入提示信息MOV DX , OFFSET BUFMOV AH , 10INT 21H ;接收用户输入 MOV AH , 2MOV DL , 0AH ;0AH为换行符ASCII码INT 21H ;屏幕换行MOV BL , BUF+1 ;用户实际输入字符数BLMOV BH , 0 ;将BX高8位清0,使BX=用户实际输入字符数MOV BYTE PTR BUF+2BX,'$;在用户输入的字符结束处放置一个“$”MOV DX , OFFSET BUF+2 ;用户实际输入字符起始处DXMOV AH , 9INT 21H ;显示用户输入的字符MOV AH , 4CHINT 21HCODE EN

温馨提示

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

最新文档

评论

0/150

提交评论