分支和循环程序设计实验报告

合集下载

循环程序设计实验报告

循环程序设计实验报告

循环程序设计实验报告
实验名称:循环程序设计实验报告
实验目的:
本实验旨在通过编写循环程序,提高学生对循环结构的理解和应用
能力,并培养学生的编程思维和解决问题的能力。

实验要求:
1.熟悉循环结构的基本原理和应用场景。

2.掌握使用循环结构解决实际问题的方法。

3.能够分析和设计能够利用循环结构优化的程序。

4.完成实验报告,详细记录实验过程和结果。

实验内容:
1.实验环境和工具
介绍实验所使用的编程环境和工具,包括操作系统、编程语言和开
发工具等。

2.实验题目和要求
描述实验要求和题目,明确实验要求和要解决的问题。

3.实验设计
介绍实验的设计思想和方法,包括解决问题的整体思路和基本步骤。

4.实验步骤
按照设计思路和方法,详细描述实验的具体步骤,包括程序的编写、调试和运行等。

5.实验结果与分析
展示实验的运行结果,并对结果进行详细分析和解释。

6.实验总结
总结实验的过程和结果,提出实验中存在的问题和改进的方向。

附件:本实验涉及的附件包括但不限于实验源代码、实验数据和实
验报告等。

法律名词及注释:
1.版权:著作权法规定的个人或集体对作品享有的专有权利。

2.商标:商标法规定的商业标识,用以区分不同商家的商品或服务。

3.专利:专利法保护的发明创造,赋予发明人对其发明的独占权利。

循环程序设计实验报告

循环程序设计实验报告

循环程序设计实验报告一、实验目的1. 掌握循环语句的基本语法和使用场景。

2. 理解循环控制结构在程序设计中的应用。

3. 学会使用循环结构解决实际问题。

二、实验环境1. 操作系统:Windows 102. 开发工具:Visual Studio 20193. 编程语言:C++三、实验内容本次实验主要包括以下几个部分:1. 循环的基本结构学习。

2. 循环在数组处理中的应用。

3. 循环与条件语句的结合使用。

四、实验原理循环是一种控制程序流程的语句,它允许我们重复执行一段代码直到满足某个条件。

循环主要有三种形式:for循环,while循环和do-while循环。

每种循环都有其特定的使用场景和语法结构。

1. for循环:适用于已知循环次数的情况。

2. while循环:适用于循环次数未知,需要在循环体内判断是否继续执行的情况。

3. do-while循环:至少执行一次循环体,然后判断是否继续执行。

五、实验步骤1. 打开Visual Studio 2019,创建一个新的C++项目。

2. 在项目中创建一个新的C++源文件,命名为“LoopExperiment.cpp”。

3. 编写实验代码,包括循环的基本结构和数组处理。

以下是实验代码示例:```cpp#include <iostream>using namespace std;int main() {// 循环的基本结构cout << "for循环示例:" << endl;for (int i = 0; i < 5; ++i) {cout << "循环次数:" << i << endl;}cout << endl << "while循环示例:" << endl;int j = 0;while (j < 5) {cout << "循环次数:" << j << endl;++j;}cout << endl << "do-while循环示例:" << endl;int k = 0;do {cout << "循环次数:" << k << endl;++k;} while (k < 5);// 循环在数组处理中的应用int numbers[] = {10, 20, 30, 40, 50};int size = sizeof(numbers) / sizeof(numbers[0]);cout << endl << "数组元素输出:" << endl;for (int i = 0; i < size; ++i) {cout << "元素 " << i << " 的值:" << numbers[i] << endl;}// 循环与条件语句的结合使用cout << endl << "寻找数组中的最大值:" << endl;int max = numbers[0];for (int i = 1; i < size; ++i) {if (numbers[i] > max) {max = numbers[i];}}cout << "数组中的最大值是:" << max << endl;return 0;}```4. 编译并运行代码,观察程序的输出结果。

分支程序的设计实验报告

分支程序的设计实验报告

分支程序的设计实验报告实验目的本实验旨在通过设计一个分支程序来展示控制流程中的分支结构,加深对这一概念的理解,并通过实际编程提高对分支结构的应用能力。

实验原理分支程序是一种常见的控制流程结构,它根据条件的真假选择不同的执行路径。

在编程中,分支程序通常用于判断特定条件是否满足,并根据不同结果执行不同的操作。

常见的条件语句包括if 语句、switch 语句等。

在设计一个分支程序时,需要明确条件和执行路径,并根据不同情况进行相应处理。

