搜档网
当前位置:搜档网 › 北京理工大学《数据结构与算法设计》实验报告实验一

北京理工大学《数据结构与算法设计》实验报告实验一

北京理工大学《数据结构与算法设计》实验报告实验一
北京理工大学《数据结构与算法设计》实验报告实验一

《数据结构与算法设计》

实验报告

——实验一

学院:

班级:

学号:

姓名:

一、实验目的

1.通过实验实践、巩固线性表的相关操作;

2.熟悉VC环境,加强编程、调试的练习;

3.用C语言编写函数,实现循环链表的建立、插入、删除、取数据等基本操作;

4.理论知识与实际问题相结合,利用上述基本操作实现约瑟夫环。

二、实验内容

1、采用单向环表实现约瑟夫环。

请按以下要求编程实现:

①从键盘输入整数m,通过create函数生成一个具有m个结点的单向环表。环表中的

结点编号依次为1,2,……,m。

②从键盘输入整数s(1<=s<=m)和n,从环表的第s个结点开始计数为1,当计数到

第n个结点时,输出该第n结点对应的编号,将该结点从环表中消除,从输出结点

的下一个结点开始重新计数到n,这样,不断进行计数,不断进行输出,直到输出

了这个环表的全部结点为止。

三、程序设计

1、概要设计

为实现上述程序功能,应用单向环表寄存编号,为此需要建立一个抽象数据类型:单向环表。

(1)、单向环表的抽象数据类型定义为:

ADT Joseph{

数据对象:D={ai|ai∈ElemSet,i=1,2,3……,n,n≥0}

数据关系:R1={ |ai∈D,i=1,2,……,n}

基本操作:

create(&L,n)

操作结果:构造一个有n个结点的单向环表L。

show(L)

初始条件:单向环表L已存在。

操作结果:按顺序在屏幕上输出L的数据元素。

Josephf( L,m,s,n)

初始条件:单向环表L已存在, s>0,n>0,s

操作结果:返回约瑟夫环的计算结果。

}ADT Joseph

(2)、主程序流程

主程序首先调用create(&L,n)函数,创建含有m个节点的单向环表L,然后调用show(L)函数,顺序输出链表中的数据,最后调用Josephf( L,m,s,n)函数,依次输出报的数。

(3)、函数调用关系图

2、详细设计

(1)、数据类型设计

typedef int ElemType; //定义元素类型

typedef struct Lnode{

ElemType data;

struct Lnode *next;

}Lnode,*Linklist; //定义节点类型,指针类型

(2)、操作算法程序实现:

void create(Linklist &L,int m)

{

//生成一个具有m个结点的单向环表,环表中的结点编号依次为1,2,……,m Linklist h,p;

L=(Linklist)malloc(sizeof(Lnode));

L->data = 1;

h=L;

for(int i=2;i<=m;i++)

{

p = (Linklist)malloc(sizeof(Lnode));

p->data = i; //生成新节点,数据为节点编号

h->next = p;

h = p; //插入链表

}

h->next = L; //形成循环链表

}

void show(Linklist L,int m)

{

//从第一个节点开始依次输出节点编号

printf("The numbers of the list are: \n"); //提示用户

Linklist h;

h=L;

for(int i=1;i<=m;i++)

{

printf("%d ",h->data);

h = h->next;

}

printf("\n");

}

void Josephf(Linklist &L,int m,int s,int n)

{

//实现约瑟夫环

Linklist h,q;

h = L;

q = L;

while(h->data != s) //定位开始的节点

h = h->next;

while(q->next!=h) //定位在开始位置的上一个节点q = q->next;

for(int j=1;j<=m;j++)

{

int i=1;

while(i

{

q=q->next;

i++;

}

printf("%d ",q->next->data); //依次输出报号为n的节点

q->next = q->next->next; //删除已输出节点

}

printf("\n");

}

(3)、主程序的代码实现:

int main()

{

int s,m,n;

Linklist L;

printf("请输入节点数m:\n");

scanf("%d",&m);

create(L,m); //建立循环链表

show(L,m); //输出链表数据

printf("请输入起始位置s:\n");

scanf("%d",&s);

printf("请输入报的数n:\n");

scanf("%d",&n);

Josephf(L,m,s,n); //输出所报数字

北京理工大学汇编语言实验六磁盘文件存取实验报告

第六章磁盘文件存取实验(设计性实验) 一、实验要求和目的 1.理解文件、目录的概念; 2.了解FCB(文件控制块)方式文件管理方法; 3.掌握文件代号式文件存取方式; 4.学习使用文件指针读取文件 二、软硬件环境 1.硬件环境:计算机系统windows; 2.软件环境:装有MASM、DEBUG、LINK、等应用程序。 三、实验涉及的主要知识单元 DOS功能调用中断(INT 21H)提供了两类磁盘文件管理功能,一类是FCB(文件控制块)方式,另一类是文件代号式存取方式。 对于文件的管理,实际上是对文件的读写管理,DOS 设计了四种存取文件 方式:顺序存取方式、随机存取方式、随机分块存取方式和代号法存取方式。文件的处理步骤 A)写之前必须先建立文件、读之前必须先打开文件。 B)写文件之后一定要关闭文件。通过关闭文件,使操作系统确认此 文件放在磁盘哪一部分,写后不关闭会导致写入文件不完整。 1、文件代号式存取方式: 当用户需要打开或建立一个文件时,必须提供文件标识符。文件标识符用ASCII Z 字符串表示。ASCII Z 字符串是指文件标识符的ASCII 字符串后面再加1 个“0”字符。文件标识符的字符串包括驱动器名、路径名和文件名。其格式为 [d:][path]filename[.exe] 其中d 为驱动器名,path 为路径名,.exe 为文件名后缀。 中断 21H 提供了许多有关目录和文件操作的功能,其中文件代号式存取方式常用的功能如下: 2、操作目录的常用功能 39H——创建目录 3BH——设置当前目录 3AH——删除目录 47H——读取当前目录 有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅相关资料 之目录控制功能。 3、用文件句柄操作文件的常用功能 3CH——创建文件 4EH——查找到第一个文件 3DH——打开文件 4FH——查找下一个文件 3EH——关闭文件 56H——文件换名 3FH——读文件或设备 57H——读取/设置文件的日期和时间 40H——写文件或设备 5AH——创建临时文件 41H——删除文件 5BH——创建新文件

