分支与循环程序设计实验报告汇总
分支实验报告

一、实验背景在计算机科学中,分支算法是一种常见的算法设计方法,广泛应用于图论、人工智能、网络优化等领域。
分支实验旨在通过设计实验来验证分支算法的效率和性能,为算法优化和改进提供依据。
本文以分支算法在求解单源最短路径问题中的应用为例,进行分支实验研究。
二、实验目的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语言实验报告)

循环结构程序设计(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、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分支与循环程序设计实验报告汇总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码的形式)。