分支程序的设计需要考虑条件的正确性和完备性,避免出现判断错误或遗漏情况。

实验过程本实验选择使用Python 语言来设计和实现一个简单的分支程序。

具体步骤如下:1. 首先,根据实际需求确定分支程序的目标和条件。

在本实验中,我们设计了一个分支程序来判断一个数字是否是奇数。

2. 接下来,根据选定条件,实现相应的判断逻辑。

我们使用if 语句来对给定数字进行判断。

如果数字对2 求余等于0,那么这个数字是偶数;否则,这个数字是奇数。

3. 在程序中加入输出语句,以便用户能够看到最终的判断结果。

4. 编译和运行程序,观察输出结果是否符合预期。

在实验过程中,我们还可以进行额外的调试和优化,并添加更多的分支条件来扩展程序功能。

例如,我们可以增加一个分支条件来判断数字是否为负数,或者根据数字的大小进行不同的处理等。

实验结果经过编写、编译和运行,我们得到了一个简单的分支程序。

该程序可以根据给定的数字判断其是否是奇数,并将结果输出给用户。

下面是程序的源代码:pythonn = int(input("请输入一个整数: "))if n % 2 == 0:print("这是一个偶数。

")else:print("这是一个奇数。

")以下是程序运行的示例结果:请输入一个整数: 5这是一个奇数。

请输入一个整数: 8这是一个偶数。

实验总结通过本次实验,我们深入学习了分支程序的设计原理和实现方法,并通过编写一个简单的示例程序加深了对分支结构的理解。

华南理工大学微机与接口实验报告(四实验,题目原理流程图代码截图完整版)

华南理工大学微机与接口实验报告(四实验,题目原理流程图代码截图完整版)

微机原理实验报告班 级:2012级电子科学与技术卓工班级电子科学与技术卓工班姓 名: 黄中一黄中一 学 号: 201236460273序 号:评阅分数:评阅分数:实验一一、实验目的1、学会如何建立汇编源文件ASM2、学会调用MASM 宏汇编程序对源文件进行汇编,获得目标程序宏汇编程序对源文件进行汇编,获得目标程序 OBJ 及LST 列表文件列表文件3、学会调用LINK 连接程序汇编后的目标文件OBJ 连接成可执行的文件连接成可执行的文件EXE 4、学会使用DEBUG 调试程序把可执行文件装入内存并调试运行,用D 命令显示目标程序,用U 命令对可执行文件反汇编,用G 命令运行调试。

命令运行调试。

二、实验设备装有MASM 软件的IBM PC 机三、实验内容1、汇编程序对源程序进行编译,生成扩展名为OBJ 的目标文件;连接程序是将目标程序和库文件进行连接、定位,生成扩展名为EXE 的可执行文件;调试程序是对目标文件进行调试,验证它的正确性。

是对目标文件进行调试,验证它的正确性。

2、DEBUG 程序各种命令的使用方法程序各种命令的使用方法功能功能命令格式命令格式 使用说明使用说明显示内存单元内容显示内存单元内容D 地址地址从指定地址开始显示40H 个字节或80H 个字节个字节 修改内存单元内容修改内存单元内容 E 地址地址先显示地址和单元内容等待输入修改的内容输入修改的内容检查和修改寄检查和修改寄存器的内容存器的内容R 显示全部寄存器和标志位及下条指令单元十六进制数码和反汇编格式和反汇编格式反汇编反汇编U 地址地址从指定地址开始反汇编16个或32个字节个字节 汇编汇编 A 地址地址从指定地址直接输入语句并从指定指定汇编装入内存从指定指定汇编装入内存跟踪跟踪 T =地址=地址 从指定地址开始逐条跟踪指令运行运行 G =地址=地址无断点,执行正在调试的指令执行正在调试的指令 退出退出Q退出DEBUG 返回DOS3、实验过程①、在edit 环境,写字板,记事本等中输入源程序。

分支程序实验实验报告

分支程序实验实验报告

一、实验目的1. 理解分支程序的概念和作用。

2. 掌握C语言中if语句、switch语句的使用方法。

3. 能够根据实际需求,合理运用分支程序解决问题。

二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 语言:C语言三、实验内容1. 使用if语句实现一个简单的分支程序。

2. 使用switch语句实现一个多分支程序。

3. 结合if语句和switch语句,编写一个综合性的分支程序。

四、实验步骤1. 使用if语句实现一个简单的分支程序(1)创建一个新的C语言项目,命名为“分支程序实验”。

(2)在主函数中,定义一个变量score用于存储用户输入的分数。

(3)使用scanf函数获取用户输入的分数。

(4)使用if语句判断分数所在的范围,并输出相应的评价。

(5)编译并运行程序,验证分支程序是否正确实现。

2. 使用switch语句实现一个多分支程序(1)在主函数中,定义一个变量num用于存储用户输入的数字。

(2)使用scanf函数获取用户输入的数字。

(3)使用switch语句根据用户输入的数字输出相应的结果。

(4)编译并运行程序,验证多分支程序是否正确实现。

3. 结合if语句和switch语句,编写一个综合性的分支程序(1)在主函数中,定义两个变量num和score。

(2)使用scanf函数分别获取用户输入的数字和分数。

(3)使用if语句判断数字是否在1到7之间,并使用switch语句根据分数输出相应的评价。

(4)编译并运行程序,验证综合性分支程序是否正确实现。

五、实验结果与分析1. 使用if语句实现简单的分支程序当用户输入分数为85时,程序输出“优秀”;输入分数为70时,程序输出“良好”;输入分数为60时,程序输出“及格”;输入分数低于60时,程序输出“不及格”。

2. 使用switch语句实现多分支程序当用户输入数字1时,程序输出“一”;输入数字2时,程序输出“二”;以此类推,直到输入数字7时,程序输出“七”。

实验三---分支结构程序设计实验报告-

实验三---分支结构程序设计实验报告-

XXX大学软件类实验报告
课程名称:C语言程序设计学号:
姓名:
班级:
指导教师:
开课学期:
学院:
XXX大学教务处
4.switch语句。

四、实验过程及内容:(运行结果请抓图到对应题目的下方)
1. 先分析以下程序,写出运行结果,再上机检验。

实验结果:
2.先分析以下程序,写出运行结果,再上机检验。

实验结果:
3.先分析以下程序,写出运行结果,再上机检验。

实验结果:
4. 程序改错题。

以下程序的功能是将a、b、c三个数从小到大进行排序,即使得a≤b≤c.。

程序中有一些错误,试将其改正并上机验证。

实验结果:
5. 程序填空题。

以下程序的功能是:从键盘接收一个字符,如果是小写英文字母,则将其转换为相应的大写字母;如果是大写英文字母,则将其转换为相应的小写字母;如果是其他字符,则不做转换。

填空将程序补充完整并上机验证。

实验结果:
6. 编程题。

根据以下分段函数计算y的值,x的值由键盘输入。

保留两位小数
输入格式:-2
输出格式:y=-2.00
实验代码:
实验结果:
7.输入一个正整数作为年份,编程判断该年是否为闰年。

若是输出“Yes”,否则输出“No”。


示:能被4整除,但不能被100整除的年份;或者能被400整除的年份。

实验代码:
实验结果:。

循环程序设计 实验报告

循环程序设计 实验报告

循环程序设计实验报告循环程序设计实验报告引言:循环程序设计是计算机科学中一项重要的技术,它能够让计算机在特定条件下重复执行一段代码,从而实现特定的功能。

本实验旨在通过编写循环程序,探索循环程序设计的原理和应用。

实验目的:1. 理解循环程序设计的概念和原理;2. 学会使用不同类型的循环结构,如for循环、while循环和do-while循环;3. 掌握循环程序设计在问题解决中的应用。

实验过程:1. 实验环境的搭建在实验开始前,我们需要搭建一个适合编写和运行循环程序的环境。

选择一款适合的集成开发环境(IDE),如Visual Studio、Eclipse等,并安装相应的编程语言环境,如C++、Java等。

2. 编写基本的循环程序首先,我们从最简单的循环结构开始,即for循环。

以C++语言为例,我们可以使用以下代码编写一个简单的for循环程序:```cpp#include <iostream>int main() {for (int i = 0; i < 10; i++) {std::cout << "Hello, World!" << std::endl;}return 0;}```上述代码中,for循环的三个部分分别表示循环变量的初始化、循环条件和循环变量的更新。

通过这个简单的循环程序,我们可以在控制台输出10次"Hello, World!"。

3. 使用循环解决实际问题循环程序设计在解决实际问题时非常有用。

我们可以通过循环来处理一系列数据、实现复杂的算法等。

下面以一个实际问题为例,演示如何使用循环程序设计进行问题求解。

假设有一个整数数组,我们需要找到数组中的最大值。

我们可以使用for循环遍历整个数组,并通过比较来找到最大值。

以下是一个使用C++语言实现的示例代码:```cpp#include <iostream>int main() {int arr[] = {5, 2, 8, 3, 1};int max = arr[0];for (int i = 1; i < 5; i++) {if (arr[i] > max) {max = arr[i];}}std::cout << "The maximum value is: " << max << std::endl;return 0;}```通过以上代码,我们可以找到数组中的最大值,并将其输出到控制台。

汇编语言程序设计实验报告二(分支循环程序实验)

汇编语言程序设计实验报告二(分支循环程序实验)

汇编语言程序设计实验报告二(分支循环程序实验)一、实验目的1、掌握分支程序、循环程序的设计方法。

2、熟悉DEBUG程序的使用方法。

3、掌握汇编语言程序的编辑、汇编、连接以及调试过程。

二、实验内容1、编写一程序,将内存中某一区域的数据传送到另一个区域中(要求用循结构,不考虑数据块重叠问题)。

2、编写一程序,将内存中某一区域的数据传送到另一区域(要求考虑数据块重叠问题)。

三、实验准备1、预习数据传送指令,熟悉分支和循环程序设计方法。

2、预习DEBUG调试程序的使用方法。

3、根据实验内容要求,编写好实验源程序。

四、实验步骤1、用QE或其它编辑软件,在计算机上编辑源程序,使其正确无误。

2、汇编、连接源程序,产生.EXE可执行文件。

3、运行程序。

(1) 进入DEBUG。

打入DEBUGT MYPROG.EXE。

MYPROG为所编程序的文件名。

(2) 先用G命令连续剧连续执行程序,程序执行完毕后,观察运行结果。

如果执行后是对的,说明程序编写是正确的,如果结果不对,说明程序有错误,则执行下一步。

(3) 检查程序。

在程序中设置若干断点,以便杳出错误所在。

(4) 采用单步命令T或执行程序,观察各寄存器和存储单元内容,以便找到错误之处。

五、实验报告要求1、列出程序清单,并给出程序流程图。

2、总结实现数据传送的几种方法,指出它们的区别。

开始3、分析实验中所遇到的一些问题,分析错误原因。

4、说明本实验中是如何使用DEBUG进行调试的。

CX、SI、DI置初值六、流程图勤开始设置增量方式CX、SI、DI置初值保存SI内容AL [SI] SI SI+源块长度[DI] AL N SI>DIYSI SI+1 恢复SI内容恢复SI内容DI DI+1CX CX-1 设置减量方式N CX=0, SI指向源块末尾DI指向目的块末尾Y结束 [DI] [SI]题一流程图 N 传完了吗, 书馆 Y结束题二流程图七、程序清单题一程序清单:STACK SEGMENT STACK ‘STACK’DB 100 DUP(0)STACK ENDSDATA SEGMENT PARA ‘DATA’SOUR DB 0、1、2、3、4、5、6、7、8、9 DEST DB 10 DUP(,)DB ‘$’DATA ENDSSEGMENT PARA‘CODE’ASSUME CS:CODEMAIN PROC FARSTART: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV CX,10MOV SI,offset SOURMOV DI, offset DESTAGAIN: MOV AL,[SI]MOV [DI],ALINC SIIN DILOOP AGAINMOV DX,offset DESTMOV AH,09HINT 21HRETMAIN ENDPCODE ENDSEND START题二程序清单:DATA SEGMENT PARA ‘DATA’STRG DB ‘ABCDEFGHIJKLMNOP’STG1 EQU STRG+4STG2 EQU STHG+8STRSE EQU 6DATA ENDSSTACK SEGMENT PARA ‘CODE’DB 100 DUP(0) STACK ENDSCODE SEGMENT PARA ‘CODE’ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK PROC FARSTART: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV ES,AXMOV CX,STRSEMOV SI,OFFSET STG1MOV DI,OFFSET STG2CLDPUSH SIADD SI,STRSE-1CMP SI,DIPOP SIJL MOVESTDADD SI,STRSE-1ADD DI,STRSE-1 MOVE: REP MOVSB RETMAIN ENDPCODE ENDSEND START。

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

实验名称 分支与循环程序设计实验指导教师 罗志祥专业班级 光电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次,清零。

其中对端口显示的秒数、分钟数、时间数,进行二进制修正。

利用循环来设计延时程序,合理计算语句长度,以及循环次数。

程序运行时修正P3.0的值,可以实现暂停计数和继续的功能。

提高部分(选做):1)实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。