MATLAB实验报告50059

实验一MATLAB操作基础 实验目的和要求: 1、熟悉MATLAB的操作环境及基本操作方法。 2、掌握MATLAB的搜索路径及设置方法。 3、熟悉MATLAB帮助信息的查阅方法 实验内容: 1、建立自己的工作目录,再设置自己的工作目录设置到MA TLAB搜索路径下,再试 验用help命令能否查询到自己的工作目录。 2、在MA TLAB的操作环境下验证课本;例1-1至例1-4,总结MATLAB的特点。 例1-1

例1-2 例1-3 例1-4

3、利用帮助功能查询inv、plot、max、round等函数的功能。 4、完成下列操作: (1)在matlab命令窗口输入以下命令: x=0:pi/10:2*pi; y=sin(x); (2)在工作空间窗口选择变量y,再在工作空间窗口选择回绘图菜单命令或在工具栏中单击绘图命令按钮,绘制变量y的图形,并分析图形的含义。

5、访问mathworks公司的主页,查询有关MATLAB的产品信息。 主要教学环节的组织: 教师讲授实验目的、开发环境界面、演示实验过程,然后同学上机练习。 思考题: 1、如何启动与退出MA TLAB集成环境? 启动: (1)在windows桌面,单击任务栏上的开始按钮,选择‘所有程序’菜单项,然后选择MA TLAB程序组中的MA TLABR2008b程序选项,即可启动 MATLAB系统。 (2)在MA TLAB的安装路径中找到MA TLAB系统启动程序matlab.exe,然后运行它。 (3)在桌面上建立快捷方式后。双击快捷方式图标,启动MA TLAB。 退出: (1)在MA TLAB主窗口file菜单中选择exitMATLAB命令。 (2)在MA TLAB命令窗口中输入exit或quit命令。 (3)单击MATLAB主窗口的关闭按钮。 2、简述MATLAB的主要功能。 MATLAB是一种应用于科学计算领域的数学软件,它主要包括数值计算和符 号计算功能、绘图功能、编程语言功能以及应用工具箱的扩展功能。 3、如果一个MATLAB命令包含的字符很多,需要分成多行输入,该如何处理?

北京理工大学汇编实验五

一、实验目的 1、掌握子程序有关基本知识,学会子程序设计方法; 2、掌握主程序与子程序之间的调用关系及调用方法; 3、掌握汇编语言字符串处理方法; 4、掌握字符串的输入输出程序设计方法; 5、掌握数制转换程序实现方法。 二、实验软硬件环境 1、硬件环境:惠普64 位一体化计算机及局域网; 2、软件环境:windows 8,红蜘蛛管理系统,MASM for Windows。 三、实验相关知识 把功能相对独立的程序段单独编写和调试,作为一个相对独立的模块供程序使用,就性成子程序。子程序可以实现源程序的模块化,可简化源程序结构,可以提高编程效率。 1) 子程序的定义语句格式 汇编语言子程序以proc 语句行开始,以endp 语句行结束。如: 过程名PROC near[或far] 过程体 .......................... 过程名ENDP 在主程序中用CALL 过程名调用。主程序和子程序之间传递参数通常通过栈来进行,当然也可以用某些缺省的寄存器或内存来传递。但以通过栈来传递参数程序的通用性最强。 2) 子程序调用说明 子程序从PROC 语句开始,以ENDP 语句结束,程序中至少应当包含一条RET 语句用以返回主程序。在定义子程序时,应当注意其距离属性:当子程序和调用程序在同一代码段中时,用NEAR 属性;当子程序及其调用程序不在同一个代码段中时,应当定义为FAR 属性。当由DOS 系统进入子程序时,子程序应当定义为FAR 属性。为执行子程序后返回操作系统,在子程序的前几条指令中设置返回信息。 3) 子程序使用中的问题 A、主程序调用子程序是通过CALL 指令来实现的。子程序执行后,通过RET 指令, 返回主程序调用指令CALL 的下一条指令,继续执行主程序。一个子程序可以由 主程序在不同时刻多次调用。如果在子程序中又调用了其他的子程序,则称为子程 序的嵌套。特别是当子程序又能调用子程序本身时,这种调用称为递归。 B、调用子程序时寄存器及所用存储单元内容的保护。如果子程序中要用到某些寄存器 或存储单元时,为了不破坏原有的信息,要将寄存器或存储单元的原有内容压栈保 护,或存入子程序不用的寄存器或存储单元中。 C、用于中断服务的子程序则一定要把保护指令安排在子程序中,这是因为中断是随机 出现的,因此无法在主程序中安排保护指令。 D、调用程序在调用子程序时需要传送一些参数给子程序,这些参数是子程序运算中所 需要的原始数据。子程序运行后要将处理结果返回调用程序。原始数据和处理结果 的传递可以是数据,也可以是地址,统称为参数传递。 E、参数传递必须事先约定,子程序根据约定从寄存器或存储单元取原始数据(称入口 参数);进行处理后将处理结果(称出口参数)送到约定的寄存器或存储单元,返回到调用程序。参数传递一般有下面三种方法:用寄存器传递:适用于参数传递较少、

北京理工大学汇编语言实验报告实验五 子程序设计实验

