分支与循环程序设计实验报告汇总
- 格式:docx
- 大小:203.82 KB
- 文档页数:13
一、实验背景在计算机科学中,分支算法是一种常见的算法设计方法,广泛应用于图论、人工智能、网络优化等领域。
分支实验旨在通过设计实验来验证分支算法的效率和性能,为算法优化和改进提供依据。
本文以分支算法在求解单源最短路径问题中的应用为例,进行分支实验研究。
二、实验目的1. 了解分支算法的基本原理和特点;2. 分析分支算法在求解单源最短路径问题中的应用效果;3. 探索优化分支算法的途径,提高算法的求解效率。
三、实验原理分支算法是一种在图论中用于求解问题的方法,通过不断地将图中的节点分为两个子集,逐步缩小搜索范围,最终找到最优解。
在求解单源最短路径问题时,分支算法通常采用以下步骤:1. 从源节点开始,将源节点所在的子集设为当前节点集,其余节点设为未访问节点集;2. 选择当前节点集中距离源节点最近的节点作为新节点,将其加入当前节点集,其余节点移至未访问节点集;3. 重复步骤2,直到未访问节点集为空或找到满足条件的解;4. 输出最优解。
四、实验环境1. 硬件环境:****************************,16GB内存;2. 软件环境:Windows 10操作系统,MATLAB R2018b。
五、实验步骤1. 设计实验数据:生成一张包含n个节点的无向图,并设定各节点之间的边权值;2. 编写分支算法程序:根据实验原理,实现分支算法求解单源最短路径问题的功能;3. 运行实验程序:对不同的图规模和边权值进行实验,记录实验结果;4. 分析实验结果:对比不同实验条件下的算法效率,总结优化策略。
六、实验结果与分析1. 实验数据:设计实验时,选取n个节点的无向图,边权值范围在1到100之间;2. 实验结果:通过实验,得到不同图规模和边权值下的分支算法求解单源最短路径问题的耗时;3. 分析与优化:(1)在较小的图规模下,分支算法的求解效率较高,但随着图规模的增大,求解时间显著增加;(2)当边权值较大时,分支算法的求解效率较低,尤其是在边权值接近最大值时;(3)针对上述问题,可采取以下优化策略:a. 选择合适的分支策略,例如基于节点度、边权值等因素;b. 利用启发式算法,如A算法,提高分支算法的搜索效率;c. 优化算法实现,如采用并行计算、分布式计算等技术。
分支程序设计实验在计算机科学领域中,分支程序设计是一种重要的概念。
它是指在程序执行过程中,根据不同的条件选择不同的执行路径。
这种设计方法可以使程序更加灵活和智能,提高程序的执行效率和准确性。
在本文中,我们将探讨分支程序设计的原理和实验。
一、分支程序设计的原理分支程序设计的核心原理是根据条件的真假来选择不同的执行路径。
在程序中,我们可以使用条件语句来实现分支程序设计。
常见的条件语句有if语句和switch语句。
if语句是一种基本的条件语句,它根据条件的真假来选择不同的执行路径。
if语句的基本结构是:if (条件) {执行语句} else {执行语句}。
当条件为真时,执行if语句中的代码块;当条件为假时,执行else语句中的代码块。
switch语句是另一种常见的条件语句,它根据条件的不同值来选择不同的执行路径。
switch语句的基本结构是:switch (条件) {case 值1: 执行语句1; break; case值2: 执行语句2; break; default: 执行语句3;}。
当条件的值与某个case的值相等时,执行对应的执行语句;当条件的值与所有case的值都不相等时,执行default语句。
二、分支程序设计的实验为了更好地理解和应用分支程序设计的原理,我们可以进行一些实验。
下面是一个简单的实验示例:实验目的:根据用户输入的成绩,判断其等级。
实验步骤:1. 定义一个变量grade,用于存储用户输入的成绩。
2. 使用scanf函数获取用户输入的成绩,并将其赋值给变量grade。
3. 使用if语句判断成绩的等级,并输出相应的结果。
实验代码:```#include <stdio.h>int main() {int grade;printf("请输入您的成绩:");scanf("%d", &grade);if (grade >= 90) {printf("您的等级为A\n");} else if (grade >= 80) {printf("您的等级为B\n");} else if (grade >= 70) {printf("您的等级为C\n");} else if (grade >= 60) {printf("您的等级为D\n");} else {printf("您的等级为E\n");}return 0;}```在这个实验中,我们根据用户输入的成绩判断其等级,并输出相应的结果。
循环结构程序设计(C语言实验报告)实验目的:1. 掌握循环结构程序设计流程2. 熟悉while、do-while和for循环语句的使用3. 掌握循环语句的嵌套应用实验原理:循环结构是一种非常重要的程序设计结构,其目的是为了让程序可以重复执行一段代码块,从而达到省去大量代码重复编写的目的,也可以是让程序能够按照用户的需求反复执行一段代码块。
在C语言中,常用的循环结构有while、do-while和for三种,这三种循环语句的基本语法结构是:while(循环条件){循环体语句;}其中,while循环和do-while循环的区别在于:while循环条件成立时,不一定会执行一次循环体,但do-while循环条件成立时,会先执行一次循环体,然后判断循环条件是否成立;至于for循环,则是将循环条件、循环初值和循环增量三个要素集成在一起,使用比较方便。
另外,循环结构也可以进行嵌套应用,即在循环体内部再嵌套一个循环,这样可以实现多个变量的循环控制。
应用实例包括如下:1. 打印九九乘法表2. 对一个数组进行排序3. 多重循环实现字谜游戏实验内容:1. while循环:目的是求出1~100的整数和,并在程序运行过程中输出1~100的所有整数。
目的是输入若干个数字,计算它们的平均值。
3. for循环:目的是输入一个数n,求1~n中可以被3或5整除的所有整数和。
4. 循环嵌套:目的是打印九九乘法表。
实验总结:本次实验通过三种常用的循环结构,并结合实例进行学习掌握,同时还熟悉了循环嵌套的应用。
相信这对于日后的程序设计和代码优化应用会非常有帮助。
循环结构程序设计实验报告在计算机程序设计中,循环结构是一种非常重要的控制结构,它能够让程序在满足一定条件下重复执行某段代码,从而实现对重复性任务的高效处理。
本次实验旨在通过实际编写程序,掌握循环结构的使用方法及其在程序设计中的应用。
一、实验目的。
本次实验的主要目的是:1. 掌握循环结构的基本概念和语法;2. 熟练掌握for循环、while循环和do-while循环的使用方法;3. 能够运用循环结构解决实际问题。
二、实验内容。
1. 编写一个程序,利用for循环计算1-100的累加和,并输出结果。
2. 编写一个程序,利用while循环计算1-100的累加和,并输出结果。
3. 编写一个程序,利用do-while循环计算1-100的累加和,并输出结果。
4. 编写一个程序,利用循环结构求解实际问题,如计算阶乘、斐波那契数列等。
三、实验步骤。
1. 编写for循环程序。
```c。
#include <stdio.h>。
int main() {。
int sum = 0;for (int i = 1; i <= 100; i++) {。
sum += i;}。
printf("1-100的累加和为,%d\n", sum); return 0;}。
```。
2. 编写while循环程序。
```c。
#include <stdio.h>。
int main() {。
int sum = 0;int i = 1;while (i <= 100) {。
sum += i;i++;}。
printf("1-100的累加和为,%d\n", sum); return 0;}。
```。
3. 编写do-while循环程序。
```c。
#include <stdio.h>。
int main() {。
int sum = 0;int i = 1;do {。
sum += i;i++;} while (i <= 100);printf("1-100的累加和为,%d\n", sum); return 0;}。
实验四分支和循环程序设计实验一、实验要求和目的1.熟悉汇编语言程序设计结构;2.熟悉汇编语言分支程序基本指令的使用方法;3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法;4.了解汇编语言循环程序设计的基本流程;5.熟悉汇编语言循环基本指令的使用方法;6.掌握利用汇编语言的循环指令完成循环程序设计方法。
二、软硬件环境1、硬件环境:计算机系统 windows;2、软件环境:装有 MASM、DEBUG、LINK、等应用程序。
三、实验涉及的主要知识在实际应用中,经常根据一些条件来选择一条分支执行。
汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号相减而导致的结果来进行。
1.无条件转移指令 JMP无条件转移指令 JMP是使程序无条件转移至目标处,又分为段内转移、段间转移。
2.条件转移指令 JXX条件转移指令可分为三大类:1).简单条件转移指令指令。
根据单个标志位的状态判断转移条件。
标志位指令转移条件意义CFJC CF=1 有进位/借位JNC CF=0 无进位/借位ZFJE/JZ ZF=1 相等/等于 0JNE/JNZ ZF=0 不相等/不等于 0SFJS SF=1 是负数JNS SF=0 是正数OFJO OF=1 有溢出JNO OF=0 无溢出PFJP/JPE PF=1 有偶数个 1JNP/JPO PF=0 有奇数个 12).无符号数条件转移指令。
假设在条件转移指令前使用比较指令,比较两个无符号数A,B,指令进行的的操作是 A-B,其转移指令如下:指令转移条件意义JA/JNBE CF=0 AND ZF=0 A>BJAE/JNB CF=0 OR ZF=1 A>=BJB/JNAE CF=1 AND ZF=0 A<BJBE/JNA CF=1 OR ZF=1 A<=B3).带符号数条件转移指令。
指令转移条件意义JG/JNLE SF=OF AND ZF=0 A>BJGE/JNL SF=OF OR ZF=1 A>=BJL/JNGE SF OF AND ZF=0 A<BJLE/JNG SF OF OR ZF=1 A<=B四、实验内容与步骤1、判断方程 AX2+BX+C=0是否有实根。
分支程序设计实验实验报告————————————————————————————————作者:————————————————————————————————日期:ﻩ实验二分支程序设计实验实验报告实验名称:分支程序设计实验指导教师罗志祥专业班级光信1006 姓名张博学号U201013339 联系方式一、任务要求:熟练掌握K eil C环境下汇编语言程序的调试方法,加深对汇编语言指令、机器码、寻址方式等基本内容的理解,掌握分支程序和简单程序的设计与调试方法,了解并行IO 口的使用。
1. 设有8bits 符号数X 存于外部R AM 单元,按以下方式计算后的结果Y 也存于外部RAM 单元,请按要求编写程序。
240/2204020X X Y X X XX ⎧≥⎪=<<⎨⎪≤⎩当当当2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P 0、P 1、P2端口输出(以压缩B CD 码的形式)。
P3.0为低电平时开始计时,为高电平时停止计时。
提高部分(选做):a . 实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P 2口输出。
利用P3.7状态选择加、减计数方式。
b. 利用P3口低四位状态控制开始和停止计数,控制方式自定。
二、设计思路:1.分支函数程序设计:首先将X 赋给累加器A ,与40比较大小,将大于或等于40的执行乘方操作;小于40的再与20做比较,大于20的执行取除法操作,小于或等于20的执行取反操作。
最后将计算结果Y 存于片外的RAM 上。
2.电子时钟程序设计思路:首先用循环程序的嵌套实现一个1s 的延时,同时让记秒的端口P2同步加一,到60后清零;再让此循环执行60次实现1min 的延时,同时让P1同步加一,到60后清零;再让分钟的循环执行24次,实现1hour 的延时,同时让P 0同步加一。
至此循环,即可实现24小时的时钟功能。
(注:本计算机的晶振频率为12MHz)3.4位十进制加、减1计数程序思路:低位的个位和十位赋给一个寄存器,而将高位即百位千位赋给另外一个寄存器,通过循环程序使低位数循环100次即向高位进位或借位,高位循环100次后即回归初始状态,同时设计两个子函数分别执行加一、减一操作。
顺序分支循环实验报告实验目的本实验旨在通过编写程序,实践顺序、分支和循环这三种常见的程序控制结构,并加深对这些概念的理解。
实验设备与环境本实验使用的设备为一台运行Windows操作系统的个人电脑,所需开发工具为Python编程语言。
实验过程与结果顺序结构首先,我们编写了一个简单的程序,用于计算并打印两个数的和。
具体代码如下所示:pythona = 5b = 3c = a + bprint("两个数的和为:", c)运行以上代码后,我们可以在控制台上看到输出结果“两个数的和为:8”,说明程序能够顺利地计算出两个数的和并将结果打印出来。
这是因为程序按照代码的书写顺序,依次执行了定义变量、进行计算和打印输出这三个步骤。
分支结构接下来,我们编写了一个程序,用于判断一个数是否为正数。
具体代码如下所示:pythonnum = -20if num > 0:print("这是一个正数")else:print("这不是一个正数")运行以上代码后,我们可以在控制台上看到输出结果“这不是一个正数”,说明程序能够根据num的值,使用if语句进行条件判断,并根据判断结果执行相应的代码块。
循环结构最后,我们编写了一个程序,用于实现1到10的整数相加,并计算它们的平均值。
具体代码如下所示:pythontotal = 0count = 0while count < 10:count += 1total += countaverage = total / countprint("1到10的整数相加的结果为:", total)print("1到10的整数的平均值为:", average)运行以上代码后,我们可以在控制台上看到输出结果“1到10的整数相加的结果为:55”和“1到10的整数的平均值为:5.5”,说明程序能够使用while循环结构依次累加1到10的整数,并根据计算结果进行打印输出。
南通大学计算机科学与技术学院微机原理实验报告书班级:智控151学号:***********名:***南通大学计算机类课程实验报告南通大学计算机科学与技术学院微机原理实验报告书班级:智控151学号:1512042022姓名:王建棋南通大学计算机类课程实验报告六、实验结果<一><二>七、实验存在问题和解决办法程序一:检查发现第16行的“ADD AL,20H”将数字0写成了大写字母O,排除错误后可正常运行。
字符串后忘了加$,导致转换为小写字母后出现如下乱码:字符串后加结束符$后乱码消除。
程序二:分析表明第28行“CMP BL,0FFH”中FFH前要加0八、实验心得和建议南通大学计算机科学与技术学院微机原理实验报告书班级:智控151学号:1512042022姓名:王建棋南通大学计算机类课程实验报告ADD AL,30HMOV DL,ALMOV AH,2INT 21HMOV AX,4C00HINT 21HCODE ENDSEND START(如不够,请另附纸)六、实验结果七、实验存在问题和解决办法分析表明错误原因如下:(1)O写成0;(2)相对寻址只限于用SI、DI、BX、BP,而程序中却用了其它寄存器。
修改后仍有错误如下:错误原因:使用“INC BYTE PTR[BX+2]”忘了加BYTE PTR修改后仍得不到正确结果,错误如下:错误原因:“CMP [DI],'0'”应改成“CMP BYTE PTR[DI],'0'”错误全部修改后得到所要的结果八、实验心得和建议南通大学计算机科学与技术学院微机原理实验报告书班级:智控151学号:1512042022姓名:王建棋南通大学计算机类课程实验报告MOV AX,4C00HINT 21HCODE ENDSEND START(如不够,请另附纸)六、实验结果七、实验存在问题和解决办法出错原因:(1)DEC,DW 是保留字;(2)“MOV CL,10000”中10000超过范围CL的最大范围。
一、实验目的1. 掌握循环结构程序设计的基本方法和应用;2. 熟悉C语言、Java语言等编程语言中的循环结构;3. 提高编程能力,学会运用循环结构解决实际问题。
二、实验环境1. 操作系统:Windows 102. 编程语言:C语言、Java语言3. 编译器:Visual Studio、NetBeans三、实验内容1. C语言循环结构程序设计(1)编写一个C语言程序,实现输出1-100的累加和。
```c#include <stdio.h>int main() {int sum = 0;int i;for (i = 1; i <= 100; i++) {sum += i;}printf("1-100的累加和为:%d\n", sum);return 0;}```(2)编写一个C语言程序,实现输出16行杨辉三角。
```c#include <stdio.h>int main() {int arr[16][16];int i, j;for (i = 0; i < 16; i++) {for (j = 0; j <= i; j++) {if (j == 0 || i == j) {arr[i][j] = 1;} else {arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j]; }printf("%d ", arr[i][j]);}printf("\n");}return 0;}```2. Java语言循环结构程序设计(1)编写一个Java程序,实现输出1-100的累加和。
```javapublic class Sum {public static void main(String[] args) {int sum = 0;int i;for (i = 1; i <= 100; i++) {sum += i;}System.out.println("1-100的累加和为:" + sum);}}```(2)编写一个Java程序,实现输出16行杨辉三角。
实验名称 分支与循环程序设计实验指导教师 罗志祥专业班级 光电1406 姓名 段昳晖 学号 U2014***** 联系电话 137********一、任务要求1. 设有8bits 符号数X 存于外部RAM 单元,按以下方式计算后的结果Y 也存于外部RAM 单元,请按要求编写完整程序。
264/2106410X X Y X X X X ⎧≥⎪=<<⎨⎪≤⎩ 当 当 当 2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD 码的形式)。
P3.0为低电平时开始计时,为高电平时停止计时。
设计1s 延时子程序(延时误差小于10us ,晶振频率12MHz )。
二、设计思路1. 设有8bits 符号数X 存于外部RAM 单元,按以下方式计算后的结果Y 也存于外部RAM 单元,请按要求编写完整程序。
264/2106410X X Y X X X X ⎧≥⎪=<<⎨⎪≤⎩ 当 当 当 将外部单元1000H 中的X ,通过分支判断,分别执行不同的语句,三条语句分别为标记为L1、L2、L3,先比较X 与64的大小关系,再判断X 与10的大小关系,主要利用比较转移指令CJNE,以及执行CJNE 指令后的进位位CY,进一步比较大小,分别跳转至对应语句。
将结果存于外部单元的1001H 以及1002H 。
2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD 码的形式)。
P3.0为低电平时开始计时,为高电平时停止计时。
设计1s 延时子程序(延时误差小于10us ,晶振频率12MHz )。
主程序设计三层循环,分别对应时、分、秒,最内层安放一秒延时程序。
利用R0、R1、R2计数,R3保存分钟数、R4保存小时数,最内层循环60次,中循环循环1次,中循环60秒,外循环循环1次,外循环循环24次,清零。
分支程序设计实验报告
实验名称:分支程序设计实验报告
实验目的:通过分支程序设计的实验,深入理解程序运行的基本
原理,掌握分支语句的应用方法,提高编写程序的能力和水平。
实验原理:分支程序设计是一种基于逻辑运算的程序结构,它可
以根据不同的条件,选择不同的执行路径,从而实现程序不同的输出
效果。
实验过程:首先,确定需要实现的程序功能,并根据程序逻辑设
计分支语句。
然后,使用编程工具编写代码,调试程序,运行程序。
最后,对程序进行测试和优化,达到预期的效果。
实验结果:通过实验,我深入理解了分支程序设计的基本原理和
应用方法。
我能够设计和编写简单的分支程序,实现不同的输出结果。
我还学会了如何测试和优化程序,以达到最佳的执行效果。
通过实验,我提高了编写程序的能力和水平。
实验总结:分支程序设计是计算机编程中非常重要的一部分,掌
握分支语句的应用方法可以提高编写程序的效率和质量。
通过实验,
我能够利用分支语句来设计程序,实现复杂的逻辑运算和条件判断。
我对编程语言的掌握和应用能力也有了进一步的提高。
我相信,凭借
自己的勤奋努力和不断的实践,我一定能成为一名优秀的程序员。
实验3 分支和循环程序设计实验目的:熟练掌握分支和循环结构的设计方法,熟悉跳转和循环指令的使用方法。
实验要求:按照要求编写程序,调试运行。
实验内容:1、编写程序实现下面的算法:ifthenlowerCount+1;elseif(ch≥’A’) and (ch≤’Z’)thenupperCount+1elseotherCount+1;endifendif其中ch调用ReadChar输入,lowerCount, upperCount和otherCount的值用WriteUDecByte显示。
源代码.386.model flat,stdcallinclude\masm32\include\io32.inc.stack 4096.datalowercount Byte ?uppercount Byte ?othercount Byte ?prompt1 byte "Input a string(if(#)end)",0dh,0ah,0prompt2 byte "output the number",0dh,0ah,0prompt3 byte "the lowercount number:",0dh,0ah,0prompt4 byte "the uppercount number:",0dh,0ah,0prompt5 byte "the othercount number:",0dh,0ah,0buf byte 80 dup(?).codestart:writestring prompt1 readstring buflea edi,bufagain:mov al,[edi]cmp al,'#'jz donecmp al,'A'jb othercmp al ,'Z'jbe uppercmp al,'a'jb othercmp al,'z'jbe lowerjmp otherlower: inc lowercount inc edijmp againupper:inc uppercount inc edijmp againother: inc othercount inc edijmp againdone:writestring prompt2 writecrlfwritestring prompt3 writeUDecByte lowercount writecrlfwritestring prompt4 writeUDecByte uppercount writecrlfwritestring prompt5 writeUDecByte othercount retend start实验结果结果1结果22、编写程序从键盘输入一系列有符号数,找出其中的最大数和最小数,显示运行结果。
第1篇实验名称:程序循环结构实验实验日期:2023年4月10日实验地点:计算机实验室实验目的:1. 理解循环结构在程序设计中的作用。
2. 掌握不同循环结构(如for循环、while循环、do-while循环)的语法和应用。
3. 能够根据实际问题选择合适的循环结构进行编程实现。
4. 提高编程实践能力。
实验环境:1. 操作系统:Windows 102. 编程语言:Python3.83. 开发工具:PyCharm实验内容:一、实验一:for循环结构1. 实验目的了解for循环的语法和使用方法,掌握其基本操作。
2. 实验步骤(1)编写一个程序,使用for循环打印1到10的整数。
(2)编写一个程序,使用for循环计算1到100的整数之和。
3. 实验代码```python打印1到10的整数for i in range(1, 11):print(i)计算1到100的整数之和sum = 0for i in range(1, 101):sum += iprint("1到100的整数之和为:", sum)```4. 实验结果程序成功运行,打印出1到10的整数和1到100的整数之和。
二、实验二:while循环结构1. 实验目的了解while循环的语法和使用方法,掌握其基本操作。
2. 实验步骤(1)编写一个程序,使用while循环计算1到10的整数之和。
(2)编写一个程序,使用while循环判断一个数是否为素数。
3. 实验代码```python计算1到10的整数之和sum = 0i = 1while i <= 10:sum += ii += 1print("1到10的整数之和为:", sum)判断一个数是否为素数num = 29is_prime = Truei = 2while i i <= num:if num % i == 0:is_prime = Falsebreaki += 1if is_prime:print(num, "是素数")else:print(num, "不是素数")```4. 实验结果程序成功运行,打印出1到10的整数之和以及29是否为素数。
一、实验目的1. 理解分支指令的概念及其在程序设计中的作用。
2. 掌握分支指令的使用方法,包括条件分支和无条件分支。
3. 通过实际编程,加深对分支指令的理解和应用。
二、实验环境1. 操作系统:Windows 102. 编程语言:C语言3. 编译器:MinGW三、实验内容1. 分支指令的概念和分类2. 条件分支指令(if语句)3. 无条件分支指令(goto语句)4. 分支指令的应用实例四、实验步骤1. 分支指令的概念和分类(1)分支指令的概念:分支指令是程序设计中的基本结构,用于根据条件判断执行不同的代码块。
(2)分支指令的分类:根据分支指令的作用,可以分为条件分支指令和无条件分支指令。
2. 条件分支指令(if语句)(1)语法结构:if (条件表达式) {// 条件为真时执行的代码块} else {// 条件为假时执行的代码块}(2)实例:```c#include <stdio.h>int main() {int a = 10;int b = 20;if (a > b) {printf("a 大于 b\n"); } else {printf("a 不大于 b\n"); }return 0;}```3. 无条件分支指令(goto语句)(1)语法结构:goto 标签;(2)实例:```c#include <stdio.h>int main() {int i = 0;while (i < 5) {printf("i 的值为:%d\n", i); i++;if (i == 3) {goto end;}}end:printf("循环结束\n");return 0;}```4. 分支指令的应用实例(1)判断一个数是奇数还是偶数:```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (num % 2 == 0) {printf("%d 是偶数\n", num);} else {printf("%d 是奇数\n", num); }return 0;}```(2)计算两个数的最大值:```c#include <stdio.h>int main() {int a, b, max;printf("请输入两个整数:");scanf("%d %d", &a, &b);if (a > b) {max = a;} else {max = b;}printf("最大值为:%d\n", max); return 0;}```五、实验结果与分析1. 通过实验,我们掌握了分支指令的概念和分类,了解了条件分支指令(if语句)和无条件分支指令(goto语句)的使用方法。
§1《微机原理与接口技术》课程实验报告一、实验目的1. 掌握循环程序设计的方法2. 掌握正确分配与使用寄存器。
二、实验环境1.硬件环境: 微型计算机一台。
2.软件环境: 装有MASM 5.0, DEBUG, LINK, EDIT等应用程序。
三、实验重点及难点循环程序的结构及程序设计方法。
四、实验内容假设有一组数据: 5, -4, 0, 3, 100, -51, 请编一程序, 判断: 每个数是大于0, 等于0, 还是小于0;并输出其判断结果Y。
1, 当X >0Y= 0, 当X =0-1, 当X <0五、实验分析和实验体会(1)实验分析:程序代码:DATA SEGMENTX DB 5,-4,0,3,100,-51NUM EQU $-XY DB 6 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE;DS:DATASTART:MOV AX,DATAMOV DS,AXLEA SI,XLEA DI,YMOV CX,NUMBJ: MOV AL,[SI]CMP AL,0JGE BIGEMOV BL,-1JMP NEXT BIGE:JE ZEROMOV BL,1JMP NEXT ZERO:MOV BL,0 NEXT:MOV [DI],BLINC SIINC DILOOP BJMOV AX,4CHINT 21H CODE ENDSEND START运行过程:(2)实验体会:通过本次实验使我掌握循环程序设计的方法, 同时了解了循环指令的使用方法;掌握正确分配与使用寄存器, 通过对寄存器的合理分配和使用, 可以使我们的程序更加简洁易懂。
分支与循环程序设计实验报告汇总Company number:【0089WT-8898YT-W8CCB-BUUT-202108】实验名称分支与循环程序设计实验指导教师罗志祥专业班级光电1406 姓名段昳晖学号 U2014*****联系电话 137********一、任务要求1. 设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写完整程序。
2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。
为低电平时开始计时,为高电平时停止计时。
设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。
二、设计思路1. 设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写完整程序。
将外部单元1000H中的X,通过分支判断,分别执行不同的语句,三条语句分别为标记为L1、L2、L3,先比较X与64的大小关系,再判断X与10的大小关系,主要利用比较转移指令CJNE,以及执行CJNE指令后的进位位CY,进一步比较大小,分别跳转至对应语句。
将结果存于外部单元的1001H以及1002H。
2.利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。
为低电平时开始计时,为高电平时停止计时。
设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。
主程序设计三层循环,分别对应时、分、秒,最内层安放一秒延时程序。
利用R0、R1、R2计数,R3保存分钟数、R4保存小时数,最内层循环60次,中循环循环1次,中循环60秒,外循环循环1次,外循环循环24次,清零。
其中对端口显示的秒数、分钟数、时间数,进行二进制修正。
利用循环来设计延时程序,合理计算语句长度,以及循环次数。
程序运行时修正的值,可以实现暂停计数和继续的功能。
提高部分(选做):1)实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。
利用状态选择加、减计数方式。
2)利用P3口低四位状态控制开始和停止计数,控制方式自定。
初始化P1、P2,,计数循环中插入一秒延时程序。
R1存千百位、R2存个十位,=0时,进行加1计数,取出R2中的数存于A,对A 加1,同时进行十进制修正,存于P2,达到99,则进位对千百位进行加1。
=1时,进行减一操作,取出R1中的数存于A,对A减1,同时进行十进制修正,存于P1,达到0,则对P2,对R2进行减一。
计数循环前判断的值,当=1时,开始计数,=0时,原地循环,停止计数,直到=1,可以实现随时停止与开始。
三、资源分配1. 设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写完整程序。
X存于片外1000HY存于片外1001H、1002H其中,求平方时,低位存于1001H,,高位存于1002H除二时,商存于1001H,,余数存于1002H2.利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。
为低电平时开始计时,为高电平时停止计时。
设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。
P0输出小时数P1输出分钟数P2输出秒数R0小时循环计数R1分钟循环计数R2秒循环计数R3保存分钟数R4保存小时数提高部分(选做):1)实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。
利用状态选择加、减计数方式。
2)利用P3口低四位状态控制开始和停止计数,控制方式自定。
P1输出千百位P2输出个十位计数开始与停止控制加1减1计数切换R1存千百位R2存个十位四、流程图1. 设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写完整程序。
2.利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。
为低电平时开始计时,为高电平时停止计时。
设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。
提高部分(选做):1)实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。
利用状态选择加、减计数方式。
2)利用P3口低四位状态控制开始和停止计数,控制方式自定。
五、源代码(含文件头说明、语句行注释)1. 设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写完整程序。
File name:Description: 对8bits符号数X,对于不同的X进行不同的运算操作Date:Designed by:Source used: 1000H: 存X的值1001H、1002H: 存Y的值1001H:平方运算所得低位;除法运算所得商1002H:平方运算所得高位;除法运算所得余数ORG 0000HLJMP MAINORG 0100HMAIN: MOV DPTR,#1000H ;X存于1000HMOV A,#-1 ;给X赋值MOV B,#0MOVX @DPTR,A;正负判断JB ,L3 ;X<0,L3;X>0CJNE A,#64,L2 ;A!=64,L2SJMP L1L1: MOV B,A ;X>=64MUL ABSJMP STORE ;低位存于1001H,高位存于1002HL2: JNC L1 ;X>64,L1CJNE A,#10,L4 ;A!=10,L4SJMP L3 ;X=10,L3L4: JC L3 ;X<10,L3MOV B,#2DIV AB ;X>10SJMP STORE ;商存于1001H,余数存于1002HL3: CPL A ;X<=10STORE: INC DPTR ;结果存于1001HMOVX @DPTR,AINC DPTRMOV A,BMOVX @DPTR,ASJMP $END2.利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。
为低电平时开始计时,为高电平时停止计时。
设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。
File name:Description: 24小时制电子时钟Date:Designed by: DYHSource used:P0:输出小时数P1:输出分钟数P2:输出秒数R0:小时循环计数R1:分钟循环计数R2:秒循环计数R3:保存分钟数R4:保存小时数ORG 0000HLJMP MAINORG 0100HMAIN: MOV SP,#40HMOV P0,#0MOV P1,#0MOV P2,#0MOV R3,#0 ;保存小时MOV R4,#0 ;保存分钟;设定循环MOV R0,#24 ;小时外循环·24MOV R1,#59 ;分钟中循环·60MOV R2,#59 ;秒内循环·60CLR ALOOP: JNB ,$ ;=0,结束计数LCALL DELAY ;延时1sADD A,#1DA AMOV P2,ADJNZ R2,LOOPMOV A,R3 ;分钟开始计数将分钟赋给AADD A,#1 ;分钟+1DA AMOV R3,AMOV P1,ACLR A ;秒清零MOV R2,#59 ;重置内循环·DJNZ R1,LOOP ;R1!=0,中循环MOV R3,#0 ;分钟清零,小时计数MOV A,R4ADD A,#1DA AMOV R4,AMOV P0,AMOV R2,#59 ;重置中循环MOV R1,#59 ;重置外循环DJNZ R0,LOOPDONE: SJMP $DELAY: MOV R7,#11 ;n==((201*5+5)*90+9)*11+2=1000001DELAY3: MOV R6,#90 ;t=DELAY2: MOV R5,#201DELAY1: NOPNOPNOPDJNZ R5,DELAY1NOPNOPDJNZ R6,DELAY2NOPNOPNOPNOPNOPNOPDJNZ R7,DELAY3RETEND提高部分(选做):1)实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。
利用状态选择加、减计数方式。
2)利用P3口低四位状态控制开始和停止计数,控制方式自定。
Description: 实现4位十进制加、减1计数Date:Designed by: DYHSource used:P1输出千百位P2输出个十位计数开始与停止控制加1减1计数切换R1存千百位R2存个十位ORG 0000HMOV P1,#0 ;输出千百位MOV P2,#0 ;输出个十位MOV R1,#0 ;存千百位MOV R2,#0 ;存个十位LJMP MAINORG 0100HMAIN: JB ,$ ;计数开始与停止控制JNB ,ADD1 ;加1减1,模式选择SUB1: MOV P1,#99MOV P2,#99MOV R1,#99LOOP2: MOV R2,#99LOOP1: JB ,$JNB ,LOOP3MOV A,R2LCALL DELAYDEC AMOV R2,AMOV P2,R2CJNE R2,#0H,LOOP1MOV A,R1DEC AMOV R1,AMOV P1,R1CJNE R1,#0H,LOOP2SJMP $ADD1: MOV P1,#0MOV P2,#0MOV R1,#0LOOP4: MOV R2,#0LOOP3: JB ,$JB ,LOOP1MOV A,R2LCALL DELAYINC AMOV R2,AMOV P2,R2CJNE R2,#99H,LOOP3MOV A,R1INC AMOV R1,AMOV P1,R1CJNE R1,#99H,LOOP4MOV R1,#0SJMP $DELAY: MOV R7,#11 ;n==((201*5+5)*90+9)*11+2=1000001DELAY3: MOV R6,#90 ;t=DELAY2: MOV R5,#201DELAY1: NOPNOPNOPDJNZ R5,DELAY1NOPNOPDJNZ R6,DELAY2NOPNOPNOPNOPNOPNOPDJNZ R7,DELAY3RETEND六、程序测试方法与结果1. 设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写完整程序。
(1)X=-30=E2H Y=1DH(2).X=5=05H,Y=FAH(3).X=10=0AH,Y=F5H(4)X=25=19h Y=0CH(商) 01H(余数)(5).X=64=40H Y=1000H2.利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。