利用P3.7状态选择加、减计数方式。

2)利用P3口低四位状态控制开始和停止计数,控制方式自定。

初始化P1、P2,,计数循环中插入一秒延时程序。

R1存千百位、R2存个十位,P3.7=0时,进行加1计数,取出R2中的数存于A ,对A 加1,同时进行十进制修正,存于P2,达到99,则进位对千百位进行加1。

P3.7=1时,进行减一操作,取出R1中的数存于A ,对A 减1,同时进行十进制修正,存于P1,达到0,则对P2,对R2进行减一。

计数循环前判断P3.0的值,当P3.0=1时,开始计数,P3.0=0时,原地循环,停止计数,直到P3.0=1,可以实现随时停止与开始。

三、资源分配1. 设有8bits 符号数X 存于外部RAM 单元,按以下方式计算后的结果Y 也存于外部RAM 单元,请按要求编写完整程序。

264/2106410X X Y X X X X ⎧≥⎪=<<⎨⎪≤⎩ 当 当 当X 存于片外1000HY 存于片外1001H 、1002H其中,求平方时,低位存于1001H,,高位存于1002H除二时,商存于1001H,,余数存于1002H2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD 码的形式)。

P3.0为低电平时开始计时,为高电平时停止计时。

设计1s 延时子程序(延时误差小于10us ,晶振频率12MHz )。