实验五子程序设计实验(设计性实验) 一、实验要求和目的 1.熟悉汇编语言程序设计结构; 2.熟悉汇编语言子程序设计方法; 3.熟悉利用汇编语言子程序参数传递方法; 4.熟悉汇编语言字符串处理基本指令的使用方法; 5.掌握利用汇编语言实现字符串的输入输出程序设计方法; 6.掌握数制转换程序实现方法。 二、软硬件环境 1、硬件环境:计算机系统windows; 2、软件环境:装有MASM、DEBUG、LINK、等应用程序。 三、实验涉及的主要知识 A)子程序知识要点: 1、掌握子程序的定义语句; 过程名 PROC [near/far] 过程体 RET 过程名 ENDP 2.子程序结构形式 一个完整的子程序一般应包含下列内容: 1. )子程序的说明部分 在设计了程序时,要建立子程序的文档说明,使用户能清楚此子程序的功能和调用方法. 说明时,应含如下内容: .子程序名:命名时要名中见意. .子程序的功能:说明子程序完成的任务; .子程序入口参数:说明子程序运行所需参数及存放位置; .子程序出口参数:说明子程序运行结果的参数及存放位置; .子程序所占用的寄存器和工作单元; .子程序调用示例; 2、)掌握子程序的调用与返回 在汇编语言中,子程序的调用用CALL,返回用RET 指令来完成。 .段内调用与返回:调用子程序指令与子程序同在一个段内。因此只修改IP; .段间调用与返回:调用子程序与子程序分别在不同的段,因此在返回时,需同时修改CS:IP。 3.)子程序的现场保护与恢复 保护现场:在子程序设计时,CPU 内部寄存器内容的保护和恢复。 一般利用堆栈实现现场保护和恢复的格式: 过程名PROC [NEAR/FAR]

教科版五年级科学下册实验报告单

五年级科学下册实验报告单 科学实验报告单1 实验名称物体的沉浮 实验目的观察物体的沉浮 实验材料水槽、水、塑料、小刀、泡沫、橡皮、萝卜、曲别针等各种材料 实验过程实验一:取小石头、木块、橡皮、针等放入水中,观察它们的沉浮。 实验二:1、把水槽放在展台上,从袋中取出泡沫、回形针、萝卜等分别放入水中观察它们的沉浮 2、把小石块、橡皮、泡沫块、萝卜分别切成二分之一、四分之一、八分之一放入水中观察它们的沉浮 实验结论木块、塑料、泡沫在水中是浮的;小石头、回形针在水中是沉的。由同一种材料构成的物体改变它们的体积大小,在水中的沉浮是不会发生改变的。 科学实验报告单2 实验名称影响物体沉浮的因素 实验目的研究物体的沉浮与哪些因素有关 实验材料水槽、小石块、泡沫塑料块、回型针、蜡烛、带盖的空瓶、萝卜、橡皮、一套同体积不同重量的球、一套同重量不同体积的立方体、小瓶子、潜水艇 实验过程实验1.按体积大小顺序排列七种物体,再标出它们在水中是沉还是浮。想一想,物体的沉浮和它的体积大小有关系吗? 实验2、按轻重顺序排列七种物体,再标出它们在水中是沉还是浮。想一想,物体的沉浮和它的轻重有关系吗 实验结论不同材料构成的物体,如果体积相同,重的物体容易沉;如果质量相同,体积小的物体容易沉。 科学实验报告单3 实验名称橡皮泥在水中的沉浮 实验目的橡皮泥排开水的体积 实验材料水槽、水、塑料、小刀、泡沫、橡皮、萝卜、曲别针等各种材料 实验过程实验一:找一块橡皮泥做成各种不同形状的实心物体放入水中,观察它们的沉浮。 实验二:1、让橡皮泥浮在水面上,用上面同样大小的橡皮泥,改变它的形状,即把橡皮泥做成船形或者空心的,橡皮泥就能浮在水面上。 2、取一个量杯,装入200毫升的水,记录橡皮泥在水中排开水的体积。 实验结论实心橡皮泥质量不变,形状改变,体积也不变,橡皮泥的沉浮不会发生改变。 橡皮泥在水中排开水的体积越大,浮力越大。 科学实验报告单4 实验名称造一艘小船 实验目的比较哪种船载物多 实验材料水槽、若干橡皮泥、若干垫子、玻璃弹子、有关图片 实验过程一、准备1.决定造一艘什么船;2.准备需要的材料。 二、制作1.画出船的设想草图;2.动手制作。 三、改进和完成 1.放到水里试试,找出需要改进的地方; 2.演示、介绍我的小船。 实验结论相同重量的橡皮泥,浸入水中的越大越容易浮,它的装载量也随之增大。

matlab实验报告

实验一小球做自由落体运动内容:一小球竖直方向做自由落体,并无损做往返运动。程序: theta=0:0.01:2*pi x=cos(theta) y=sin(theta) l=1 v=1 while l<10 for t=1:10 y=y+(-1)^l*v*t plot(x,y,[-1,1],[-56,2],'.') axis equal pause(0.1) end l=l+1 end 结果:

-50 -40 -30 -20 -10 收获:通过运用小球自由落体规律,及(-1)^n 来实现无损往 返运动! 实验二 旋转五角星 内容:一个五角星在圆内匀速旋转 程序:x=[2 2 2 2 2 2] y=[0 4/5*pi 8/5*pi 2/5*pi 6/5*pi 0] y1=2*sin(y) x1=2*cos(y) theta=0:4/5*pi:4*pi

x2=2*cos(theta) y2=2*sin(theta) plot(x,y,x1,y1,x2,y2) axis equal theta1=theta+pi/10 x2=2*cos(theta1) y2=2*sin(theta1) plot(x2,y2) axis equal theta=0:4/5*pi:4*pi for rot=pi/10:pi/10:2*pi x=2*cos(theta+rot) y=2*sin(theta+rot) plot(x,y) pause(0.1) end 结果:

-2 -1.5-1-0.500.51 1.52 -2-1.5-1-0.500.511.5 2 收获:通过theta1=theta+pi/10,我们可以实现五角星在圆内匀速 旋转! 实验三 转动的自行车 内容:一辆自行车在圆内匀速转动 程序:x=-4:0.08:4; y=sqrt(16-x.^2); theta1=-pi/2:0.01*pi:3*pi/2; x3=0.5*cos(theta1); y3=0.5*sin(theta1); theta=-pi/2+0.02*pi for k=1:100

