实验2求最大值和最小值

合集下载

C++分治法求最值

C++分治法求最值
实验内容:用分治法求最大最小值
题目来源:□教材页题□教师补充□自选题目
主要功能描述:
(1)对一组数进行比较大小,求出其中的最大值和最小值,利用分治法的原理来实现。
(2)先对数组中元素个数进行判断,只有一个元素时,最大值max和最小值min都是它本身;当有两个元素时,比较两个数的大小,大者为最大值max,小者为最小值min;当数组中元素多于两个时,里用分治法原理,递归调用MaxMin函数,求出划分出的每组中的最值与另外一组最值比较,最后的得出最大值max和最小值min。
{
return maxSize;
}
void InputArray()//输入数组中元素
{
int i;
for(i=0;i<maxSize;i++)
{
cout<<"请输入"<<(i+1)<<"个元素:";
cin>>array[i];
}
}
void dispayAΒιβλιοθήκη ray()//输出数组中元素{
int i;
int maxSize;//定义数组长度
public:
SortableList(){};
void SetMaxSize()
{
cout<<"请输入数组中元素个数:";
cin>>maxSize;//输入数组长度
array=new T[maxSize];//定义存储空间
}
int GetMaxSize()//返回数组长度
if(max<max1)max=max1;//两表中最大元的大者为原表最大元

综合实验(2)任务书

综合实验(2)任务书

计算机基础综合实验(2)任务书一、综合实验目的C语言程序设计是本科工科类各专业的重要基础课,主要学习程序设计的基本概念和方法,通过本门课程学习,使学生掌握C语言的基本原理,熟练掌握程序设计的基础知识、基本概念;掌握程序设计的思想和编程技巧。

综合实验是在学生已经具备了使用C语言编写简单的应用程序的能力,为使学生对C语言有更全面的理解,进一步提高运用C语言编程解决实际问题的能力,通过提出算法、指定输入输出来设计一个解决方案。

并为参加计算机等级考试做准备。

二、综合实验的基本内容和要求参加综合实验的学生,应当认真完成综合实验的全部内容。

最终提交综合实验成果来证明其独立完成各种实际任务的能力。

从而反映出理解和运用本课程知识的水平和能力。

具体如下:1、代码编写规范,形成良好的编程习惯;2、程序须有一定的健壮性和必要的提示信息,考虑问题的多种可能和边界数据。

3、提交综合实验报告电子稿、装订的打印稿。

综合实验报告内容包括以下几个方面:●程序的总体设计和算法分析。

●程序流程图、函数说明●源程序代码清单●测试数据和测试过程记录●遇到的问题及解决方法分析●综合实验小结4. 程序运行方式构建一个简易菜单,形如:用户通过输入数值选择所需运行的子程序,当一个子程序运行结束后回到菜单界面,直至用户输入0后退出程序。

三、综合实验的进度安排熟悉指针、结构体、文件内容1天整体设计和详细设计、编代码1天编代码、调试和测试1天综合实验报告书写1天演示软件1天四、综合实验的考核评价是检测学生理解问题和解决问题能力的一个重要手段,教师将根据学生提交的综合实验报告,严格检查以下各项任务完成情况:1、设计文档中要求项目是否齐全。

2、程序中运行时的屏幕提示信息是否准确:如果在程序执行期间有足够的指导信息显示在屏幕上显示,这些用户文档可以是很简要的,也许只限于解释如何装入并运行程序。

3、问题和任务的陈述(描述问题,而且问题是合理原始的、应当包括输入、输出及其预期范围)是否正确。

例说求函数的最大值和最小值的方法

例说求函数的最大值和最小值的方法

例说求函数的最大值和最小值的方法例1.设x 是正实数,求函数xx x y 32++=的最小值。

解:先估计y 的下界。