P0输出小时数P1输出分钟数P2输出秒数R0小时循环计数R1分钟循环计数R2秒循环计数R3保存分钟数R4保存小时数提高部分(选做):1)实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。

利用P3.7状态选择加、减计数方式。

2)利用P3口低四位状态控制开始和停止计数,控制方式自定。

P1输出千百位P2输出个十位P3.0 计数开始与停止控制P3.7 加1减1计数切换R1存千百位R2存个十位四、流程图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)实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。

利用P3.7状态选择加、减计数方式。

2)利用P3口低四位状态控制开始和停止计数,控制方式自定。

五、源代码 (含文件头说明、语句行注释)1. 设有8bits 符号数X 存于外部RAM 单元,按以下方式计算后的结果Y 也存于外部RAM 单元,请按要求编写完整程序。

264/2106410X X Y X X XX ⎧≥⎪=<<⎨⎪≤⎩ 当 当 当 File name: task1.asm Description: 对8bits 符号数X ,对于不同的X 进行不同的运算操作Date: 2016.10.13Designed 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 ACC.7,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码的形式)。

P3.0为低电平时开始计时,为高电平时停止计时。

设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。

3.File name: task2.asmDescription: 24小时制电子时钟Date: 2016.10.13Designed 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 P3.0,$ ;p3.0=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=1000001 DELAY3: MOV R6,#90 ;t=1.000001sDELAY2: MOV R5,#201DELAY1: NOPNOPNOPDJNZ R5,DELAY1NOPNOPDJNZ R6,DELAY2NOPNOPNOPNOPNOPNOPDJNZ R7,DELAY3RETEND提高部分(选做):1)实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。

