汇编实验实验一.doc
上传人:sy****28 上传时间:2024-09-10 格式:DOC 页数:6 大小:296KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

汇编实验实验一.doc

汇编实验实验一.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

STYLEREF"标题1"\*MERGEFORMAT《数据结构与算法》实验报告STYLEREF"标题1"\*MERGEFORMAT《汇编》实验报告····《汇编》实验报告姓名李鸿学号20111104386专业计算机科学与技术班级11级计科(非师范)联系电话Email同组实验者实验序号01实验日期2012、4.12主讲教师候宏霞辅导教师候宏霞指导教师候宏霞实验心得:学生签名:李鸿2013年04月12日成绩评定及教师评语:成绩:教师签名:年月日实验内容1、试编制一程序,计算下列公式的值,并存放在FUN存储单元中。F=[10*(x+y)-3*(z-1)]/22、试编制一程序,从键盘输入一字符串,并将该字符串从屏幕上显示出来。例如:显示’hellocomputer!’实验目的及要求1、实验目的:1.了解熟悉DEBUG命令;2.熟悉数据传送指令、算术运算指令、逻辑指令、段寄存器装在的内容;3.掌握简单的汇编语言程序编写与调试。2、实验要求:1.仔细阅读有关DEBUG命令的内容,对有关命令,要求事先准备好使用的例子;2.阅读数据传送指令、算术运算指令、逻辑指令、段寄存器装在的内容;3.用DEBUG的有关命令调试本实验中的求多项式结果程序段与从键盘输入一字符串并将该字符串从屏幕上显示出来的程序段。设计分析第一题的设计分析:一、实现变量的三个步骤:、在数据段中定义变量并赋予初值,为计算多项式做准备;、利用算术指令ADD、SAL、SUB、INC、DEC、SAR实现多项式的运算。二、计算变量与计算变量结果的存放:、代码段第三条指令开始计算变量,倒数第三条指令存放变量的结果,即多项式的计算终止;、变量的奇数倍用ADD与SAL指令完成,而偶数倍只需SAL指令完成;、注意MOV指令的操作数不能同时为存储单元。第二题的设计分析:一、实现字符串输入,需要分成三个步骤:、在数据段中定义一个缓存区为存放字符串做准备;、DOS系统功能调用0AH号子功能,(DS:DX)=输入缓冲区首址;、在输入的字符串尾加上‘$’字符,以作为输出结束条件。二、实现字符串输出,则需要注意的问题是:、缓冲区第三个字节才开始存放输入的字符,前两个字节分别存放缓冲区长度和字符串实际字符数;、输出回车换行可利用字符串:CRDB0AH,0DH,’$’。程序的调试过程第一题:第二题:运行结果分析第一题的运行结果分析:第二题的运行结果分析:附件:带注释的源程序第一题的源代码:TITLEEXAMPLEPROGRAMDATASEGMENTVARXDW123H;定义X变量VARYDW456H;定义Y变量VARZDW789H;定义Z变量FUNDW?;定义存放结果的存储单元DATAENDSSTACK1SEGMENTPARASTACKDW20HDUP(0)STACK1ENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK1START:MOVAX,DATAMOVDS,AXMOVAX,VARX;取变量XADDAX,VARY;计算(X+Y)MOVBX,AXSALAX,1;计算2*(X+Y)SALAX,1;计算4*(X+Y)ADDAX,BX;计算5*(X+Y)SALAX,1;计算10*(X+Y)MOVBX,VARZ;取变量ZDECBX;计算(Z-1)MOVCX,BXSALBX,1;计算2*(Z-1)ADDBX,CX;计算3*(Z-1)SUBAX,BX;计算10*(X+Y)-3*(Z-1)SARAX,1;计算[10*(X+Y)-3*(Z-1)]/2MOVFUN,AX;存放结果MOVAH,4CH;终止用户程序,返回DOSINT21HCODEENDSENDSTART第二题的源代码:DATASEGMENTNEQU50MAXLENDBN;缓冲区字符的最大长度ACTLENDB?;实际字符个数STRINGDBNDUP(?);字符空间CRDB0AH,0DH,'$'DATAENDSSTACK1SEGMENTPARASTACKDW200HDUP(0)STACK1ENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK1START:MOVAX,DATAMOVDS,AXLEADX,MAXLENMOVAH,0AHINT21H;字符串输入MOVAH,09H;字符串输出LEADX,CR;回车换行INT21HMOVBL,MAXLEN+1;取实际的字符长度MOVBH,0LEASI,MAXLEN+2;取字符开始的首地址MOVBY