当前位置:文档之家› 四川师范大学数学与软件科学学院程序设计实验报告实验八

四川师范大学数学与软件科学学院程序设计实验报告实验八

四川师范大学数学与软件科学学院程序设计实验报告实验八
四川师范大学数学与软件科学学院程序设计实验报告实验八

数学与软件科学学院实验报告

一、实验目的

(1) 掌握C语言环境下指针的声明、定义和使用方法;

(2) 掌握指针和变量以及指针和数组的关系;

(3) 掌握指针、数组之间的关系;

(4) 掌握指针、函数之间的关系。

二、实验内容

1.熟悉指针的基本使用方法。

(1) 请仔细分析以下程序段,并上机测试运行结果,对测试结果进行分析说明。

1) 程序段一:

#include <>

main()

{

int i=3,j=7,k=9;

printf("i=%d,j=%d,k=%d",*(&i),*(&j),*(&k));

}

2) 程序段二:

#include <>

main()

{

int a,*p;

float b,*q;

p=&a;

q=&b;

scanf("%d,%f",p,q);

*p=a*(*q);

printf("a=%d,p=%d,*p=%d\n",a,p,*p);

printf("b=%f,q=%d,*q=%f\n",b,q,*q);

printf("p+1=%d,q+1=%d",p+1,q+1);

}

2. 想使指针变量pt1指向变量a和b中的大者,pt2指向其小者,以下程序能

否实现此目的为什么如果不行,请给出实现的方法。

#include <>

swap(int *p1,int *p2);

main()

{

int a,b;

int *p1,*p2,*p;

scanf("%d,%d",&a,&b);

p1=&a;

p2=&b;

if(a

{

swap(p1,p2);

}

else

printf("%d,%d",*p1,*p2);

}

swap(int *p1,int *p2)

{

int *p;

p=p1;

p1=p2;

p2=p;

printf("%d,%d",*p1,*p2);

}

3.请仔细分析教材例6-8~6-9,上机调试之。记录并分析程序运行结果。#include <>

main()

{

int *p1,*p2,*p,a,b;

scanf("%d,%d",&a,&b);

p1=&a;

p2=&b;

if(a

{

p=p1;

p1=p2;

p2=p;

}

printf("a=%d,b=%d\n",a,b);

printf("max=%d,min=%d\n",*p1,*p2);

}

三、实验准备

(1) 编写所选实验题目的程序代码和流程图;

(2) 检查源程序并给出其可能的运行结果说明。

四、实验步骤

(1) 上机验证所选题目,并做相应测试和分析;

(2) 进行实验分析;

(3) 总结指针及其程序设计、实现方法和经验;

(4) 编写实验报告。

五、实验结果

1.熟悉指针的基本使用方法。

(1) 请仔细分析以下程序段,并上机测试运行结果,对测试结果进行分析说明。

1) 程序段一:

2) 程序段二:

2.想使指针变量pt1指向变量a和b中的大者,pt2指向其小者,以下程序能否实现此目的为什么如果不行,请给出实现的方法。

不行,因为函数调用之后就不存在了,本质上,pt1和pt2是没有改变的:

3.请仔细分析教材例6-8~6-9,上机调试之。记录并分析程序运行结果。输入两个数,并使其从大到小输出:

汇编实验报告

XXXX大学 实验报告 课程名称汇编语言程序设计成 绩 实验学时 评语: 指导教师: 年月日 班级: 学号: 姓名: 地点: 时间:

实验一汇编语言编程实验 一、实验目的 (1)掌握汇编语言的编程方法 (2)掌握DOS功能调用的使用方法 (3)掌握汇编语言程序的调试运行过程 二、实验内容 1. 将指定数据区的字符串数据以ASCII码形式显示在屏幕上,并通过DOS功能调用完 成必要提示信息的显示。 2. 在屏幕上显示自己的学号姓名信息。 3. 循环从键盘读入字符并回显在屏幕上,然后显示出对应字符的ASCII码,直到输 入”Q”或“q”时结束。 4. 实验中使用的DOS功能调用: INT 21H AH 值功能调用参数结果 1 键盘输入并回显AL=输出字符 2 显示单个字符(带Ctrl+Break检查) DL=输出字符光标在字符后面 6 显示单个字符(无Ctrl+Break检查) DL=输出字符光标在字符后面 8 从键盘上读一个字符AL=字符的ASCII码 光标跟在串后面 9 显示字符串DS:DX=串地址, ‘$’为结束字符 4CH 返回DOS系统AL=返回码 例如,实现键盘输入并回显的完整代码: MOV AH 01H INT 21H 三、实验结果 1. 将指定数据区的字符串数据”Let us go !”以ASCII码形式显示在屏幕上,并通过 DOS功能调用完成必要提示信息的显示: 2. 在屏幕上显示自己的学号姓名信息 3.循环从键盘读入字符并回显在屏幕上,然后显示出对应字符的ASCII码,直到输 入”Q”或“q”时结束。

