实验五 汇编语言程序设计和调试(二).doc

上传人:创****公 文档编号:1856379 上传时间:2019-10-28 格式:DOC 页数:8 大小:379KB
返回 下载 相关 举报
实验五 汇编语言程序设计和调试(二).doc_第1页
第1页 / 共8页
实验五 汇编语言程序设计和调试(二).doc_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《实验五 汇编语言程序设计和调试(二).doc》由会员分享,可在线阅读,更多相关《实验五 汇编语言程序设计和调试(二).doc(8页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

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

2、OS 系统功能调用” 。为了完成 DOS 调用,IBMDOSCOM 将信息传送给 IBMBIOSCDM,形成 1 个或多个 BIOS调用。它们之间的关系如图所示。在有些情况下,既能选择 DOS 中断,也能选择 BIOS 中断来执行同样的功能。所以应尽 量使用 DOS 中断功能,但是还有一些情况,由于没有等效的 DOS 中断功能,必须使用 BIOS 中断功能。 DOS 中断可处理多数的 IO,但有一些功能还没有提供,如声音控制,这就要考虑用IO 指令在端口级进行编程,或使用高级语言编程来实现。2 DOS 系系统统功能功能调调用用( (1) )DOS 系系统统功能功能调调用方法用方法一般调用时要包

3、含以下 3 部分内容:入口参数初始化;子程序编号送人 AH;子程序请求中断指令:INT 21H。一般采用 INT 21 H 调用 DOS 功能。有的子程序不要入口参数,但大部分需要将参数送入指定地点。调用结束时,如有出口参数,一般存放在寄存器中。 (2 2)I I0 0 DOSDOS 系统功能调用实例系统功能调用实例键盘单个字符输入/输出(a) AH=1、7、8:键盘单个字符输入功能调用。以 AH1 为例:MOV AH,11NT 21H执行上述指令,将扫描键盘,一旦有键按下,就将相应键的 ASCII 码读入;先检查是 否是按下键,如是则退出命令执行;否则将键值送人 AL 寄存器,同时将这个 字

4、符显示在屏幕上。AH=7 等待从标准输入设备输入字符,然后将其送入 AL,但不显示,也不对字符进22行检查。 AH=8 功能与 AH=1 类同,只是不在屏幕上显示(b) AH=2:键盘单个字符输出功能调用。它要求将显示字符的 ASCII 码(入口参数)送 给寄存器 DL。显示时,光标跟随字符移动,并检查是否按下键,如果是按下 此键,则退出命令执行。例如,下面代码实现将字符“A”送人屏幕显示:MOV DL,41H ;大写字符A的 ASCII 编码MOV AH,2 ;功能号 02H 送 AH1NT 21H ;中断 21H,DOS 系统功能调用输出字符串AH=9 的功能是显示字符串。它要求 DS:D

5、X 必须指向内存中 1 个以“$”作为结束的字 符串。如果希望光标自动换行,可在字符串结束以前加上回车和换行符的 ASCII 码。A1 DB 41H,42H,43H,0AH,0DH,$ ;数据段定义字符串 A、B、C ;0AH 是换行、0DH 是回车符号 LEA DX,A1 ;A1 偏移地址送 DX MOV AH,09H ;AH09H,显示 A1 输入字符串 INT 21H ;中断 21H,DOS 功能调用 字符串输入AH=lO 功能是从键盘接收字符串到用户定义的输入缓冲区中。缓冲区内第一个字节指 出缓冲区所能容纳的字符个数。如果键入的字符数比此数字大,就会发出“嘟嘟”声,而 且光标不再向右移

6、动;如输入的字符数少于定义的字节数,缓冲区其余的字节填以 0。缓 冲区内第二个字节是实际输入的字符个数,这个数据由该功能自动填入。从第三个字节开 始,依次按字节存放从键盘上接收到的字符,最后结束字符串的回车符 0DH 还要占用 1 字 节,所以整个缓冲区的大小应为最大字符数(包括回车符在内)加上 2。调用时,要求 DS:DX 指向输入缓冲区。例如:DATA SEGMENTBUF DB 16 ;缓冲区长度DB 9 ;保留为系统填人实际输入的字符个数DB 16 DUP(?) ;定义 32Byte 的存储空间 DATA ENDSCODE SEGMENT MOV AX,DATAMOV DS,AXMOV

7、 DX,OFFSET BUFMOV AH,10 INT 21HCODE ENDS如果我们键入字符串:HOW DO YOU DO? 此时缓冲区 BUF 中各单元内容如下:23实验实验五五 汇编语汇编语言程序言程序设计设计和和调试调试(二)(二)DOS 功能功能调调用用一一实验实验目的与要求目的与要求1、进一步熟悉 8086/8086 汇编语言的基本指令系统2、初步了解 DOS 系统功能调用在汇编语言程序中的应用二二实验实验准准备备1. PC 系列微型计算机一台;2. 软件安装 DOS 系统、含 EDIT.EXE、MSAM.EXE 、LINK.EXE 或其他软件编辑工具;3. C 盘下创建 MAS

8、M 目录。三三实验实验要求要求1启动计算机并进入 DOS 状态和 MASM 子目录。2在当前盘的 MASM 目录下用 EDIT 编辑工具将自己编写的源程序编辑成一个源程序文件,以“文件名.ASM”名称存储在当前盘。3使用 MASM 对源程序汇编,生成目标程序文件(文件名.OBJ)(注:若汇编出错,找出错误原因并进行修改,直至正确)(1)命令格式及操作过程。(2)汇编结束后记录屏幕所显示的内容。4返回 EDIT 环境查看列表文件(1)命令格式及操作过程。(2)记录屏幕所显示的内容。5使用 LINK 软件生成可执行程序文件(文件名.EXE)(1)命令格式及操作过程。(2)记录屏幕所显示的内容。6运

9、行生成可执行程序文件(文件名.EXE)(1)命令格式及操作过程。(2)记录屏幕所显示的内容。7在 DEBUG 状态下装入文件名.EXE,按要求调试程序。8用 DEBUG 的 D 命令查看程序区。9用 DEBUG 的 U 命令反汇编出全代码段的语句。10用 DEBUG 的 T 命令,按步数运行该程序,并用 R 或 D 命令查看结果。四四实验实验内容和内容和实验实验步步骤骤100EHOWDOYOUDO?0D0024使用 EDIT、MASM 和 LINK 等程序实现以下汇编语言源程序的输入、汇编、链接、调试和运行。 1 1、程序一:显示预先输入的字符串、程序一:显示预先输入的字符串(1 1)源程序:

10、)源程序: 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 SEGMENT ASSUME CS:CS_SEG,DS:DS_SEG,SS:SS_SEG MAIN PROC FAR START: PUSH DS XOR AX,AX PUSH AXMOV AX,DS_SEG MOV D