55)1(3)1(5)21(3)12(222≥+-+-=+-+++-=xx x x x x x y 又当x =1时,y =5,所以y 的最小值为5。

说明 本题是利用“配方法”先求出y 的下界,然后再“举例”说明这个下界是可以限到的。

“举例”是必不可少的,否则就不一定对了。

例如,本题我们也可以这样估计:77)1(3)1(7)21(3)12(222-≥-++-=-++++-=xx x x x x x y 但y 是取不到-7的。

即-7不能作为y 的最小值。

例2. 求函数1223222++--=x x x x y 的最大值和最小值。

解 去分母、整理得:(2y -1)x 2+2(y +1)x +(y +3)=0. 当21≠y 时,这是一个关于x 的二次方程,因为x 、y 均为实数,所以 ∆=[2(y +1)]2-4(2y -1)(y +3)≥0, y 2+3y --4≤0,所以 -4≤y ≤1 又当31-=x 时,y =-4;x =-2时,y =1.所以y min =-4,y max =1. 说明 本题求是最值的方法叫做判别式法。

例3.求函数152++-=x x y ,x ∈[0,1]的最大值解:设]2,1[1∈=+t t x ,则x =t 2-1y = -2(t 2-1)+5t = -2t 2+5t +1原函数当t =169,45=x 即时取最大值833 例4求函数223,5212≤≤+--=x x x x y 的最小值和最大值 解:令x -1=t (121≤≤t ) 则t t t t y 4142+=+=y min =51,172max =y 例5.已知实数x ,y 满足1≤x 2+y 2≤4,求f (x )=x 2+xy +y 2的最小值和最大值 解:∵)(2122y x xy +≤ ∴6)(23),(2222≤+≤++=y x xy y x y x f 又当2==y x 时f (x ,y )=6,故f (x ,y )max =6 又因为)(2122y x xy +-≥ ∴21)(21),(2222≥+≥++=y x xy y x y x f 又当22,22-==y x 时f (x ,y )=21,故f (x ,y )min =21例6.求函数2224)1(5+++=x x x y 的最大值和最小值 解:原函数即111)1(5222++-+=x x y 令112+=x t (0<t ≤1) 则y =5t 2-t +1 ∴当x =±3时,函数有最小值2019,当x =0时,函数取最大值5 例7.求函数|]211[1|)(+-=x x x f 的最大值 解:设α=+=+}211{,]211[x n x ,则 f (x )=|21|1|-=-αn x 由于 0≤α<1,故f (x )≤21,又当x =122-k (k 为整数)时f (x )= 21, 故f (x )max =21 例8.求函数113632424+-++--=x x x x x y 的最大值 解:原函数即222222)1()0()2()3()(-+---+-=x x x x x f 在直角坐标系中,设点P(x ,x 2),A(3,2),B(0,1),则f (x )=|PA|-|PB|≤|AB|=10 又当6137+-=x 时,f (x )= 10 故f max (x ) = 10例9.设a 是实数,求二次函数y =x 2-4ax +5a 2-3a 的最小值m ,当0≤a 2-4a -2≤10中变动时,求m 的最大值解:y =x 2-4ax +5a 2-3a =(x -2a )2+a 2-3a由0≤a 2-4a -2≤10解得:622-≤≤-a 或62+≤a ≤6 故当a =6时,m 取最大值18例10.已知函数f (x )=log 2(x +1),并且当点(x ,y )在y =f (x )的图象上运动时,点)2,3(y x 在y =g (x )的图象上运动,求函数p (x )=g (x )-f (x )的最大值。

C语言实验报告数组

C语言实验报告数组

实验七数组1.实验目的(1)熟练掌握一维数组、二维数组的定义、初始化和输入/输出方法;(2)熟练掌握字符数组和字符串函数的使用;(3)掌握与数组有关的常用算法如查找、排序等..2.实验指导(1)对任意一个一维型数组;从中找出数组元素的最大值和最小值并输出..要求:①数组有十个元素;②使用scanf函数实现数组元素的输入前给出必要的提示;③输出时;首先输出数组的十个元素;然后输出其最大值和最小值..分析指导:①算法分析:首先定义一个数组;通过循环从键盘输入十个数组元素的值;再通过另一个循环判断数组元素的最大只和最小值;②根据分析情况编写程序:include<stdio.h>mainint a10;i;max;min;printf"please input ten integers:";fori=0;i<=9;i++{scanf"%d";&ai;}max=a0;min=a0;fori=1;i<=9;i++{ifai>maxmax=ai;ifai<minmin=ai;}fori=0;i<=9;i++{printf"a%d=%d\n";i;ai;}printf"The maximum value is %d;and the minimum value is %d\n";max;min;运行程序;输入十个整数;如:21 37 6 17 9 12 89 76 35 59运行结果如下:(2)编写函数cmpStrchar s1;char s2比较两个字符串s1和 s2的大小..如果s1>s2;返回一个正数;s1=s2;返回0;s1<s2;返回一个负数;在主函数中调用该函数完成字符串的比较操作;并输出返回的值..要求:①不允许使用strcmp函数;②用gets函数在主函数中输入两个字符串;③实现触摸屏受托人函数;返回的正数或负数的绝对值应该是进行比较的两个字符传中相应字符的ASCII码的差值..分析指导:①算法分析:两个字符串从第一个字符开始一一对应进行比较;直到不相等的那个字符;从而求得它们的ASCII码的差值..比如;‘A’与‘C’相比;由于‘A’<‘C’;应输出负数;由于‘A’与‘C’的ASCII码的差值为2;因此;应输出“-2”..同理;“And”和“Aid”比较;根据第二个字符比较结果;‘n’比‘I’大5;因此应输出‘5’;②根据分析情况编写程序:include<stdio.h>int cmpstrchar s1;char s2{int i;diff;i=0;whiles1i==s2i&&s1i='\0'i++;ifs1i=='\0'&&s2i=='\0'diff=0;elsediff=s1i-s2i;return diff;}void main{int z;char s1100;s2100;printf"input the first string:";//输入字符串1gets s1;printf"input the second string:";//输入字符串2getss2;z=cmpstrs1;s2;//输出比较结果printf"the difference between two strings is %d\n";z;}查看运行结果如下:重新输入两个字符串meet;mood运行结果如下:(3)再给定的字符串中查找指定的字符..要求:①字符串采用直接初始化的方式处理;②通过scanf函数读入一个任意字符;③在字符串中查找该字符;如果存在该字符;输出该字符在字符串中的一次出现的位置;如果再给定的字符串中不存在该字符;则给出相应的说明信息..include<stdio.h>void main{int i;char ch;char s=" program";printf" 输入一个英文字母: ";scanf"%c";&ch;for i=0;si='\0';i++{if si==chbreak;}if i<7printf"s%d=%c\n";i;ch;elseprintf"No founded\n";}输入一个英文字母O运行程序如下:再次输入一个英文字母w运行程序如下:(4)首先输入一个大于二且小于十的整数n;然后定义一个二维整型数组nn;初始化该数组;讲述组中最大元素所在的行和最小元素所在的行对调..要求:①nn数组元素的值由scanf函数从键盘输入假定最大值最小值不在同一行上;然后输出该数组;②查找最大值最小值所在的行;将数组中最大元素所在的行和最小元素所在的行对调;并输出对调后的数组;③为直观起见;数组按n行n列的方式输出;④修改程序;对最大值与最小值可能出现在一行种的情况进行处理.. include<stdio.h>main{long matrix99;min;max;temp;int i;j;n;nMax=0;nMin=0;printf"\nplease inpute n of matrix:\n";scanf"%d";&n;printf"\nplease inpute elements of matrix%d%d:\n";n;n; fori=0;i<n;i++forj=0;j<n;j++scanf"%ld";&matrixij;min=max=matrix00;fori=0;i<n;i++forj=0;j<n;j++{ifmatrixij>max{max=matrixij;nMax=i;}else ifmatrixij<min{min=matrixij;nMin=j;}}forj=0;j<n;j++{temp=matrixnMaxj;matrixnMaxj=matrixnMinj;matrixnMinj=temp;}printf"\nResult matrix:\n";fori=0;i<n;i++{forj=0;j<n;j++printf"%5ld";matrixij;printf"\n";}}输入一个数4;输入一个44的数组1 3 6 72 4 5 81 3 5 72 6 9 7运行程序如下:再次输入一个数字3;输入一个33的数组1 2 32 4 537 8运行程序如下:3 实验结论通过本次实验熟练的掌握一维数组、二维数组的定义、初始化和输入/输出方法以及字符数组和字符串函数的使用;还有就是掌握与数组有关的常用算法。

c++程序编写求三个数的最大值和最小值,c++函数应用

c++程序编写求三个数的最大值和最小值,c++函数应用

实验六函数及其使用1 学时4学时2 实验目的与要求学习函数的编写。

理解数学中的函数、自变量、函数在某一点的取值与 C++中的自定义函数、函数参数、函数调用及其返回值之间的联系,掌握 C++对数学函数功能的实现方式。

3 实验环境WINDOWS XP 或WINDOWS SERVER 2000Microsoft Visual C++ 6.04 准备工作安装好Microsoft Visual C++6.05 实验内容(一).输入三个数,编写一个程序求这三个数的最大值和最小值。

要求把求最大值和最小值编写成函数。

#include <iostream.h>double max(double a,double b,double c);double min(double a,double b,double c);int main (){int a,b,c;cout <<"请输入三个数: " <<endl;cin >>a;cin >>b;cin >>c;cout <<"最大数的为: " <<max(a,b,c) <<endl;cout <<"最小的数为: " <<min(a,b,c) <<endl;return 0;}double max(double a,double b,double c){if (a>b && a>c) return a;if (b>a && b>c) return b;return c;}double min(double a,double b,double c){if (a<b && a<c) return a;if (b<a && b<c) return b;return c;}(二)编制如下自定义函数,实现指定功能。

实验1 分治法找到数组元素中的最大值与最小值

实验1 分治法找到数组元素中的最大值与最小值

算法分析与设计实验报告第 1 次实验附录:完整代码#include <time.h>#include <iostream>#include <iomanip>#include <stdlib.h>using namespace std;void min_max(int a[],int i,int j,int &min,int &max) {int mid,max1,max2,min1,min2;if(i==j){max=a[i];min=a[i];return;}if(j==i+1){if(a[i]>a[j]){min=a[j];max=a[i];}else{min=a[i];max=a[j];}}else{mid=(i+j)/2;min_max(a,i,mid,min1,max1);min_max(a,mid+1,j,min2,max2);if(min1>min2)min=min2;elsemin=min1;if(max1>max2)max=max1;elsemax=max2;}}int main (){int m,a[100],min,max;while(1){int f;cout<<"随机数组的规模:";cin>>m;cout<<"随机数的范围:";cin>>f;//计时开始clock_t start,end,over;start=clock();end=clock();over=end-start;start=clock();srand((unsigned)time(NULL));for(int i=1;i<=m;i++){a[i]=(rand()%(f)+0);cout<<a[i]<<' ';}cout<<endl;min_max(a,1,m,min,max);cout<<"最小值:"<<min<<endl;cout<<"最大值:"<<max<<endl;end=clock();printf("The time is %6.3f",(double)(end-start-over)/CLK_TCK);cout<<endl;cout<<endl;}}。

实验二、晶体检波器校准与驻波比测量实验报告

实验二、晶体检波器校准与驻波比测量实验报告

实验二、晶体检波器校准与驻波比测量班级:核32 姓名:杨新宇学号:2013011806 同组成员:杨宗谕第一部分:晶体检波器校准一、实验目的(1)掌握测量线的使用方法.(2)掌握晶体检波器定标和求检波率的方法二、实验原理1、驻波测量线的调整驻波测量线是微波系统的一种常用测量仪器,它在微波测量中用途很广,如测驻波、阻抗、相位和波导波长等。

测量线通常由一段开槽传输线、探头(耦合探针、探针的调谐腔体和输出指示)、传动装置三部分组成。

由于耦合探针深入传输线而引入不均匀性,其作用相当于在线上并联一个导纳,从而影响系统的工作状态。

为了减小影响,测量前必须仔细调整测量线。

实验中测量线的调整一般包括选择合适的探针伸度、调谐探头和测定晶体检波特性。

探针电路的调谐方法:先使探针的插入深度适当,通常取1.0~1.5mm。

然后测量线终端接匹配负载,移动探针至测量线中间位置,调节探头活塞,直到输出指示输出值为最大。

在之后的测量试验中,请不要再改变探针及探头活塞位置。

2、导波波长测量测量波长常见的方法有谐振法和驻波分布法。

前者用谐振式频率计测量,后者用驻波测量线测量,当测量线终端短路时,传输线上形成纯驻波,移动测量线探针,测出两个相邻驻波最小点之间的距离即可求得导波波长λg。

此外,也可将精密可调短路器接在测量线的输出端,置测量线探针于某一波节点位置不变,移动可调短路器活塞,则探针检测值随之由最小逐渐增至最大,然后又减至最小值,即为相邻的又一个驻波节点,短路器移动的活塞距离等于半个导波波长。

在传输横电磁波的同轴系统中,按上述方法测出的导波波长就是电磁波在自由空间传播的工作波长λ0,即λg=λ0。

而在波导系统中测量线测出的是导波波长λg,导波波长和工作波长λ0之间的关系式为:λg=λ0√1−(λ0λc )2=λ0√1−(λ02a)2(2-1)其中λ0=C/f0,a=22.86mm。

为了提高测量精度,通常采用交叉读数法测量导波波长如图2.1 所示。

虚拟仪器技术实验指导书(紫金2012)

虚拟仪器技术实验指导书(紫金2012)

实验2 LabVIEW图形、数组、簇编程实验(设计型)1.实验目的(1)学习如何创建数组和簇,掌握它们的区别以及相应的操作。

(2)学习并掌握波形图和波形图表的使用,了解它们的区别。

2.实验设备安装有LabVIEW8.2的计算机3.实验内容(1)利用For循环建立一个一维数组并给出数组中的元素个数;建立一个二维数组给出数组中元素个数,并求出二维数组中元素的最大值、最小值。

(2)产生两个一维数组,分别组成一个二维数组和一个簇,然后用波形图显示二维数组,用XY图显示簇。

(3)设计一个VI来测量温度,每隔0.25秒测一次,共测定10秒,温度范围为0~100度。

在数据采集过程中,VI将在波形图表上实时地显示测量结果。

在采集过程结束后,在波形图上画出数据波形曲线,并算出温度的最大值,最小值和平均值。

4.实验原理(1)数组数组是一些具有相同类型的元素组成的集合。

数组包含两方面的内容:元素和维数。

数组中的元素可以是数字、布尔、字符、路径、波形和簇等数据类型。

(2)簇簇相当于一个容器,容器中的元素可以是各种不同的数据类型。

也就是说,可以在一个簇中放置控制选板上的各种控件,如数字控件、布尔控件、数组控件等,但是不能将输入控件和输出控件同时放入其中。

(3)图形子选板LabVIEW8.2的图形子选板提供了完成各种图形显示功能的控件。

按照处理测量数据的方式和显示过程的不同,图形显示控件主要分成两大类,一类为图形,另一类称为图表。

这两类控件都是用于图形化显示采集或生成的数据。

图形和图表的区别在于各自不同的数据显示和更新方式。

含有图形的VI通常先将数据采集到数组中,再将数据绘制1到图形中。

该过程类似于电子表格,即先存储数据再生成数据的曲线。

数据绘制到图形上时,图形不显示之前绘制的数据而只显示当前的新数据。

图形一般用于连续采集数据的快速过程。

与图形相反,图表将新的数据点追加到已显示的数据点上以形成历史记录。

在图表中,可结合先前采集到的数据查看当前读数或测量值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验2 求最大值和最小值一、实验目的1、学习子程序的定义和调用方法。

2、掌握子程序设计、调试。

二、实验内容对内存中给定的几个无符号字节数,求其最大值和最小值并在数码管上显示。

三、实验程序框图四、实验步骤联机模式:(1)在内存4000H~4007H中写入任意八个字节的数,按下MON键,返回P状态。

(2)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开598K8ASM文件夹,点击S7.ASM文件,单击“确定”即可装入源文件,再单击工具栏中编译装载,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。

(3)数码管显示为:“XX——XX”,最左两位为最大值,最右两位为最小值。

脱机模式:1、在P.态下,按SCAL键,然后在内存4000H~4007H中写入任意八个字节的数,按下MON键,返回P状态。

2、在P.态下,输入2E70,按EXEC键。

3、数码管显示为:“XX——XX”,最左两位为最大值,最右两位为最小值。

五、实验程序清单CODE SEGMENT ;S7.ASM,LOOK FOR MAX & MIN ASSUME CS:CODEORG 2E70H ;INPUT DATA4000H--4007HSTART: JMP START0PA EQU 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口BUF DB ?,?,?,?,?,?data1:db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1hdb 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH START0: MOV SI,4000HMOV CX,0008HCALL MAXMINCALL BUF1CON1: CALL DISPJMP CON1MAXMIN: JCXZ EXITPUSH SIPUSH CXPUSH BXMOV BH,[SI]MOV BL,BHCON2: LODSBCMP AL,BHJNA X1MOV BH,ALJMP X2X1: CMP AL,BLJNB X2MOV BL,ALX2: LOOP CON2MOV AX,BXPOP BXPOP CXPOP SIEXIT: RETDISP: MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALMOV CL,0DFH ;显示子程序,5msMOV BX,OFFSET BUFDIS1: MOV AL,[BX]MOV AH,00HPUSH BXMOV BX,OFFSET DATA1ADD BX,AXMOV AL,[BX]POP BXMOV DX,PBOUT DX,ALMOV AL,CLMOV DX,PAOUT DX,ALPUSH CXDIS2: MOV CX,00A0HLOOP $POP CXCMP CL,0FEH ;01HJZ LX1MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALINC BXROR CL,1 ;SHR CL,1JMP DIS1LX1: MOV AL,0FFHMOV DX,PBOUT DX,ALRETBUF1: MOV BH,AHCALL ZHMOV BUF+5,ALMOV BUF+4,AHMOV AL,BHCALL ZHMOV BUF,AHMOV BUF+1,ALMOV BUF+2,17HMOV BUF+3,17HRET;-------------------------------------------------------- ZH: MOV BL,ALMOV CL,4ROL AL,CLAND AL,0FHMOV AH,ALMOV AL,BLAND AL,0FHRET;-------------------------------------------------------CODE ENDSEND START六、思考题1 将数码管显示改为“左边显示最小值,右边显示最大值”,试编程实现。

CODE SEGMENT ;S7.ASM,LOOK FOR MAX & MINASSUME CS:CODEORG 2E70H ;INPUT DATA 4000H--4007HSTART: JMP START0PA EQU 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口BUF DB ?,?,?,?,?,?data1:dbW0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1hdb 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH START0: MOV SI,4000HMOV CX,0008HCALL MAXMINCALL BUF1 CON1: CALL DISPJMP CON1 MAXMIN: JCXZ EXITPUSH SIPUSH CXPUSH BXMOV BH,[SI]MOV BL,BH CON2: LODSBCMP AL,BHJNA X1MOV BH,ALJMP X2X1: CMP AL,BLJNB X2MOV BL,ALX2: LOOP CON2MOV AX,BXPOP BXPOP SIEXIT: RETDISP: MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALMOV CL,0DFH ;显示子程序,5msMOV BX,OFFSET BUFDIS1: MOV AL,[BX]MOV AH,00HPUSH BXMOV BX,OFFSET DATA1ADD BX,AXMOV AL,[BX]POP BXMOV DX,PBOUT DX,ALMOV AL,CLMOV DX,PAOUT DX,ALPUSH CXDIS2: MOV CX,00A0HPOP CXCMP CL,0FEH ;01HJZ LX1MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALINC BXROR CL,1 ;SHR CL,1JMP DIS1LX1: MOV AL,0FFHMOV DX,PBOUT DX,ALRETBUF1: MOV BH,AHCALL ZHMOV BUF,AHMOV BUF+1,ALMOV BUF+2,17HMOV BUF+3,17HMOV AL,BHCALL ZHMOV BUF+5,ALMOV BUF+4,AHRET;--------------------------------------------------------ZH: MOV BL,ALMOV CL,4ROL AL,CLAND AL,0FHMOV AH,ALMOV AL,BLAND AL,0FHRET;-------------------------------------------------------CODE ENDSEND START2试用JBE/JAE(或JC/JNC)指令改写“求最大最小值子程序;CODE SEGMENT ;S7.ASM,LOOK FOR MAX & MINASSUME CS:CODEORG 2E70H ;INPUT DATA4000H--4007HSTART: JMP START0PA EQU 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口BUF DB ?,?,?,?,?,?data1:dbW0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1hdb 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH START0: MOV SI,4000HMOV CX,0008HCALL MAXMINCALL BUF1CON1: CALL DISPJMP CON1MAXMIN: JCXZ EXITPUSH SIPUSH CXPUSH BXMOV BH,[SI]MOV BL,BHCON2: LODSBCMP AL,BHJB X1MOV BH,ALJMP X2X1: CMP AL,BLJA X2MOV BL,ALX2: LOOP CON2MOV AX,BXPOP BXPOP CXPOP SIEXIT: RETDISP: MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALMOV CL,0DFH ;显示子程序,5msMOV BX,OFFSET BUFDIS1: MOV AL,[BX]MOV AH,00HPUSH BXMOV BX,OFFSET DATA1ADD BX,AXMOV AL,[BX]POP BXMOV DX,PBOUT DX,ALMOV AL,CLMOV DX,PAOUT DX,ALPUSH CXDIS2: MOV CX,00A0HLOOP $POP CXCMP CL,0FEH ;01HJZ LX1MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALINC BXROR CL,1 ;SHR CL,1JMP DIS1LX1: MOV AL,0FFHMOV DX,PBOUT DX,ALRETBUF1: MOV BH,AHCALL ZHMOV BUF,AHMOV BUF+1,ALMOV BUF+2,17HMOV BUF+3,17HMOV AL,BHCALL ZHMOV BUF+5,ALMOV BUF+4,AHRET;-------------------------------------------------------- ZH: MOV BL,ALMOV CL,4ROL AL,CLAND AL,0FHMOV AH,ALMOV AL,BLAND AL,0FHRET;------------------------------------------------------- CODE ENDSEND START。

数码管显示器内部电路图。

相关文档
最新文档