四、实验原理 DATA SEGMENT MES DB 'NUMBER: 03099018 ',0AH,0DH,'NAME: Feng Xiaokang',0AH,0DH,'$' CENT DB 'Let us go !','$' ENTE DB 0AH,0DH,'$' INFO DB 'Origin: ','$' ASCI DB 'ASCII : ','$' MSG1 DB 'If you want to quit please press...q/Q...',0AH,0DH,'$' MSG2 DB 0AH,0DH,'Char: $' RS DB ' ASCII: $' SD DB '' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ;存储数据 MOV DS,AX MOV DX,OFFSET MES ;显示数据 MOV AH,09H INT 21H MOV DX,OFFSET MSG1 MOV AH,09H INT 21H MOV DX, OFFSET CENT MOV SI, DX T: MOV AL,[SI] CMP AL,'$' JZ C1 AND AL,0F0H ;取高4位 MOV CL,4 SHR AL,CL CMP AL,0AH ;是否是A以上的数 JB A ADD AL,07H A: ADD AL,30H MOV DL,AL ;show character MOV AH,02H INT 21H

数学实验报告格式

《数学实验》实验报告 ( 2012 年 03 月 30 日) 一、实验问题 1、某公司指派5个员工到5个城市工作(每个城市单独一人),希望使所花费的总电话 费用尽可能少。5个员工两两之间每个月通话的时间表示在下面的矩阵的上三角部分(因 为通话的时间矩阵是对称的,没有必要写出下三角部分),5个城市两两之间通话费率表示在 下面的矩阵的下三角部分(同样道理,因为通话的费率矩阵是对称的,没有必要写出上三角 部分). 试求解该二次指派问题。 通话时间d=[0 1 1 2 3 1 0 2 1 2 1 2 0 1 2 2 1 1 0 1 3 2 2 1 0 ] 城市间通话费率 c=[0 5 2 4 1 5 0 3 0 2 2 3 0 0 0 4 0 0 0 5 1 2 0 5 0] 2、某校毕业生必须至少修:两门数学课、三门运筹学课、两门计算机课。 1)某学生希 望所修课程最少。 2)某学生希望课程少学分多。 3)某学生觉得学分数和课程数这两大目标大致应该三七开。 3、某储蓄所营业时间为上午9:00--下午5:00,储蓄所可以雇佣两类服务员:全职:每 天100元中午12:00--下午2:00之间必须安排1小时的午餐时间半职:每人40 元必须连 续工作4小时 1)储蓄所每天雇佣的半职服务员不超过3人,为使花费最少该如何雇佣两类服务员。 2) 如果不能雇佣半时服务员,花费多少? 3)如果雇佣半时服务员没有人数限制花费多少? 二、问题的分析(涉及的理论知识、数学建模与求解的方法等) ?1 1、用xik?? ?0 i人去了k城市 ?1 (i=1...5) xjh?? i人不去k城市?0 j人去了h城市j人没去h城市 (i=1...5) dij表示i和j的通话时间;ckh表示城市k和h之间的费率,数学模型: 5555 min ????c kh dijxikxjh i?1 j?1k?1h?1 ?5 ??xik?1k?1...5?i?1? 5?1i?1 (5) s.t.??xik?k?1 5

汇编实验报告(详细版)

计算机组成与汇编语言(实验报告) 内容: 实验一、六、七、八 院系专业:计算机学院计算机科学与技术 姓名:xxxxxxxxx 学号: 2011004xxxxx 完成时间:2012年12月1日

计算机组成与汇编语言实验报告 姓名xxxx 学号2011004xxxxx 计分 专业软件工程班级xxxx 实验日期2012年 12 月 1日实验名称实验一数制转换 实验目的 ●熟悉各种进制数据之间的相互转换方法。 ●掌握二-十进制数据的相互转换程序设计。 实验内容 1.将编写好的程序1输入、编译、连接并运行。 程序1清单 #include #include #include void main() { int i,l,s0=0,s=0; char a[17]; while(l!=16) { printf("请输入一个16位的二进制数:\n"); gets(a); l=strlen(a); for(i=0;i<16;i++) { if(a[i]!='0'&&a[i]!='1') {

printf("输入的二进制数不正确!!"); break; } } } if(a[15]=='1') s++; for(i=1;i<16;i++) { if(a[15-i]=='1') s+=(1<

说明:如果不是16位二进制则会提示错误。 2.将编写好的程序2输入、编译、连接并运行。 程序2清单 #include #include void main() { int t0,t1,t2,t3,i,j; int a[16]; printf("请输入一个十进制数:"); scanf("%d",&t0); t1=t0; for(i=0;i<16;i++) { t2=t1/2; if(t2>1) a[i]=t1%2; else if(t1==1) { a[0]=1; for(i=1;i<16;i++) a[i]=0; } else if(t1==2) { a[i]=0; a[i+1]=1; for(j=i+2;j<16;j++)

汇编语言程序设计实验报告

微机原理实验报告 实验名称汇编语言程序设计 一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法 二、实验设备 装有emu8086软件的PC机 三、实验内容 1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH, 97H,64H,BBH,7FH,0FH,D8H。编程并显示结果:如果数组是无符号数,求出最大值,并显示; 如果数组是有符号数,求出最大值,并显示。 2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H 的BCD是:” 3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD 码7693的ASCII是:” 4、两个长度均为100的内存块,先将内存块1全部写上88H,再 将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子程序) 5、键盘输入一个小写字母(a~z),转换成大写字母 显示:请输入一个小写字母(a~z): 转换后的大写字母是: 6、实现4字节无符号数加法程序,并显示结果,如99223344H + 第1页

99223344H = xxxxxxxxH 四、实验代码及结果 实验代码见代码附录 1.1程序运行结果 图1 无符号最大值结果截图 1.1 程序运行结果

图2 有符号最大值截图2.0 程序运行结果

图3 BCD码显示3.0 程序运行结果

图4 ASCII码显示4.0 程序运行结果

图5 移动次数显示5.0 程序运行结果

汇编实验报告

南华大学 实验名称:汇编语言程序设计实验 学院:计算机学院 专业班级:本2010 电气信息类03班 学号:20104030342 姓名:谢志兴 指导教师:刘芳菊 日期:2012 年 6 月10 日

实验一DEBUG的熟悉 一、实验目的 (1)学习使用DEBUG的命令; (2)使用DEBUG命令在数据段中查看程序运行的结果; (3)利用DEBUG运行简单的程序段。 二、实验内容 1)输入程序观察寄存器变化 使用DEBUG命令,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器的内容变化。注意用T命令执行时,CS: IP寄存器的内容。 MOV AX, 4E20 ADD AX, 1416 MOV BX, 2000 ADD AX, BX MOV BX, AX ADD AX, BX MOV AX, 001A MOV BX, 0026 ADD AL, BL ADD AH, BL ADD BH, AL MOV AH, 0 ADD AL, BL ADD AL, 9C 2)输入下面的程序,这是一个两个数相与的程序。结果存放在MSG2单元中,偏移地址为?值为多少? DSEG SEGMENT MSG1 DW 7856H, 2038H MSG2 DW? DSEG ENDS CSEG SEGMENT ASSUME CS: CSEG, DS: DSEG