北京理工大学汇编试题

一、数制转换,以下数为带符号数,表达成字节或字的形式:(10分) (-327)10 = ()2 (70b6)16=()10 (11010001)2 =()10 (0101010101011001)2=()10 ( 2572)10 =()16 二、指出划线部分的寻址方式,并计算其物理地址:(10分) 已知: (CS)=2100H, (DS)=2400H, (ES)=2800H, (SS)=2600H, (BX)=0600H, (DI)=0200H, (SI)= 0300H, (BP)=0400H, BUF=1000H 1、MOV CL ES:[1500H] ;寻址方式:物理地址: 2、CMP SI, [DI] ;寻址方式:物理地址: 3、ADD AX, BUF [BP] [SI] ;寻址方式:物理地址: 4、CALL WORD PTR CS:[SI] ;寻址方式:物理地址: 5、LEA DX, [BX+SI] ;寻址方式:物理地址: 三、已知一程序数据段如下,请在右边表格中填写该数据段数据存储的形式。(12 分,未初始化的单元填写“xx”) DATA SEGMENT Array C=50H BUFFER DB 'B',0BH, B_BYTE LABEL BYTE DATA1 DW 0FFAAH ORG $+1 DATA2 DW B_BYTE DATA3 DW C DATA4 DB 3 DUP(20H),0FFH DATA ENDS 四、写出下列程序段的运行结果,并逐条注释每条指令。

1. 该程序段执行后,BX= .,为什么?(用图表示)(9分)ADDR DW PROC0,PROC1,PROC2,PROC3,PROC4,PROC5,PROC6 DW PROC7,PROC8,PROC9 LEA SI,ADDR ADD SI,2 MOV BX,[SI] INC SI INC SI PUSH BX MOV AX,[SI] INC SI INC SI PUSH AX PUSH BP MOV BP,SP MOV DX,[BP+2] CALL [SI] … PROC1 PROC MOV BX,1 RET PROC1 ENDP PROC2 PROC MOV BX,2 RET PROC2 ENDP PROC3 PROC MOV BX,3 RET PROC3 ENDP 余此类推… (9分)2. 下面这段程序的功能是。

MATLAB实验报告(1-4)

信号与系统MATLAB第一次实验报告 一、实验目的 1.熟悉MATLAB软件并会简单的使用运算和简单二维图的绘制。 2.学会运用MATLAB表示常用连续时间信号的方法 3.观察并熟悉一些信号的波形和特性。 4.学会运用MATLAB进行连续信号时移、反折和尺度变换。 5.学会运用MATLAB进行连续时间微分、积分运算。 6.学会运用MATLAB进行连续信号相加、相乘运算。 7.学会运用MATLAB进行连续信号的奇偶分解。 二、实验任务 将实验书中的例题和解析看懂,并在MATLAB软件中练习例题,最终将作业完成。 三、实验内容 1.MATLAB软件基本运算入门。 1). MATLAB软件的数值计算: 算数运算 向量运算:1.向量元素要用”[ ]”括起来,元素之间可用空格、逗号分隔生成行向量,用分号分隔生成列向量。2.x=x0:step:xn.其中x0位初始值,step表示步长或者增量,xn 为结束值。 矩阵运算:1.矩阵”[ ]”括起来;矩阵每一行的各个元素必须用”,”或者空格分开; 矩阵的不同行之间必须用分号”;”或者ENTER分开。2.矩阵的加法或者减法运算是将矩阵的对应元素分别进行加法或者减法的运算。3.常用的点运算包括”.*”、”./”、”.\”、”.^”等等。 举例:计算一个函数并绘制出在对应区间上对应的值。

2).MATLAB软件的符号运算:定义符号变量的语句格式为”syms 变量名” 2.MATLAB软件简单二维图形绘制 1).函数y=f(x)关于变量x的曲线绘制用语:>>plot(x,y) 2).输出多个图像表顺序:例如m和n表示在一个窗口中显示m行n列个图像,p表 示第p个区域,表达为subplot(mnp)或者subplot(m,n,p) 3).表示输出表格横轴纵轴表达范围:axis([xmax,xmin,ymax,ymin]) 4).标上横轴纵轴的字母:xlabel(‘x’),ylabel(‘y’) 5).命名图像就在subplot写在同一行或者在下一个subplot前:title(‘……’) 6).输出:grid on 举例1: 举例2:

参考答案Matlab实验报告

实验一 Matlab基础知识 一、实验目的: 1.熟悉启动和退出Matlab的方法。 2.熟悉Matlab命令窗口的组成。 3.掌握建立矩阵的方法。 4.掌握Matlab各种表达式的书写规则以及常用函数的使 用。 二、实验内容: 1.求[100,999]之间能被21整除的数的个数。(rem) 2.建立一个字符串向量,删除其中的大写字母。(find) 3.输入矩阵,并找出其中大于或等于5的元素。(find) 4.不采用循环的形式求出和式 63 1 2i i= ∑ 的数值解。(sum) 三、实验步骤: ●求[100,199]之间能被21整除的数的个数。(rem) 1.开始→程序→Matlab 2.输入命令: ?m=100:999; ?p=rem(m,21); ?q=sum(p==0) ans=43 ●建立一个字符串向量,删除其中的大写字母。(find) 1.输入命令:

?k=input('’,’s’); Eie48458DHUEI4778 ?f=find(k>=’A’&k<=’Z’); f=9 10 11 12 13 ?k(f)=[ ] K=eie484584778 ●输入矩阵,并找出其中大于或等于5的元素。(find) 1.输入命令: ?h=[4 8 10;3 6 9; 5 7 3]; ?[i,j]=find(h>=5) i=3 j=1 1 2 2 2 3 2 1 3 2 3 ●不采用循环的形式求出和式的数值解。(sum) 1.输入命令: ?w=1:63; ?q=sum(2.^w) q=1.8447e+019

实验二 Matlab 基本程序 一、 实验目的: 1. 熟悉Matlab 的环境与工作空间。 2. 熟悉M 文件与M 函数的编写与应用。 3. 熟悉Matlab 的控制语句。 4. 掌握if,switch,for 等语句的使用。 二、 实验内容: 1. 根据y=1+1/3+1/5+……+1/(2n-1),编程求:y<5时最大n 值以及对应的y 值。 2. 编程完成,对输入的函数的百分制成绩进行等绩转换,90~100为优,80~89为良,70~79为中,60~69为及格。 3. 编写M 函数文件表示函数 ,并分别求x=12和56时的函数值。 4. 编程求分段函数 2226;03 56;0532 1;x x x x y x x x x x x x +-<≠=-+≤<≠≠-+且且及其它,并求输入x=[-5.0,-3.0,1.0,2.0,2.5,3.0,3.5]时的输出y 。 三、 实验步骤: 根据y=1+1/3+1/5+……+1/(2n-1),编程求:y<5时最大n 值以及对应的y 值。 1. 打开Matlab ,新建M 文件 2. 输入命令: 51022-+x

北京理工大学汇编实验二报告

北京理工大学汇编实验二报告

本科实验报告实验名称:算术运算类操作实验

一、实验要求和目的 1、了解汇编语言中的二进制、十六进制、十进制、BCD 码的表示形式; 2、掌握各类运算类指令对各状态标志位的影响及测试方法; 3、熟悉汇编语言二进制多字节加减法基本指令的使用方法; 4、熟悉无符号数和有符号数乘法和除法指令的使用; 5、掌握符号位扩展指令的使用。 6、掌握 BCD 码调整指令的使用方法 二、软硬件环境 1、硬件环境:计算机系统 windows; 2、软件环境:装有 MASM、DEBUG、LINK、等应用程序。 三、实验涉及的主要知识 1、加减法处理指令 主要有加法指令 ADD,带进位加法 ADC,减法指令 SUB,带进位减法指令 SBB。 2.乘除法指令和符号位扩展指令 主要有无符号数乘法指令MUL,带符号数乘

法指令IMUL,无符号数除法指令DIV,带符号数除法指令 IDIV,以及符号位从字节扩展到字的指令 CBW 和从字扩展到双字的指令 CWD。 3.BCD 码的调整指令 主要有非压缩的BCD 码加法调整指令DAA,压缩的 BCD 码减法调整指令 DAS,非压缩的 BCD 码加法调整指令 AAA,非压缩的 BCD 码减法调整指令 AAS,乘法的非压缩 BCD码调整指令 AAM,除法的非压缩 BCD 码调整指令 AAD。 8088/8086 指令系统提供了实现加、减、乘、除运算的上述基本指令,可对表 1 所示的数据类型进行数据运算。 表 1-2-1 数据类型数据运算表

四、实验内容与步骤 1、对于两组无符号数,087H 和 034H,0C2H 和5FH,试编程求这两组数的和差积商,并考虑计算结果对标志寄存器中状态标志位的影响:(1)实验流程 将一组 操作数 分别用 ADD,SUB,MUL,DIV 运算 (2)实验代码: DATAS SEGMENT BUF1 DB 087H BUF2 DB 034H BUF3 DB 4 DUP(?);此处输入数据段代码 DATAS ENDS

北京理工大学汇编实验五实验报告概要

本科实验报告实验名称:子程序设计实验

实验五子程序设计实验(设计性实验) 一、实验要求和目的 1.熟悉汇编语言程序设计结构; 2.熟悉汇编语言子程序设计方法; 3.熟悉利用汇编语言子程序参数传递方法; 4.熟悉汇编语言字符串处理基本指令的使用方法; 5.掌握利用汇编语言实现字符串的输入输出程序设计方法; 6.掌握数制转换程序实现方法。 二、软硬件环境 1、硬件环境:计算机系统windows; 2、软件环境:装有MASM、DEBUG、LINK、等应用程序。 三、实验涉及的主要知识 A)子程序知识要点: 1、掌握子程序的定义语句;过 程名PROC [near/far] 过程 体 RET 过程名ENDP 2.子程序结构形式一个完整的子程序一般应包含下列内容: 1. )子程序的说明部分 在设计了程序时,要建立子程序的文档说明,使用户能清楚此子程序的功能和调用方法. 说明时,应含如下内容: .子程序名:命名时要名中见意. .子程序的功能:说明子程序完成的任务; .子程序入口参数:说明子程序运行所需参数及存放位置; .子程序出口参数:说明子程序运行结果的参数及存放位置; .子程序所占用的寄存器和工作单元; .子程序调用示例; 2、)掌握子程序的调用与返回在汇编语言中,子程序的调用用CALL,返回用RET指令 来完成。 .段内调用与返回:调用子程序指令与子程序同在一个段内。因此只修改IP; .段间调用与返回:调用子程序与子程序分别在不同的段,因此在返回时,需同时修改CS:IP。 3.)子程序的现场保护与恢复保护现场:在子程序设计时,CPU内部寄存器内容的

保护和恢复。 一般利用堆栈实现现场保护和恢复的格式:过程名PROC [NEAR/FAR] PUSH AX PUSH BX . . PUSH DX . . . POP DX . . . POP AX RET 过程名ENDP 4.子程序的参数传递方法 1.寄存器传递参数这种方式是最基本的参数传递方式。 2.存储器单元传(变量)递参数 这种方法是在主程序调用子程序前,将入口参数存放到约定的存储单元中;子程序运行时到约定存储位置读取参数;子程序执行结束后将结果也放在约定存储单元中。 3.用堆栈传递参数 利用共享堆栈区,来传递参数是重要的的方法之一。 B)字符、字符串输入输出知识要点: 在实际应用中,经常需要从键盘输入数据并将结果等内容显示到屏幕上,方便程序控制及查看结果。汇编语言的数据输入和输出分成两类,一是单个字符数据的输入输出,一是字符串数据的输入输出。都可以通过DOS功能调用来实现,下面就分别介绍下用来实现数据输入输出的功能调用的使用方法。 1、单个字符输入 单个字符输入可以利用DOS的1号功能调用来完成,使用方法为: MOV AH,1 INT 21H 这两条语句执行后,光标会在屏幕上闪烁,等待输入数据,输入的数据以ASCII 码形式存储在AL寄存器中。 2、单个字符输出 单个字符输出可利用DOS2号功能调用来完成,使用方法为: MOV DL,’?’ MOV AH,2