利用P3.7状态选择加、减计数方式。

2)利用P3口低四位状态控制开始和停止计数,控制方式自定。

Description: 实现4位十进制加、减1计数Date: 2016.10.13Designed by: DYHSource used:P1输出千百位P2输出个十位P3.0 计数开始与停止控制P3.7 加1减1计数切换R1存千百位R2存个十位ORG 0000HMOV P1,#0 ;输出千百位MOV P2,#0 ;输出个十位MOV R1,#0 ;存千百位MOV R2,#0 ;存个十位LJMP MAINORG 0100HMAIN: JB P3.0,$ ;计数开始与停止控制JNB P3.7,ADD1 ;加1减1,模式选择SUB1: MOV P1,#99MOV P2,#99MOV R1,#99LOOP2: MOV R2,#99LOOP1: JB P3.0,$JNB P3.7,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 P3.0,$JB P3.7,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=1000001 DELAY3: MOV R6,#90 ;t=1.000001sDELAY2: MOV R5,#201DELAY1: NOPNOPNOPDJNZ R5,DELAY1NOPNOPDJNZ R6,DELAY2NOPNOPNOPNOPNOPNOPDJNZ R7,DELAY3RETEND六、程序测试方法与结果1. 设有8bits 符号数X 存于外部RAM 单元,按以下方式计算后的结果Y 也存于外部RAM 单元,请按要求编写完整程序。

相关文档
最新文档