START: MOV AX, DSEG MOV DS, AX MOV AX, MSG1 AND AX, MSG1+2 MOV MSG2, AX MOV AL, 0 MOV AH, 4CH INT 21H CSEG ENDS END START 程序的跟踪执行操作 在DOS下直接输入文件主名就可以执行文件了,有的程序会显示结果,可能执行后什么结果都没有,是因为程序中没有显示命令。那么如何查看程序的运行结果呢? 程序执行过程的跟踪操作步骤如下: (1)在DOS下输入:DEBUG 文件名.EXE (2)在DEBUG提示符下输入U命令 如果程序中有数据段,可以看到反汇编后第一句可执行语句为: A地址:B地址MOV AX, K地址如:1261:0000 MOV AX, 1260 其中:K地址就是数据段的段寄存器内容,A地址为代码段段寄存器地址,B地址为程序第一条指令的偏移地址。 (3)可以用T命令单步执行指令,执行到MOV AH, 4CH时结束,也可以用G命令执行整个程序,输入:G=B地址(如:G=0000) (4)用D命令查看程序执行后数据段的变化 输入:D K地址:0 (如:D1260:0)

汇编实验报告..

合肥工业大学计算机与信息学院 实验报告 课程:汇编语言程序设计专业班级: 学号: 姓名:

实验一Debug程序的使用 一.实验目的 1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。 2、掌握8086/8088的寻址方式及多字节数据的处理方法。 二.实验内容 1、利用DEBUG程序中的“E”命令,将两个多字节数“003F1AE7H”和“006BE5C4H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。 2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H 单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。要求: 本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。 三.实验过程和程序 1、启动DOS操作系统 2、运行https://www.doczj.com/doc/e112612673.html,程序(若当前盘为C) C:>DEBUG↙ – ;(“–”为DEBUG提示符,仅当屏幕出现该提示符后,才可输入DEBUG命令) 3、用“A”命令编辑和汇编源程序 –A ↙ 186E:0100 MOV AX,[0200]↙ 186E:0103 MOV BX,[0202]↙ 186E:0107 ADD AX,[0204]↙ 186E:010B ADC BX,[0206]↙ 186E:010F MOV [0208],AX↙ 186E:0112 MOV [020A],BX↙ 186E:0116 ↙ 4、用“U”命令反汇编验证源程序 –U CS:0100↙ 186E:0100 A10002 MOV AX,[0200] 186E:0103 8B1E0202 MOV BX,[0202] 186E:0107 03060402 ADD AX,[0204] 186E:010B 131E0602 ADC BX,[0206] 186E:010F A30802 MOV [0208],AX 186E:0112 891E0A02 MOV [020A],BX 186E:0116 – 注意:

数学实验报告

《数学实验》报告 题目:根据数值积分计算方法计 算山东省面积 学生姓名: 学号: 专业班级:机械工程17-1班

2019年4月15日

一、问题背景与提出 图1是从百度地图中截取的山东省地图,试根据前面数值积分计 算方法,计算山东省面积。 图 1 二、实验目的 1、 学会运用matlab 解决一些简单的数学应用问题。 2、 学会运用matlab 建立数学模型。 3、 学会运用一些常见的数值积分计算方法结算实际问题,并 了解其实际意义,建立积分模型。 三、实验原理与数学模型 将积分区间 [a , b] n 等分,每个区间宽度均为h = (b - a) / n , h 称 为积分步长。记 a = x 0 < x 1 < … < x k … < x n = b , 在小区间上用小矩形面积近似小曲边梯形的面积,若分别取左端点和右端点的函数值为小矩形的高,则分别得到两个曲边梯形的面积的近似公式: Ln = h ∑f (x k )n=1k=0 , h = b?a ?