科学五年级下册实验报告单

实验名称:杠杆平衡实验 班级:实验时间: 实验名称杠杆平衡实验 实验器材:杠杆尺、铁架台、钩码 我的猜想:阻力点到支点的距离×钩码数=动力点到支点的距离×钩码数我这样做: 1.组装杠杆尺,并把杠杆尺调成平衡状态 2.确定杠杆尺一侧的点为阻力点,挂一定数量的钩码 3.在另一侧确定动力点的位置,看看在不同位置上需要挂多少钩码 才能使杠杆尺保持平衡,并记录结果 4.改变阻力点的位置,重复第二步,做三次实验 5.收拾桌面,整理实验器材,把实验器材放回原处 观察到得现象或测量结果: 1.当动力点到支点的距离大于阻力点到支点的距离时,省力 2.当动力点到支点的距离小于阻力点到支点的距离时,费力 3.当动力点到支点的距离等于阻力点到支点的距离时,既不省力, 也不费力 本次实验的得与失:注意不要把钩码乱丢乱放,不要砸伤。

实验名称:杠杆和轮轴 实验器材:螺丝刀每组一把、扳手每组一把。 我的猜想:杠杆和轮轴都能省力 我这样做:1.选几名力气小的同学握螺丝刀的刀柄旋转,力气大得同学握住螺丝刀的刀杆向相反的方向旋转,看谁能取得胜利。2让全班力量悬殊的学生进行游戏,再让同桌的学生试一试,让大家都当一回“大力士”。 3.整理桌面 观察到的现象或者测量结果:使用轮轴和杠杆可以省力,在轴相同的情况下,轮越粗,越省力。 本次实验的得与失:使用螺丝刀小心,在相互比赛时注意安全

实验:研究吊车上的“轮子” 实验器材:铁架台、滑轮、线绳、钩码、测力计 我的猜想:滑轮可以省力 我这样做: 1.检查实验器材是否齐全,测力计指针是否在0刻度处 2.按要求组装定滑轮,在线绳一端挂两个钩码重1N,在线绳另一端拉动 线绳,用测力计向下匀速拉动,测得拉力为1N 3.测出两个钩码加滑轮重量,为1.1N 4.按要求组装动滑轮,向上拉动线绳,滑轮随重物一起上升,用测力计向 上拉动,提起重物加滑轮0.55N的力 5.按要求组装滑轮组,向下拉动线绳可将重物提起,用测力计向下拉,提 起重物加滑轮用了0.55N的力 6.收拾桌面,整理实验器材,把实验器材放回原处 观察到的现象或结果 1.定滑轮可以改变运动方向,不省力 2.动滑轮省力,不可以改变运动方向 3.滑轮组既省力,又可以改变运动方向 我的得与失: 测力计在使用前指针要归零

matlab实验报告

Matlab实验报告 实验二图像处理 一、实验目的 (1)通过应用MA TLAB语言编程实现对图像的处理,进一步熟悉MATLAB软件的编程及应用; (2)通过实验进一步掌握图像处理的基本技术和方法。 二、实验内容及代码 ㈠.应用MA TLAB语言编写显示一幅灰度图像、二值图像、索引图像及彩色图像的程序,并进行相互之间的转换 首先,在matlab页面中的current directory下打开存放图像的文件夹。 1.显示各种图像 ⑴显示彩色图像: ①代码:>> mousetif=imread('tif.TIF'); >> image(mousetif) 显示截图: ②代码:>> mousetif=imread('tif.TIF'); >> imshow(mousetif) 显示截图:

③代码:mousetif=imread('tif.TIF'); subimage(mousetif) 显示截图: 显示截图:

⑵显示二值图像 ①代码:>> I=imread('单色bmp.bmp'); >> imagesc(I,[0 2]) 显示截图: ②代码:>> I=imread('单色bmp.bmp');

>> imshow(I,2) 显示截图: ③代码:>> I=imread('单色bmp.bmp'); >> subimage(I) 显示截图:

⑶显示灰度图像 ①代码:>> I1=imread('256bmp.bmp'); >> imagesc(I1,[0,256]) 显示截图: 代码:>> I1=imread('256bmp.bmp'); >> colormap(gray); >> subplot(1,2,1); >> imagesc(I1,[0,256]); >> title('灰度级为[0 256]的mouse.bmp图'); >> subplot(1,2,2); >> imagesc(I1,[0,64]); >> colormap(gray); >> title('灰度级为[0 64]的mouse.bmp图'); 显示截图:

matlab实验报告

实验报告 2. The Branching statements 一、实验目的: 1.To grasp the use of the branching statements; 2.To grasp the top-down program design technique. 二、实验内容及要求: 1.实验内容: 1).编写 MATLAB 语句计算 y(t)的值 (Write the MATLAB program required to calculate y(t) from the equation) ???<+≥+-=0 530 53)(2 2t t t t t y 已知 t 从-5到 5 每隔0.5取一次值。运用循环和选择语句进行计算。 (for values of t between -5 and 5 in steps of 0.5. Use loops and branches to perform this calculation.) 2).用向量算法解决练习 1, 比较这两个方案的耗时。 (tic ,toc 的命令可以帮助你完成的时间计算,请使用'help'函数)。 Rewrite the program 1 using vectorization and compare the consuming time of these two programs. (tic, toc commands can help you to finish the time calculation, please use the …help ? function). 2.实验要求: 在报告中要体现top-down design technique, 对于 3 要写出完整的设计过程。 三、设计思路: 1.用循环和选择语句进行计算: 1).定义自变量t :t=-5:0.5:5; 2).用循环语句实现对自变量的遍历。 3).用选择语句实现对自变量的判断,选择。 4).将选择语句置入循环语句中,则实现在遍历中对数据的选择,从而实现程序的功能。 2. 用向量法实现: 1).定义自变量t :t=-5:0.5:5; 2).用 b=t>=0 语句,将t>=0得数据选择出,再通过向量运算y(b)=-3*t(b).^2 + 5; 得出结果。 3).用取反运算,选择出剩下的数据,在进行向量运算,得出结果。 四、实验程序和结果 1.实验程序 实验程序:创建m 文件:y_t.m