11、S,AXMOV 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 2)实验步骤:)实验步骤:(1)利用 EDIT 全屏幕编辑程序的编辑功能输入以上程序,以文件名为 LX51.ASM 存入C 盘 MASM 子目录下。 (2)在 DOS 系统下执行执行文件 MASM.EXE ,用宏汇编程序将 LX51.ASM.汇编成目标 文件 LX51.O

12、BJ(3) 运行 LINK 执行文件将目标文件 LX51.OBJ 连接成为可执行的文件 LX51.EXE。(4) 查看列表文件 LX51.LST ,键入 C:MASMEDIT LX51.LST观察显示列表文件内容,记录有关内容:25 数据段的起始单元的偏移地址:数据段中变量 A1、A2 的偏移地址:数据段占有字节数:数据段中变量 A1 单元存放的数据:A2 单元存放的数据: 代码段中从 START 标号开始的 13 句指令的机器码为:(5)在 DOS 环境下运行程序,命令格式为:C:MASM5 LX51.EXE (运行可执行文件) 程序运行结束屏幕所显内容为:(6)在 MASM 目录下输入如下

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

14、上显示:1 2 3 4 51 2 3 1请修改源程序中数据段的内容,然后调试运行,给予实现。写出修改的程序内容:DS_SEG SEGMENT A1 DB A2 DB DB DS_SEG ENDS2 2、程序二:将键盘输入的字符在下行显示、程序二:将键盘输入的字符在下行显示(1 1)源程序:)源程序:NAME EXAMP3 DATA SEGMENTMESSAGE DB PLEASE INPUT A STRING: $ ;定义输入提示BUF DB 255 , ? , 255 DUP(0) DATA ENDSCODE SEGMENT27ASSUME CS: CODE , DS: DATASTART:

15、 MOV AX , DATAMOV DS , AXMOV DX , OFFSET MESSAGEMOV AH , 9INT 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

16、+2 ;用户实际输入字符起始处DXMOV AH , 9INT 21H ;显示用户输入的字符MOV AH , 4CHINT 21HCODE ENDSEND START(2 2)实验步骤:)实验步骤:(1)输入、汇编、链接程序 LX51.ASM。(2)在 DOS 环境下运行程序,并按提示输入不多于 255 个数的字符,最后以回车键表示结束,观察并记下程序执行实现的功能:(3)在 DEBUG 状态下装入 LX52.EXE 程序进行调试 用 U 命令观察 19 条指令的机器码 :28 用 D 命令检查 MESSAGE 内存区域和 BUF 内存区域存放的数据: G 命令运行程序后,实现的功能:用 D 命令再次检查 MESSAGE 内存区域和 BUF 内存区域存放的数据:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 教育教学

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com