R n =?∑f (x k )n k=1 , h = b?a ? 如果将二者求平均值,则每个小区间上的小矩形变为小梯形,整 个区间上的值变为: Tn =?∑f (X k )n=1 k=1+?2[f (x 0)+f (x n )] 将山东省边界上的点反映在坐标化,运用梯形公式积分计算得山 东省的面积。 四、实验内容(要点) 1、将山东省的地图区域在matlab 中画出 。 2、在坐标系上运用积分方法将所求区域的面积求出。 3、通过比例尺将山东省的实际面积求出。 五、实验过程记录(含基本步骤、主要程序清单及异常情况记录等) 1、 在百度地图中标识出山东省的区域范围,标明对应的比例: 图 2 2、 取出所截取图片中山东的边界的坐标,即将边界坐标化: (1) 运用imread 函数和imshow 函数导入山东省的区域 图片。

川师汇编实验报告

实验编号: 2 四川师大《汇编语言》实验报告2016 年 9月 21 日 计算机科学学院 2015 级3班实验名称寻址方式实验 姓名:邓小卫学号:2015110309 指导老师:__吴贞东__ 实验成绩: 一.实验目的及要求 熟悉8086各种寻址方式 熟悉DEBUG各命令的使用方法 二.实验内容 3.2根据要求写出相应的汇编语言指令 1.把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器 2.用寄存器BX和SI的基执变址寻址方式把寄存器中的一个字节与AL寄存器的内容相 加,并把结果送到AL寄存器中。 3.用寄存器BX和位移量0B2H寄存器相对寻址方式把寄存器中的一个字和(CX)相加, 并把结果送回寄存器、 4.用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送 回该存储单元中。 5.把数0B5H与(AL)相加,并把结果送回AL中。 3.3 写出把首地址为BLOCK的字数组的第6个送到DX寄存器的指令。要求使用以下几种寻址方式: 1.寄存器间接寻址 2.寄存器相对寻址 3.基址变址寻址 3.4 现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H,(20101)=34H ,(20102)=56H,(20103)=78H,(21200)=2AH,(21203)=4CH,(21202)=B7H,(212030)=65H,试着说明下列各条指令执行完后AX寄存器的内容。 1.MOV AX,1200H 2.MOV AX,BX 3.MOV AX,[1200H] 4.MOV AX[BX] 5.MOV AX,1100[BX] 6.MOV AX,[BX][SI] 7.MOV AX,1100[BX][SI] 三.实验主要流程、基本操作或核心代码、算法片段(该部分如不够填写,请另加附页)3.2根据要求写出相应的汇编语言指令 1.把BX寄存器和DX寄存器的内容相加,结果存入DX MOV DX,5 MOV BX,5 ADD DX,BX

小学数学实验报告

竭诚为您提供优质文档/双击可除 小学数学实验报告 篇一:小学数学课题实验总结报告 《实施合作学习,发挥优势互补的研究》 课题实验总结 在上级主管部门和学校领导关心支持下我们开展了《实施合作学习,发挥优势互补》的课题研究。在课题组全体老师两年的不懈努力下,已基本完成本课题研究任务,并取得预期成果。 开展课题实验以来,我们坚持在实践中探索,在探索中实践,取得了初步的成效,主要体现在实验促进了三个方面的转变,一个方面的提高。 一、促进教师教学观念的转变。 参加课题实验后,实验组的老师们通过边实验边学习,不断总结与反思,提升了自己的科研水平,并树立了以“教学是为了促进学生发展”为最终目标的新型教育教学观念。课堂上,老师与学生建立了和谐融洽的师生关系,在精心创设的良好的教学氛围中鼓励学生独立思考、大胆质疑、敢于

探索、勇于创新。让学生在自主、合作、探究的学习过程中,激发学习热情,养成学习习惯,提高学习能力,从而促进了学生的发展。 二、促进学生学习方式的转变。 学生正在由被动学习逐步向主动学习转变,由老师教转变为我能学,由师生间的单向性活动转变为双向性互动、多边性互动,增大了课堂信息量,学生积极主动学习,小组合作、乐于探究,他们发扬团队精神,团队之间互相竞争、优势互补,并培养学生动手、动脑、动口的能力,培养创新意识。课前,学生能积极主动地预习信息窗内容,提出问题并尝试解决。课堂上,学生能够热烈地交流预习所得,积极主动地参与课堂讨论,参与面广,讨论热烈而且有序。课后,能自觉温习知识,深化学习,拓展延伸,并加以运用。绝大部分学生善于表达,敢于提出自己的不同见解,有较强的探究精神,能够提出问题积极思考,并能够多角度思维寻找解决问题的策略,并且培养了学生良好的合作学习的习惯。 学习方式的转变促进了学生全面发展,他们乐学,善学,学有所成。随着学生自主合作探究能力的不断提高,自主性合作性探究性已多个学习层面辐射,辐射到其它学科、班级管理、文体活动等方面。实验班班风好,学风浓,学生对所有科目的学习兴趣盎然、积极主动,全面发展。 三、促进课堂教学格局的转变。

汇编实验报告