广州大学学生实验报告1 matlab 程序设计

广州大学学生实验报告 开课学院及实验室:机械与电气工程学院计算机楼 301室2014 年10 月30 日

2、MATLAB指令窗的基本操作 MATLAB指令窗给用户提供了最直接的交互界面,可用于输入和执行指令、显示指令运行结果、调试MATLAB程序等常用的MATLAB仿真计算功能。本实验掌握以下在指令窗执行的基本操作,达到熟悉使用指令窗的目的: (1)最简单的计算器使用方法:在MATLAB指令窗中,可按计算器的方式进行一般的数学计算,MATLAB的运算符的含义大致与常见的运算规则一致; (2)在指令窗中输入和生成矩阵:与一般的计算器不同,在MATLAB中可直接输入和生成矩阵。实际上,矩阵是MATLAB工作的基本元素。 (3)数值表述方法:在MATLAB中的大部分数值的表述方式与平常是相同的,需要注意的是在表示比较大的数时,MATLAB默认采用科学计数法显示; (4)变量命名规则:对于MATLAB变量命名规则,需要注意以下几点: a、变量名、函数名对字母大小写敏感 b、变量名的第一个字母必须是英文字母,后续可以是字母、数字、下划线 c、变量的有效时限:在变量定义赋值之后,会作为内存变量保存并显示在Workspace Browser中。因此,凡是显示在Workspace Browser中的变量 都是“有效”的,其后可以被调用,否则不能被调用。 d、对于像 等常用的数学常量,MATLAB定义了预定义变量与其对应,在使用时需多加留意。 e、复数和复数矩阵的表示方法。 (5)其他操作的操作要旨和操作技巧的运用。 3、计算结果的图形表示 计算结果可视化是MATLAB的主要组成部分,借助图形表现数据是十分常用的“数据表达手段”,尤其当数据量相当庞大时,因为图形可以表现数据内在联系和宏观特征。关于MATLAB绘图的基本方法在后续章节中详细讲述,本实验主要通过示例了解MATLAB绘图的基本功能。 4、Current Directory、路径设置器和文件管理 理解当前目录Current Directory和搜索路径的作用是正确使用MATLAB的关键环节。当前目录指的是当前MA TLAB工作的目录,MATLAB运行指令需要打开或者保存的文件,都首先在目录中查找或保存。搜索路径则是MATLAB工作时,需查找相应的文件、函数或变量所在的相关文件夹所在的路径。 在理解当前目录Current Directory和搜索路径的作用的基础上,也要掌握当前目录Current Directory和搜索路径的设置方法,这是正确使用MA TLAB 的必要步骤。 为了理解MATLAB当前目录Current Directory和搜索路径的作用,可以大致了解一下当用户从指令窗送入一个名为cow的指令后,MATLAB的“运作次序”: (1)MATLAB在内存中检查,看cow是不是变量;如果不是,进行下一步; (2)检查cow是不是内建函数;如果不是进行下一步; (3)在当前目录下,检查是否有名为cow的M文件存在;如果不是,进行下一步; (4)在MA TLAB搜索路径的其他目录下,检查是否有名为cow的M文件存在。

五年级下册实验报告单3个

五年级下册第2课撬棍的学问 杠杆的作用实验报告 五年级班实验人:年月日星期材料和工具:力与机械实验盒、杠杆尺、支架、钩码等。 我的猜想:杠杆的作用。 实验方法和步骤: 实验一:认识杠杆画出杠杆简图,并标出杠杆上的三个点。 实验二:怎样使杠杆保持平衡 我们发现的规律:。

五年级下册第3课轮子的妙用 轮轴的作用实验报告 五年级班实验人:年月日星期 材料和工具:螺丝刀、扳手、铁架台、力与机械实验盒、轮轴实验装置、钩码、滑轮、细绳、啤酒瓶子、测力计、橡皮筋等。 我的猜想:轮轴的作用是 实验方法和步骤: 1、认识并组装轮轴; 2、轮轴的作用。 方法l:将2个钩码挂在皮筋秤上,观察皮筋伸长的长度。在轴上挂2个钩码,把轮线绳下端系在皮筋秤钩上,手握皮筋秤向下拉动轮子,观察皮筋秤上皮筋伸长的长度。在轮的线绳上挂2个钩码,轴的线绳上挂皮筋秤,再做上述实验,观察皮筋伸长的长度。 方法2:找班上一个力气大的同学,握住瓶口部分再找一个力气小的同学,握住瓶底部分。让两人同时向相反的方向拧,看瓶向哪个方向转。(必须注意安全) 实验结论:根的作用

五年级下册第4课斜坡的科学 斜面的作用实验报告 五年级班实验人:年月日星期 材料和工具:测力计、木板3块(30厘米、35厘米、40厘米)、木块(20厘米)、积木、重物、木辊、彩色硬板纸、细绳等。 我的猜想:斜面的作用是 实验方法和步骤: 1、认识斜面; 2、研究斜面的作用: A用测力计竖直将木辊拉起,观察测力计指针的位置; B通过测力计沿30厘米的木板搭成的斜面将木辊或木块拉起,观察测力计指针的位置; C通过测力计沿35厘米的木板搭成的斜面将木辊或木块拉起,观察测力计指针的位置; D通过测力计沿40厘米的木板搭成的斜面将木辊或木块拉起,观察测力计指针的位置; 实验结论:斜面有的作用。