实验一 DOS常用命令及8088/86指令使用 实验目的 通过实验掌握下列知识: 1、DOS命令: CD,DIR,DEL,RENAME,COPY。 2、8088指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG 3、DEBUG命令: A,D,E,F,H,R,T,U。 4、BCD码,ASCII码及用十六进制数表示二进制码的方法。 5、8088寄存器: AX,BX,CX,DX,F,IP。 实验类型:验证 内容及步骤 一、DOS常用命令练习 1、开机后,切换到命令提示符窗口下,出现提示符后键入命令DIR, 查看此目录下所有文件。 2、键入命令CD..进入上级目录,再查看此目录下所有文件。 3、将一张3.5寸软盘插到 A驱动器中,用DIR命令查看盘上文件。 4、用命令 COPY https://www.doczj.com/doc/e112612673.html, BUG 复制一个文件。 5、用命令 RENAME BUG BG 将BUG 文件改为BG。 6、用命令 DEL BG 将文件BG删除。 在操作时要注意提示信息,并按提示操作。 二、DEBUG 命令使用 1、键入 DEBUG 进入 DEBUG 控制状态,显示提示符 '- '。 2、用命令 F100 10F 'A' 将'A'的ASCII码填入内存。 3、用命令 D100 10F 观察内存中的十六进制码及屏幕右边的ASCII字符。 4、用命令 F110 11F 41 重复上二项实验,观察结果并比较。 5、用命令 E100 30 31 32 …… 3F将30H-3FH写入地址为100开始的内存单元中,再用D命令观察结果,看键入的十六进制数是什么字符的ASCII码? 6、用H命令检查下列各组十六进制数加减结果并和你的手算结果比较: (1)34H,22H (2)56H,78H (3)A5,79H (4)1284H,5678H (5)A758H,347FH 7、用R命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF和AF的内容。 8、用R命令将AX,BX内容改写为1050H及23A8H。 三、8088常用指令练习 1、传送指令 用A命令在内存100H处键入下列内容: -A 0100↙ ****:0100 MOV AX,1234↙ ****:0103 MOV BX,5678↙ ****:0106 XCHG AX,BX↙ ****:0108 MOV AH,35↙ ****:010A MOV AL,48↙

汇编实验报告

汇编语言程序设计 实验报告 学号:100511530 班级:电气信息类1005 姓名:陆淑琴 指导老师:李诗高

实验一、汇编语言上机的基本过程及环境 【实验目的】 (1)熟悉汇编语言的编辑、汇编、连接及调试的全过程,重点掌握使用DEBUG调试程序的方法。 (2)了解汇编语言的程序结构。 【实验内容】 (1)在数据段中定义两个数(数据自拟,包含有正数和负数),要求编写程序分别计算出这两个数的和、差、积、商,并用Debug的相关命令查询计算结果(包括对CF,OF,SF,ZF的影响)。 (2)首先对AX,BX,CX寄存器赋初值(数据自拟),再将AX寄存器的中间八位,BX的低四位和CX的高四位拼接成一个新的字,并把结果存入偏移地址为0000H的存储单元。其中BX的低四位作为结果字的高四位,CX的高四位作为结果字的低四位。并用Debug的相关命令查询内存单元的结果字。 源代码: DA TA SEGMENT val1 DW 1000h val2 DW 2000h maxv DW ? DA TA ENDS STACK SEGMENT STACK 'STACK'

DB 100H DUP(?) STACK ENDS CODE SEGMENT 'CODE' ASSUME CS:CODE, DS:DATA,SS:STACK .386 MAIN: MOV AX, DATA; MOV DS, AX PUSH val1 PUSH val2 CALL MAX ; POP maxv ;栈顶返回值出栈 MOV AX, 4c00H INT 21H MAX PROC PUSH BP ;执行该指令前堆栈情况 MOV BP, SP ;执行后堆栈情况 MOV AX, [BP+4] CMP AX, [BP+6] JA EXIT MOV AX, [BP+6] EXIT: MOV [BP+6], AX ;用栈顶返回值 POP BP RET 2 ;执行后堆栈情况 MAX ENDP CODE ENDS END MAIN 【实验步骤】 (1)用编辑软件(记事本、UltraEdit等)编辑一个扩展文件名为ASM的汇编语言源程序。 (2)用汇编程序MASM汇编上述的汇编语言源程序,形成目标代码文件。(扩展名为OBJ) (3)用连接程序LINK连接目标代码文件,形成可执行文件。(扩展名为EXE)(4)用DEBUG32调试可执行文件,观察执行结果,以验证其正确性。

数学实验报告

数学实验报告 实验序号:日期:2016 年

实验过程记录(含基本步骤、主要程序清单及异常情况记录等): 第一题 选择初速度v=0.6km/s,发射角a=45° X轴方向运动为x=cos a*v*t Y轴方向运动为y=sin a*v*t-1/2*g*t2 统一单位将0。6km/s化为600m/s 将数据代入利用函数做出运动轨迹,函数式为 8000 6000 4000 2000 5000100001500020000250003000035000 第二题 确定速度为320m/s,求最佳角度使得轨迹与X轴交点为(10000,0) 先假定发射角为π/4 作图 ParametricPlot[{Cos[Pi/4]*320*t,Sin[Pi/4]*320*t —4.9*t^2},{t,0,47},AspectRatioAutomatic] 2500 2000 1500 1000 500 200040006000800010000 进行调整角度调整为π/3.5作图 ParametricPlot[{Cos[Pi/3.5]*320*t,Sin[Pi/3.5]*320*t-4。9*t^2},{t,0,52},AspectRatio Automatic] 3000 2500 2000 1500 1000 500 200040006000800010000

继续进行不断地调整,发现当发射角度为π/3。7时,落点十分接近(10000,0)点作图如下 200040006000800010000 500 1000 1500 2000 2500 3000 因此可以确定最合适的发射角就在π/3。7附近,此时可以利用FindRoot函数找出准确值 首先需要对已知式做等量变换: ∵X=cos a*v*t ∴t=x/(cos a*v) 将上式代入y=sina*v*t-1/2*g*t2 中可得到 Y=tana*x—1/2*g*(x/(cosa*v))2 将y=0, x=10000,g=9.8, v=320代入利用FindRoot函数求解a 的范围在π/3.7附近的a的值: 得出 将这个值由弧度制化为360度制 a=53.4285° ∴最佳发射角为53.4285° 第三题 由第二题的320m/s起步进行研究 1.首先研究速度增大运用与第二题相似的研究方法,先大致计算符合要求的角度 (1)V=350m/s时,最佳发射角为π/6.8: 200040006000800010000 200 400 600 800 1000 1200 (2)V=400m/s时,最佳发射角为π/9。5: 0200040006000800010000 200 400 600 800

汇编实验报告

XI`AN TECHNOLOGICAL UNIVERSITY 实验报告

西安工业大学实验报告 一、实验目的 1、学习和掌握利用TD-TIPE连机软件调试汇编程序。 2、了解可编程并行接口芯片8255的内部结构、工作方式、初始化编程及应用。 二、实验原理 基本输入输出实验。编写程序,使8255的A口为输出,B口为输入,完成拨动开关到数据灯的数据传输。要求只要开关拨动,数据灯的显示就改变。 三、实验步骤、数据记录及处理 1.步骤: (1)硬件测试; (2)获得端口地址; (3)写出源程序, 2.源代码 (1)程序一 SSTACK SEGMENT STACK DW 32 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE

START: MOV DX, 0646H MOV AL, 90H OUT DX, AL AA1: MOV DX, 0640H IN AL, DX CALL DELAY MOV DX, 0642H OUT DX, AL JMP AA1 DELAY: PUSH CX MOV CX, 0F00H AA2: PUSH AX POP AX LOOP AA2 POP CX RET CODE ENDS END START (2)程序二 SSTACK SEGMENT STACK DW 32 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE START: MOV DX, 0646H MOV AL, 90H OUT DX, AL AA1: MOV DX, 0640H IN AL, DX

汇编实验报告一

汇编语言程序设计 实验报告 实验名称上机过程及顺序结构与分支结构程序设计实验班级 学号 姓名 日期 成绩 评阅人 软件学院

一、实验目的与意义 1、掌握汇编语言程序设计的基本方法和技能; 2、熟练掌握使用全屏幕编辑程序EDIT编辑汇编语言源程序; 3、熟练掌握宏汇编程序MASM的使用; 4、熟练掌握连接程序LINK的使用; 5、学习数据传送及算数和逻辑运算指令的用法; 6、掌握分支程序的结构; 7、掌握分支程序的设计、调试方法; 8、熟悉在PC机上建立、汇编、连接、调试和运行8086汇编语言程序; 二、实验环境 操作系统:Windows XP 调试软件:Edit Plus 3,MASM 5.0 上机地点:综合楼311 三、实验的预习内容 (1)熟悉上机练习过程和伪指令实验 实验预习内容:在实验前,充分熟悉Edit Plus 3的环境以及配置方法,熟悉各种debug 的常用指令:U、D、T、P、G、A、E及R命令的使用和含义,了解数据传送指令和算数以及逻辑运算指令的用法,在理论上了解数据的存储情况以及DD,DB,DW伪指令的用法和含义。 实验思路:按照书上的程序打入代码,进行汇编、连接和运行程序查看此时程序的运行情况,之后进入debug界面,分别使用U、D、T、P、G、A、E及R命令等常用指令,可查看此时的程序的执行状况以及此时寄存器的存储情况以及对于内存的使用情况。 程序一流程图:

程序二流程图: (2)顺序结构程序设计实验 实验预习内容:在实验前了解十进制,十六进制和ASCII 码之间的转换,了解如何从键盘中输入字符和回车换行,以及在屏幕中显示的汇编指令。 实验思路:从键盘中输入要计算的数字,将其进行平方运算,利用计算得到数字,了解十进制数字、十六进制数字与其对应ASCII 码的转换方法,将数字显示到屏幕上。 程序流程图: (3)分支程序设计实验 实验预习内容:在实验前了解分支结构的特点,明白跳转指令和程序转移指令的使用

实验报告总结(精选8篇)

《实验报告总结》 实验报告总结(一): 一个长学期的电路原理,让我学到了很多东西,从最开始的什么都不懂,到此刻的略懂一二。 在学习知识上面,开始的时候完全是老师讲什么就做什么,感觉速度还是比较快的,跟理论也没什么差距。但是之后就觉得越来越麻烦了。从最开始的误差分析,实验报告写了很多,但是真正掌握的确不多,到最后的回转器,负阻,感觉都是理论没有很好的跟上实践,很多状况下是在实验出现象以后在去想理论。在实验这门课中给我最大的感受就是,必须要先弄清楚原理,在做实验,这样又快又好。 在养成习惯方面,最开始的时候我做实验都是没有什么条理,想到哪里就做到哪里。比如说测量三相电,有很多种状况,有中线,无中线,三角形接线法还是Y形接线法,在这个实验中,如果选取恰当的顺序就能够减少很多接线,做实验就应要有良好的习惯,就应在做实验之前想好这个实验要求什么,有几个步骤,就应怎样安排才最合理,其实这也映射到做事情,不管做什么事情,就应都要想想目的和过程,这样才能高效的完成。电原实验开始的几周上课时间不是很固定,实验报告也累计了很多,第一次感觉有那么多实验报告要写,在交实验报告的前一天很多同学都通宵了的,这说明我们都没有合理的安排好自己的时间,我就应从这件事情中吸取教训,合理安排自己的时间,完成就应完成的学习任务。这学期做的一些实验都需要严谨的态度。在负阻的实验中,我和同组的同学连了两三次才把负阻链接好,又浪费时间,又没有效果,在这个实验中,有很多线,很容易插错,所以要个性仔细。 在最后的综合实验中,我更是受益匪浅。完整的做出了一个红外测量角度的仪器,虽然不是个性准确。我和我组员分工合作,各自完成自己的模块。我负责的是单片机,和数码显示电路。这两块都是比较简单的,但是数码显示个性需要细致,由于我自己是一个粗心的人,所以数码管我检查了很多遍,做了很多无用功。 总结:电路原理实验最后给我留下的是:严谨的学习态度。做什么事情都要认真,争取一次性做好,人生没有太多时间去浪费。 实验报告总结(二): 在分子生物学实验室为期两个月的实习使我受益匪浅,我不仅仅学习到了专业知识,更重要的是收获了经验与体会,这些使我一生受用不尽,记下来与大家共勉: 1.手脚勤快,热心帮忙他人。初来匝道,不管是不是自己的份内之事,都就应用心去完成,也许自己累点,但你会收获很多,无论是知识与经验还是别人的称赞与认可。 2.多学多问,学会他人技能。学问学问,无问不成学。知识和经验的收获能够说与勤学好问是成正比的,要记住知识总是垂青那些善于提问的人。 3.善于思考,真正消化知识。有知到识,永远不是那么简单的事,当你真正学会去思考时,他人的知识才能变成你自己的东西。 4.前人铺路,后人修路。墨守陈规永远不会有新的建树,前人的道路固然重要,但是学会另辟蹊径更为重要。

汇编实验报告1

汇编语言上机实验报告 时间: 地点: 实验人员: 实验二 一、题目 1、《80X86汇编语言程序设计》教材中 P95的 3.7 题。 要求:(1)将该题改成一完整的程序(可以省略实验报告中的程序框图)。 (2)请事先指出依次执行每条程序指令后(AX)的内容。 (3)请事先指出执行ADD、SUB、SAL、RCL指令后,CF、ZF的值。 (4)记录上机执行后与(2)、(3) 中对应的内容。 说明:MOV 指令不影响标志位,DEC指令不影响CF标志位,NOT 指令不影响标志位。 2、《80X86汇编语言程序设计》教材中 P94的 3.3 题。 要求:(1)将该题改成一完整的程序,其中数据段的定义为习题3.1中的数据段(可以省略实验报告中的程序框图)。 (2)请事先画出数据段中数据的存储形式。 (3)请事先指出依次执行每条程序指令后相应寄存器中的内容。 (4)请事先给出各调指令在汇编后的形式。 (5)比较上机执行后,看到的各项内容是否与(2)、(3) ,(4)内容一致。不一致的应分析错误原因。 说明:MOV BX, OFFSET STR1+3 对应的汇编后的指令为:MOV BX, 3 MOV BX, STR1 对应的汇编后的指令为:MOV BX, [0000] (上条指令等价于MOV BX, DS:[0000] ) 3、《80X86汇编语言程序设计》教材中 P96的 3.11 题。 要求:(1)请事先指出程序运行结束后,显示器显示的内容。 (2)若将NUM的定义改成如下形式: NUM DB 35 显示的结果是什么? (3)若将NUM的定义改成如下形式: NUM DB 59 显示的结果是什么? (4)指出程序运行后看到的结果,若不一致,分析产生错误的原因。 4. 从键盘输入两串字符分别存入BUF1和BUF2区,比较两串内容是否相等, 相等显示“MATCH !”, 不相等显示“NO MATCH !”。 要求:(1) 使用10号功能调用输入字符串; (2) 使用9号功能调用输出提示信息; 提示:先比较长度是否相等。 5 选做题 输入一个无符号的数字串,然后以16进制形式显示出串的值。 例如: INPUT A NUMBER : 59

[vip专享]2013春数学实验基础 实验报告(1)常微分方程

1. 分别用Euler 法和ode45解下列常微分方程并与解析解比较: (1) 30,1)0(,<<=+='x y y x y 编写Euler 法的matlab 函数,命名为euler.m function [t,y]=euler(odefun,tspan,y0,h)t=tspan(1):h:tspan(2);y(1)=y0; for i=1:length(t)-1 y(i+1)=y(i)+h*feval(odefun,t(i),y(i));end t=t';y=y'; 下面比较三者的差别:% ode45 odefun=inline('x+y','x','y');[x1,y1]=ode45(odefun,[0,3],1);plot(x1,y1,'ko');pause hold on ;% Euler·¨ [x2,y2]=euler(odefun,[0,3],1,0.05);plot(x2,y2,'r+');pause hold on ; % 解析解 y0=dsolve('Dy=t+y','y(0)=1');ezplot(y0,[0,3]);pause hold off ; legend('ode45','euler 法','解析解');

Euler 法只有一阶精度,所以实际应用效率比较差,而ode45的效果比较好,很接近真实值。 (2) 2 0.01()2sin(),(0)0,(0)1,05 y y y t y y t ''''-+===<<先写M 文件ex1_2fun.m function f=ex1_2fun(t,y)f(1)=y(2); f(2)=0.01*y(2).^2-2*y(1)+sin(t);f=f(:);% ode45 [t1,y1]=ode45(@ex1_2fun,[0,5],[0;1]);plot(t1,y1(:,1),'ko'); % 解析解 s=dsolve('D2y-0.01*(Dy)^2+2*y=sin(t)','y(0)=0','Dy(0)=1','t') s = [ empty sym ] %由此可知该微分方程无解析解2. 求一通过原点的曲线,它在处的切线斜率等于若上限增为1.58,1.60会(,)x y 2 2,0 1.57.x y x +<

汇编实验一实验报告

汇编语言程序设计实验报告 课程名称汇编语言程序设计 班级 姓名 学号 指导教师

汇编语言程序设计 实验一DEBUG 程序使用技巧 1.寄存器和内存 开始Debug 程序。输入“Q ” 退出程序。再次启动Debug。 输入“r ”来显示CPU的当前状态和寄存器中的当前内容。 输入“r AX ”和“1234”,AX 寄存器中的内容变为1234。 输入“r DS ”和“2000”,DS 寄存器中的内容变为2000。 输入“d DS:1000 ”来显示数据段中80H 字节数据,把数据抄在这里: 输入“f DS:1000 1100 77 ”再显示一次这80H 字节。判断这条指令的作用是什么? 答:从DS:1000地址七,将1100H字节的内容赋值为77H 再输入“d 2000:1000 ”来显示数据段中80H 字节数据。观察与前面的数据有无不同。 输入“d 1900:0100 ”和“d 1ff0:0100 ”来显示两个存储段中的内容。比较其中2000:0000 段中的数据。相同段落中的数据相同么?根据你的观察,得出结论,是否程序员可以用不同的段起始地址和偏移量组合,把不容内容存入相同的内存段中。 答:相同段落中的数据相同, 程序员可以用不同的段起始地址和偏移量组合,把不容内容存入相同的内存段中。

2.输入机器码,使用单步和断点 退出Debug,再重新启动Debug。 输入“r ”观察CPU 的状态,下一条指令是什么? 答:下一条指令是ADD [BX+SI],AL 使用两种方式输入一段程序,第一种方式:直接输入机器码。 输入“u ”来显示程序段中的指令序列。然后输入“d CS:100 ” 来显示代码段中的数据。观察显示内容。 “u CS:100 106 ”做反汇编,就是显示出汇编语句。将这几句汇编语句记录下来: 使用输入“r ”观察CPU 的状态,使用“t ”来跟踪程序,直至最后一条指令执行完毕。注意,跟踪程序前,要让IP 寄存器中的值是100H。一直监视AX 和IP 寄存器的内容变化,尤其是标志位的变化。 第二种方式,是输入汇编语句。重启Debug 程序。 先输入“a CS:100 ”,然后输入: MOV AX, FF00 ADD AX,01F0 MOV BX,AX NEG BX ADD AX,BX

数学实验综合实验报告材料

一、实验目的: 1、初步认识迭代,体会迭代思想的重要性。 2、通过在mathematica环境下编写程序,利用迭代的方法求解方程的根、线性方程组的解、非线性方程组的解。 3、了解分形的的基本特性及利用mathematica编程生成分形图形的基本方法,在欣赏由mathematica生成的美丽的分形图案的同时对分形几何这门学科有一个直观的了解。从哲理的高度理解这门学科诞生的必然性,激发读者探寻科学真理的兴趣。 4、从一个简单的二次函数的迭代出发,利用mathematica认识混沌现象及其 所 蕴涵的规律。 5、.进一步熟悉Mathematic软件的使用,复习总结Mathematic在数学作图中的应用,为便于研究数学图像问题提供方便,使我们从一个新的视角去理解数学问题以及问题的实际意义。 6、在学习和运用迭代法求解过程中,体会各种迭代方法在解决问题的收敛速度上的异同点。 二、实验的环境: 学校机房,mathematica4环境 三、实验的基本理论和方法: 1、迭代(一)—方程求解 函数的迭代法思想: 给定实数域上光滑的实值函数)(x f以及初值 x定义数列

1()n n x f x +=, ,3,2,1,0=n , (1) n x , ,3,2,1,0=n ,称为)(x f 的一个迭代序列。 (1)方程求根 给定迭代函数)(x f 以及初值0x 利用(1)迭代得到数列n x , ,3,2,1,0=n .如果数列收敛到某个*x ,则有 )(**x f x =. (2) 即*x 是方程)(x f x =的解。由此启发我们用如下的方法求方程0)(=x g 的近似解。 将方程0)(=x g 改写为等价的方程 )(x f x =, (3) 然后选取一初值利用(1)做迭代。迭代数列n x 收敛的极限就是方程0)(=x g 的解。 为了使得迭代序列收敛并尽快收敛到方程0)(=x g 的某一解的条件是迭代函数)(x f 在解的附近的导数将的绝对值尽量小,因此迭代方程修订成 x x f x h x )1()()(λλ-+== (4) 选取λ使得|)(|x h '在解的附近尽量小. 为此, 我们可以令 ,01)()(=-+'='λλx f x h 得 ) (11 x f '-= λ. 于是 1 )()()(-'-- =x f x x f x x h .

相关主题
文本预览
相关文档 最新文档