北京理工大学DSP实验一

本科实验报告 实验名称:实验一利用DFT对信号进行频谱分析

实验一 利用DFT 对信号进行频谱分析 一、 实验目的 利用DFT 对信号进行频谱分析,研究不同数据长度、补零、加窗等对频率分辨率的影响。 二、 实验原理 1.连续周期信号相对于离散周期信号,连续非周期信号相对于离散非周期信号,都可以通过时域抽样定理建立相互关系。因此,在离散信号的DFT 分析方法基础上,增加时域抽样的步骤,就可以实现连续信号的DFT 分析。 2.利用DFT 计算连续周期信号X (t )的频谱的分析步骤: (1) 确定周期信号的基本周期T0; (2) 计算一个周期内的抽样点数N 。若周期信号的最高次谐频为p 次谐波pw0 ,则频谱中有2p+1根谱线;若周期信号的频谱无限宽,则认为集中信号90%以上(或根据工程允许而定)能量的前(p+1)次谐波为近似的频谱范围,其余谐波忽略不计。取N>=2p+1; (3) 对连续周期信号以抽样间隔T= T0 /N 进行抽样,得到x[k] ; (4) 利用FFT 函数对x[k]作N 点FFT 运算,得到X[m]; (5) 最后求得连续周期信号的频谱为X(nw0)=X[m]/N 。 三、 实验内容与分析 对1 23πππ+x(t )=cos(2ft)+cos(2f t)cos(2f t) ,

其中123f 2,f 2.5,f 3,t ms kHz kHz kHz ===的单位为 进行频谱分析: 1.由f 3,f 2h s h kHz f =≥ ,选择10kHz 的采样频率对x (t )进行时域采 样。 2.由x(t)可知,min f 0.5k Hz ?= ,下面取不同数据长度对x (t )进行频谱分析: (1) 对连续时间信号采样后取L1=10、L2=20两个数据长度;

Matlab实验指导书(含答案)汇总

实验一:Matlab操作环境熟悉 一、实验目的 1.初步了解Matlab操作环境。 2.学习使用图形函数计算器命令funtool及其环境。 二、实验内容 熟悉Matlab操作环境,认识命令窗口、内存工作区窗口、历史命令窗口;学会使用format命令调整命令窗口的数据显示格式;学会使用变量和矩阵的输入,并进行简单的计算;学会使用who和whos命令查看内存变量信息;学会使用图形函数计算器funtool,并进行下列计算: 1.单函数运算操作。 求下列函数的符号导数 (1) y=sin(x); (2) y=(1+x)^3*(2-x); 求下列函数的符号积分 (1) y=cos(x); (2) y=1/(1+x^2); (3) y=1/sqrt(1-x^2); (4) y=(x-1)/(x+1)/(x+2); 求反函数 (1) y=(x-1)/(2*x+3); (2) y=exp(x); (3) y=log(x+sqrt(1+x^2)); 代数式的化简 (1) (x+1)*(x-1)*(x-2)/(x-3)/(x-4); (2) sin(x)^2+cos(x)^2; (3) x+sin(x)+2*x-3*cos(x)+4*x*sin(x); 2.函数与参数的运算操作。 从y=x^2通过参数的选择去观察下列函数的图形变化 (1) y1=(x+1)^2 (2) y2=(x+2)^2 (3) y3=2*x^2 (4) y4=x^2+2 (5) y5=x^4 (6) y6=x^2/2 3.两个函数之间的操作 求和 (1) sin(x)+cos(x) (2) 1+x+x^2+x^3+x^4+x^5 乘积 (1) exp(-x)*sin(x)

北京理工大学汇编语言实验报告一

汇编语言实验报告 实验一 DOS环境下的汇编语言编程环境使用 (基础与验证型) 班级:05211002 姓名:张宁 学号:1120102310 实验日期:2012.9.7晚6:00~9:00

汇编语言实验报告 实验一 DOS 环境下的汇编语言编程环境使用(基础与验证型) 一、实验要求和目的 1、掌握汇编语言程序设计的基本流程和学会上机开发简单程序; 2、熟练掌握宏汇编程序MASM 的使用; 3、熟练掌握连接程序LINK 的使用; 4、熟练掌握DEBUG 的使用; 二、软硬件环境 1、硬件环境:计算机系统windows; 2、软件环境:装有MASM、DEBUG、LINK、等应用程序。 三、实验涉及的主要知识 汇编语言程序设计上机开发过程如图1.1 所示。 四、实验内容与步骤 1、汇编、链接并调试给出的简单程序,找出程序中的错误。 (一)录入并建立汇编语言源程序文件(ASM 文件) (二)用汇编程序MASM 将ASM 文件汇编成目标程序文件(OBJ 文件) (三)用连接程序LINK 生成可执行程序文件(EXE 文件) (四)程序的调试 2、完成程序设计: 分类统计字数组data 中正数、负数和零的个数,并分别存入内存字变量Positive、Negative 和Zero 中,数组元素个数保存在其第一个字中。使用Debug 查看Positive、Negative 和Zero 三个变量的数据。

五、实验过程及结果: 实验一: 1.输入给出的程序 2.运行输入的程序,发现了三处错误:

根据错误提示,发现错误为ADDITION后未打冒号,CMP错打为COM。修改原代码: 改为: 3.代码编译成功,生成OBJ文件,再生成EXE文件,可成功运行。 4.在原程序代码后添加两行代码,以验证ADDITION的逻辑正确性,改动如下: 现实在DA TA1中添加字节型sum ,再将ADDITION的运行结果,从AX送到sum中去。 5.调试发现ADDITION并没用正确运行。检查语句逻辑性发现,应将JAE改成JB,才能 实现累加并终结。 改为: 6.重新进行DEBUG调试:

相关主题