实验四分支和循环程序设计实验(精)

合集下载

循环程序设计实验报告

循环程序设计实验报告

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

实验要求:
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. 编译并运行代码,观察程序的输出结果。

汇编语言-实验四-循环分支程序设计

汇编语言-实验四-循环分支程序设计

实验四循环分支程序设计一&实验目的1、熟悉汇编语言源程序的编辑、汇编、连接及调试过程。

2、掌握循环及分支程序的设计方法;3、学会针对不同的问题,选用不同的循环分支结构设计方法;二&实验环境微型计算机一台DOS或WINDOWS操作系统,MASM开发套件。

三&实验要求1、使用正确的指令格式和程序结构编写实验内容要求的所有程序;2、对编写或改写的程序进行汇编连接时,注意对错误信息的处理;3、熟悉源程序汇编、连接的使用方法。

四&实验内容1、使用程序1掌握汇编语言程序上机过程,2、阅读程序2,理解程序功能并上机运行,使用debug检验结果。

3、编写一个程序,判别键盘上输入的字符;若是1-9字符或A-Z ,则显示之;若为a-z字符,均显示“A-Z”;若是<ESC>(其ASCII码为1BH),则结束程序。

4、改写任务三中的程序:输入小写字母a时,显示内容为aA*输入小写字母a时,显示内容为a***输入小写字母a时,显示内容为aa***五&实验步骤1、用EDIT编辑软件,编写.ASM源程序。

2、对其进行汇编及连接,产生.EXE文件。

3、在DOS下运行.EXE文件进行。

4、实验程序清单1)程序1:stack segmentdw 512 dup(?)stack endsdata segmentstring db 'Hello, Everybody !','$'data endscode segmentassume cs:code,ds:data,ss:stackstart: mov ax,datamov ds,axmov dx,offset stringmov ah,9int 21hmov ax,4c00hint 21hcode endsend start2)程序2data segmentx db 20hy dw ?data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov al,xmov bl,10xor ah,ahshl ax,1mov bx,axmov cl,2shl ax,cladd ax,bxmov y,axmov ax,4c00hint 21hcode endsend start3)程序3:data segmentmessage db 'This is a sample program of keyboard and disply' db 0dh,0ah,'Please strike the key!',0dh,0ah,'$'data endscode segmentassume cs:code,ds:datastart: mov ax,datamov dx,offset messagemov ah,9int 21hagain: mov ah,1int 21hcmp al,1bhje exitcmp al,61hjc ndcmp al,7ahja ndand al,11011111bnd: mov dl,almov ah,2int 21hjmp againexit: mov ah,4chint 21hcode endsend start4)改写程序1:data segmentmessage db 'This is a sample program of keyboard and disply' db 0dh,0ah,'Please strike the key!',0dh,0ah,'$'data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,offset messagemov ah,9int 21hagain: mov ah,1int 21hcmp al,1bhje exitcmp al,61hjc ndcmp al,7ahja ndand al,11011111bmov ah,2int 21hmov al,'*'nd: mov dl,almov ah,2int 21hjmp againexit: mov ah,4chint 21hcode endsend start5)改写程序2:data segmentmessage db 'This is a sample program of keyboard and disply' db 0dh,0ah,'Please strike the key!',0dh,0ah,'$'data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,offset messagemov ah,9int 21hagain: mov ah,1int 21hcmp al,1bhje exitcmp al,61hjc ndcmp al,7ahja ndmov al,'*'mov cx,2ok: mov dl,almov ah,2int 21hloop oknd: mov dl,almov ah,2int 21hjmp againint 21hcode endsend start6)改写程序3:data segmentmessage db 'This is a sample program of keyboard and disply' db 0dh,0ah,'Please strike the key!',0dh,0ah,'$'data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,offset messagemov ah,9int 21hagain: mov ah,1int 21hcmp al,1bhje exitcmp al,61hjc ndcmp al,7ahja ndmov dl,almov ah,2int 21hmov al,'*'mov cx,2ok: mov dl,almov ah,2int 21hloop oknd: mov dl,almov ah,2int 21hjmp againexit: mov ah,4chint 21hcode endsend start六&思考题:编写一个程序,显示AL寄存器中的两位十六进制数。

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

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

实验名称 分支与循环程序设计实验指导教师 罗志祥专业班级 光电1406 姓名 段昳晖 学号 U2014***** 联系电话 137********一、任务要求1. 设有8bits 符号数X 存于外部RAM 单元,按以下方式计算后的结果Y 也存于外部RAM 单元,请按要求编写完整程序。

264/2106410X X Y X X X X ⎧≥⎪=<<⎨⎪≤⎩ 当 当 当 2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD 码的形式)。

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

设计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码的形式)。

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

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

主程序设计三层循环,分别对应时、分、秒,最内层安放一秒延时程序。

利用R0、R1、R2计数,R3保存分钟数、R4保存小时数,最内层循环60次,中循环循环1次,中循环60秒,外循环循环1次,外循环循环24次,清零。

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

循环程序设计 实验报告

循环程序设计 实验报告

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

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

实验目的: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;}```通过以上代码,我们可以找到数组中的最大值,并将其输出到控制台。

四《C语言程序设计》实验四选择结构程序设计实验目的1、掌握分支

四《C语言程序设计》实验四选择结构程序设计实验目的1、掌握分支

四《C语言程序设计》实验四选择结构程序设计一、实验目的1、掌握分支语句的格式和功能。

2、掌握选择结构的程序设计。

3、掌握分支结构的嵌套。

二、实验内容与要求1、编程,计算下列分段函数值:x2+3x-4,x<0且x≠-4f(x)= x2-6x+5,0=x<10且x≠1及x≠5x2-4x-1,其他要求如下:(1)用if语句实现分支。

自变量x与函数值均采用双精度类型。

(2)自变量x值从键盘输入,且输入前要有提示信息。

(3)数据的输出格式采用以下形式:x=输入值,f(x)=计算值(4)分别以-3.0,-1.0,0.5,1.5,2.5,3.5,4.5,5.5为自变量,运行该程序。

记录结果。

(5)源程序以sy4_1.c存盘。

2、编程,将一个百分制成绩转换成等级制成绩。

具体要求如下:(1)百分制与等级制的对应关系如下:(3)用键盘输入百分制成绩,输入前要有提示信息。

(4)要能判断输入数据的合理性,对于不合理的数据应输出错误信息。

(5)输出结果中应包含百分制成绩和成绩等级。

(6)分别输入成绩-10,99,60,85,70,101,45,运行该程序。

记录结果。

(7)源程序以sy4_2.c存盘。

三、思考题1、实现选择结构程序设计的方法有哪几种?各有什么特点?适用条件是什么?2、如何设置选择结构中的判断条件?它在程序设计中的意义何在?实验五循环结构程序设计(1)一、实验目的1、掌握循环的概念。

2、掌握三种常用的循环语句的格式和功能。

3、初步掌握循环结构的编程方法。

二、实验内容与要求1、编程,分别利用三种循环语句,求1+2+3+…50之和。

要求如下:(1)输出计算结果;数据的输出格式采用以下形式:1+2+3+…50=计算值(2)源程序分别以sy5_1.c、sy5_2.c、sy5_3.c存盘。

2、编程,穷举算法解百马百担问题(有100匹马驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问有大、中、小马各多少?)要求如下:(1)输出计算结果;在数据输出之前应有提示信息。

实验四 循环结构程序设计

实验四  循环结构程序设计
/* 求最大公约数算法1 */
#include "stdio.h"
void main( )
{
}
2.从整数1开始向上找,直至m和n中较小的数,每找到一个能同时被m和n整除的整数,将其存入一个变量中,当循环结束时,变量中存放的即为最大公约数。设n为m和n中较小的数,则如下程序段可实现:
for(k=1; k<=n; k++) if(m%k==0 && n%k==0) x=k;
}
2.字符常量’0’与数值常量0是不同的。
(六)下面程序的功能是:计算1到100之间的奇数之和及偶数之和,并输出。请在程序中的横线上填入适当的内容,将程序补充完整并运行。
/* c4-6.c */
/* 计算1到100之间的奇数之和及偶数之和 */
#include "stdio.h"
void main( )
六、思考题
(一)求两个正整数x和y的最大公约数,请填空。
/* 求最大公约数程序 */
#include "stdio.h"
void main( )
{ int x,y,t,i;
printf("请输入两个数:");
scanf("%d,%d",&x,&y); /*注意scanf语句中间用“,”隔开*/
if(x > y){t = x; x = y; y = t;}
程序的基本结构如下:
/* c4-9.c */
/* 按条件求数列和 */
#include "stdio.h"
void main( )
{定义变量;
变量赋初值;

实验四分支程序与循环程序

实验四分支程序与循环程序

实验四 分支程序与循环程序一、实验目的1、熟悉转移指令的功能与使用;2、掌握偏移量的计算方法;3、熟悉分支程序设计和调试方法;4、进一步掌握堆栈指令的使用;5、熟悉循环程序设计和调试方法。

二、实验仪器1、DVCC-598JH 单片开发机一台;2、WD-5型直流稳压源一台。

三、实验预习1、认真阅读实验指导书有关内容,明确实验目的、内容和操作步骤;2、对实验中的程序和指令进行手工汇编;3、复习实验中相关指令的功能;4、复习偏移量的计算及OFST 键的操作方法。

四、实验内容 1、分支程序设计分支程序是根据不同的条件,执行不同的程序段,也称条件分支程序。

程序一:比较片内RAM 40H 和41H 单元中的两个无符号数,将较大数存入40H 单元,较小数存入41H 单元。

)0()0(∠≥⎩⎨⎧+-=a a ba b a y参考程序:ORG1000HSTART : MOV A ,40H CLRCSUBB A ,41HJNCW AITMOV A,40HXCH A,41HMOV 40H,AW AIT:SJMP $END程序二:设a数存放在累加器A中,b数存放在寄存器B中,求下列算式的y值,并将结果存入累加器A中。

参考程序:ORG 1000HJB ACC.7,NUSCLR CSUBB A,BSJMP DONENUS:ADD A,BDONE:SJMP DONEEND2、循环程序设计在实际应用中,往往需要多次反复执行某种相同的操作,而只是参与操作的操作数不同,这时就可以采用循环程序结构。

它可以缩短指令数,减少程序所占的内存空间。

程序三:数据块传送将片外RAM中地址为4500H~450FH中的数据块传送到4700H~470FH单元中。

参考程序:地址目的程序源程序ORG 1000H1000 7A00 MOV R2,#00H1002 7B45 MOV R3,#45H1004 904700 MOV DPTR,#4700H1007 C083 LOOP:PUSH DPH1009 C082 PUSH DPL100B 8A82 MOV DPL,R2100D 8B83 MOV DPH,R3100F E0 MOVX A,@DPTR1010 D082 POP DPL1012 D083 POP DPH1014 F0 MOVX @DPTR,A1015 A3 INCDPTR1016 0A INCR21017 BA10ED CJNE R2,#10H,LOOP101A 80FE SJMP $END五、实验步骤1、认真阅读实验参考程序并分析程序运行后的理论结果;2、输入程序并检查输入是否正确;3、根据已知条件输入程序执行前的原始数据;4、执行程序,检查并记录结果;六、练习1、将ASCII码转化为十六进制数。

实验四分支和循环程序设计实验(精)

实验四分支和循环程序设计实验(精)

实验四分支和循环程序设计实验一、实验要求和目的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是否有实根。

分支和循环程序实验(精)

分支和循环程序实验(精)

课程名称:实验项目:实验地点:专业班级:学生姓名:指导教师:本科实验报告计算机硬件技术基础分支和循环程序实验学号:12年 4 月 22 日一、实验目的和要求1.通过分支程序设计、循环程序设计实验,掌握无条件转移指令、条件转移指令的格式、功能及使用方法。

2.掌握分支程序的结构、单分支和多分支程序的设计方法。

3.了解循环程序的基本结构和控制循环的方法。

二、实验内容与要求要求学生按教师指定题目进行汇编语言程序设计,并上机调试,以实现较复杂的程序设计。

1. 已知X、Y、Z、MAX为16位的带符号数,求三个数中最大值,结果存入MAX单元。

2. 求10个学生成绩中的最高成绩,结果存入MAX字节单元中,已知成绩为字节型。

第一题程序:STACK SEGMENT STACKDB 200 DUP(0)STACK ENDSDATA SEGMENTX DW 10Y DW -20Z DW 30MAX DW 2 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE, SS:STACK,DS:DATABEGIN:MOV AX, DATAMOV DS, AXMOV AX,XMOV BX,YMOV CX,ZCMP AX,BXJG S1CMP BX,CXJG S3MOV MAX ,BXS3: MOV MAX ,AXS1: CMP AX,CXJG S2MOV MAX,CXS2: MOV MAX , AXCODE ENDSEND BEGIN第二题程序:SSEG SEGMENTDB 200 DUP(0)SSEG ENDSDATA SEGMENTVAR DB 1,2,3,4,5,6H,13,23,45,32,12H N EQU $-VARDATA ENDSCODE SEGMENTASSUME CS:CODE,SS:SSEG,DS:DATA BG: MOV AX,DATA MOV DS,AXMOV CX,N-1MOV SI, 0MOV BH ,VAR[SI] JCXZ LASTAGIN: INC SICMP BH,VAR[SI]JAE NEXTMOV BH , VAR[SI]NEXT: LOOP AGINLAST: MOV AH ,4CHINT 21HCODE ENDSEND BG五、实验结果与分析(必填)第二题结果。

微机实验分支和循环程序设计实验

微机实验分支和循环程序设计实验

微机实验分支和循环程序设计实验微机实验三分支和循环程序设计实验一、分支程序设计实验1.实验目的1.掌握分支程序的结构。

2掌握分支程序的设计、调试方法。

2.实验设备微机一台3.内容设计一数据块间的搬移程序代码:DATA SEGMENT ;定义数据段ORG 2520H ;输入原数据存放地址 X DB 1,2,3,4,5,6,7 ;1234567的赋值COUNT EQU $-X ;计算数据串长度 ORG 2525H ;输入目的数据存放地址 Y DB 7 DUP(0) ;定义目的数据长度 DATA ENDS ;数据段结束STACK SEGMENT PARA STACK 'STACK' ;定义堆栈段 STAPN DB 100 DUP(?) ;定义100个字节空间 TOP EQU LENGTH STAPN STACK ENDSCODE SEGMENT ;定义代码段MAIN PROC FAR ;过程定义语句ASSUME CS:CODE,DS:DATA,SS:STACK ;段寄存器分别与哪些段有关START:MOV AX,STACK;设置堆栈寄存器MOV SS,AXMOV SP,TOPPUSH DS ;DS入栈保护SUB AX,AX ;AX=0PUSH AX ;段内偏移量0入栈MOV AX,DATA ;数据段基址赋给AXMOV DS,AXLEA AX,X ;取X的地址偏移量LEA BX,Y ;取Y的地址偏移量CMP AX,BX ;比较大小JC FE ;如果AX小于BX,则执行FEJMP FS ;否则执行FSFS: MOV SI,0 ;从前往后复制MOV DI,0MOV CX,COUNT ;确定复制次数CIRCLE1:MOV AL,X[SI] ;MOV不能实现两存储空间赋值,所以先把原始数据存入ALMOV Y[DI],AL ;将数据赋给YINC SI ;SI指向下一个数据INC DI ;DI指向下一个数据LOOP CIRCLE1 ;循环赋值JMP END1 ;循环结束退出 FE: MOV SI,COUNT ;从末尾开始赋值MOV DI,COUNTDEC SI ;指向最后一个数据DEC DIMOV CX,COUNT ;确定循环次数CIRCLE2: MOV AL,X[SI] ;MOV不能实现两存储空间赋值,所以先把原始数据存入ALMOV Y[DI],AL ;将数据赋给YDEC SI ;SI指向下一个数据DEC DI ;DI指向下一个数据LOOP CIRCLE2 ;循环赋值JMP END1 ;循环结束退出END1: RET ;返回dos MAIN ENDP ;MAIN过程结束CODE ENDS ;代码段结束END MAIN ;源代码结束运行结果:若从后往前传:若从前往后传:二、循环程序设计实验1.实验目的(1)加深对循环结构的理解。

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

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

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

MATLAB实验四 选择结构和循环结构程序设计

MATLAB实验四 选择结构和循环结构程序设计

实验四 选择结构和循环结构程序设计实验目的:1.掌握建立和执行M 文件的方法 2.掌握利用if 语句实现选择结构的方法 3.掌握利用switch 语句实现多分支选择结构的方法 4.掌握利用for 语句实现循环结构的方法 5.掌握利用while 语句实现循环结构的方法 6. 熟悉利用向量运算来代替循环操作的方法实验内容:1. 求分段函数的值。

3及2其它,1x 且50,653且0,6222≠⎪⎩⎪⎨⎧--≠<≤+--≠<-+=x x x x x x x x x x y用if 语句实现,分别输出x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0时的y 值。

x=input('请输入x 的值:x=');if(x<0&x~=-3)y=x.*x+x-6elseif(x>=0&x<5&x~=2&x~=3)y=x.*x-5.*x+6elsey=x.*x-x-1end请输入x 的值:x=[-5.0 -3.0 1.0 2.0 2.5 3.0 5.0]y =29.0000 11.0000 -1.0000 1.0000 2.7500 5.0000 19.00002. 输入一个百分制成绩,要求输出成绩等级A 、B 、C 、D 、E 。

其中90分~100分为A ,80分~89分为B ,70分~79分为C ,60分~69分为D ,60分以下为E 。

要求:a) 分别用if 语句和switch 语句实现。

If 语句x=input('请输入分数:')if(x<=100&x>=90)disp('A')elseif(x>=80&x<=89)disp('B')elseif(x>=70&x<=79)disp('C')elseif(x>=60&x<=69)disp('D')elseif(x<60)disp('E')end请输入分数:95x =95Aswitch语句c=input('请输入分数:')switch ccase num2cell(90:100)disp('A')case num2cell(80:89)disp('B')case num2cell(70:79)disp('C')case num2cell(60:69)disp('D')case num2cell(0:59)disp('E')end请输入分数:83c =83Bb)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。

分支与循环程序设计实验

分支与循环程序设计实验

一. 实验目的及实验环境实验目的:实验目的:1、掌握分支程序的设计方法。

、掌握分支程序的设计方法。

2、掌握宏定义及宏调用的基本方法。

、掌握宏定义及宏调用的基本方法。

3、了解小写和大写字母的ASCII 码表示及其转换方法。

了解数字及其它字符在的ASCII 码表示方法。

码表示方法。

4、掌握循环程序的设计方法。

、掌握循环程序的设计方法。

5、掌握比较指令、转移指令和循环指令的使用方法。

6、进一步掌握调试工具的使用方法、进一步掌握调试工具的使用方法 实验环境:实验环境:80x86系列微型计算机一台以及进行汇编语言程序设计所必需的编程工具(文本编辑器、(文本编辑器、ASM.EXE ASM.EXE ASM.EXE、、LINK.EXE LINK.EXE、、DEBUG.EXE DEBUG.EXE)) 二. 实验内容 1、 从键盘输入一字符,判断该字符是小写字母、大写字母、数字或其它字符。

若输入为小写字母,显示“若输入为小写字母,显示“You Input a Lowercase Letter You Input a Lowercase Letter You Input a Lowercase Letter!!”;若输入为大写字母,写字母,显示显示显示““You Input a Uppercase Letter Letter!!”; 若输入为数字,若输入为数字,显示显示“You Input a Digit Input a Digit!!”; 若输入为其它字符,显示“若输入为其它字符,显示“You Input Other Letter You Input Other Letter You Input Other Letter!!”。

2、计算1+2+……n=?n=?,其中,其中n 通过键盘输入。

要求在屏幕上提供如下信息:上提供如下信息:Please input a number(1~627): ;出现此信息后通过键盘输入一个小于628的无符号整数1+2+1+2+……..n=sum ;其中n 为用户输入的数,为用户输入的数,sum sum 为所求的累加和为所求的累加和 程序运行情况如下图所示(说明:图中所运行程序允许累加和不大于一个32位二进制数所能表示的范围)。

实验四分支循环结构程序设计

实验四分支循环结构程序设计

实验四、分支循环结构程序设计一、实验目的1.通过本实验,加深对循环控制结构有关概念的理解。

2.熟练掌握while、do-while和for三种循环控制语句的特点,掌握循环结构程序设计和调试方法。

3.掌握二重循环结构程序的设计方法。

二、实验内容1.用while循环实现数据统计问题。

数据统计问题:从键盘输入一批任意数量的整数,统计其中不大于100的非负数数值的个数。

2.编写并调试程序,使用do-while循环控制语句实现上面的数据统计问题。

调试数据仍参照上面给出的几种情况设计使用。

3.编写并调试程序,使用for循环控制语句实现上面的数据统计问题。

4.阶乘累加问题。

编写程序,求1+2!+3!+…+n!的值(习题5.9)。

三、实验指导1.用while循环实现数据统计问题。

⑴编程分析由于输入数据个数是不确定的,因此每次执行程序时,循环次数都是不确定的。

在进行程序设计时,确定循环控制的方法是本实验的一个关键问题。

循环控制条件可以有多种确定方法:①使用一个负数作为数据输入结束标志。

②输入一个数据后通过进行询问的方式决定是否继续输入下一个数据。

⑵参考程序l 参考程序一/* 使用负数作为数据输入结束标志的程序 */#include "stdio.h"void main(){int m,counter=0;while(1){printf("请输入一个整数:");scanf("%d",&m);if(m<0)break;if(m<=100)counter++;printf("\n");}printf("符合要求的整数个数为: %d\n",counter);}l 参考程序二/* 通过进行询问的方式决定是否继续输入下一个数据的程序 */#include "stdio.h"void main(){int m,counter=0;char ask;while(1){printf("请输入一个整数:");scanf("%d",&m);getchar();if(m>=0&&m<=100)counter++;printf("继续输入下一个数据?(Y/N)");ask=getchar();getchar();if(ask!='y'&&ask!='Y')break;printf("\n");}printf("符合要求的整数个数为: %d\n",counter);}⑶程序调试这里只对“参考程序一”的调试数据进行设计。

循环程序设计实验报告

循环程序设计实验报告

循环程序设计实验报告循环程序设计实验报告引言:循环程序设计是计算机编程中的重要概念之一,它允许程序重复执行一段代码,从而提高代码的可重用性和效率。

本实验旨在通过编写循环程序,加深对循环结构的理解,并掌握循环程序设计的基本技巧和方法。

实验目的:1. 理解循环结构的概念和原理;2. 掌握使用循环结构解决实际问题的方法;3. 学会编写循环程序,并能正确运行和调试。

实验过程:在本次实验中,我们选择了一个经典的循环程序设计问题:计算1到100之间所有偶数的和。

首先,我们需要定义一个变量来保存偶数的和,命名为sum。

然后,我们使用一个循环结构来遍历1到100之间的所有数字,判断每个数字是否为偶数,如果是偶数,则将其加到sum中。

最后,输出sum的值即可。

在编写代码之前,我们需要选择合适的循环结构。

在本次实验中,由于我们已经明确知道循环次数为100次,因此可以选择使用for循环结构。

for循环结构由三部分组成:初始化部分、循环条件和循环体。

初始化部分用于初始化循环变量,循环条件用于判断是否继续执行循环,循环体则是需要重复执行的代码块。

接下来,我们可以开始编写代码了。

首先,我们定义一个变量sum,并初始化为0。

然后,使用for循环结构遍历1到100之间的所有数字。

在循环体中,我们使用if语句判断当前数字是否为偶数,如果是偶数,则将其加到sum中。

最后,循环结束后,输出sum的值。

代码如下所示:```int sum = 0; // 定义变量sum并初始化为0for(int i = 1; i <= 100; i++) { // 使用for循环遍历1到100之间的所有数字if(i % 2 == 0) { // 判断当前数字是否为偶数sum += i; // 将当前偶数加到sum中}}cout << "1到100之间所有偶数的和为:" << sum << endl; // 输出sum的值```实验结果:经过编译和运行,我们得到了如下结果:1到100之间所有偶数的和为:2550。

计算机硬件技术基础实验教程答案(重庆大学)

计算机硬件技术基础实验教程答案(重庆大学)

计算机硬件技术基础实验教程答案 实验一:简单程序设计实验(1)编写一个 32 位无符号数除法的程序,要求将存放在 NUM1 中的 32 位无符号数与存放 在 NUM2 中的 16 位无符号数相除,结果存放在 NUM3 和 NUM4 中。

程序流程图略。

参考源程序:DATASEGMENTNUM1 DD 2A8B7654H NUM2 DW 5ABCH NUM3 DW ? NUM4 DW ?DATAENDSCODESEGMENTASSUME DS:DATA, CS:CODESTART: MOV AX,DATA;数据段寄存器初始化MOV DS,AXMOV AX, WORD PTR NUM1 MOV DX, WORD PTR NUM1+2 DIV NUM2 MOV NUM3,AX MOV NUM4,DX MOV AH,4CH ;正常返回DOS 系统INT 21HCODEENDS END START(2)编写一个拆字程序。

要求将存放在 ARY 单元的 2 位十六进制数 X 1X 2 拆为 X 1 和 X 2 两 部分,并以 0X 1 和 0X 2 的形式分别存入 ARY+1 和 ARY+2 单元中。

程序流程图略。

参考源程序:DATA SEGMENTARY DB 2AH,?,?DATA ENDSCODESEGMENTASSUME DS:DATA, CS:CODESTART: MOV AX,DATAMOV DS,AXMOV SI,OFFSET ARY ;取ARY 的偏移地址 MOV AL,[SI];取16进制数至ALMOV BL,ALAND AL,0F0H ;取16进制数的高四位,即X1SHR AL,4MOV [SI+1],AL ;存0X1MOV AL,BLAND AL,0FH ;取16进制数的低四位,即X2MOV [SI+2],AL ;存0X2MOV AH,4CHINT 21HCODE ENDSEND START实验二:分支程序设计实验(1)编写一个字符比较程序,比较3 个无符号字节数A,B,C 的大小,并根据比较结果对变量K 赋值:如果3 个数不相等,则K=0;如果3 个数中有两个相等,则K=1;如果3 个数都相等,则K=2。

实验四、分支和循环结构程序设计

实验四、分支和循环结构程序设计

实验四分支和循环结构程序设计
一、实验目的
1.掌握汇编语言顺序结构程序设计。

2.掌握汇编语言分支结构程序设计。

3.掌握汇编语言循环结构程序设计。

二、实验类型:验证
三、实验内容
1.编程将无符号字节数组ARRAY的最大和最小值找出来,分别存放到变量MAX和MIN 中,数组以0结束。

2.编程输入四位数字年份,判断是否是闰年,是则输出y,不是输出n
3.编程在屏幕上打印下列图示N行*号,N为一位十进制数,从键盘输入。

*
***
*****
……………..
4.编程:输入一个3~9的数字字符,输出由数字组成的三角形。

例如:输入4,则输出1
22
333
4444
5.编程:从键盘输入10个有符号数,然后从小到大排序后输出。

五、实验报告
1.编写程序,写出程序清单。

2.记录程序运行结果。

分支与循环结构程序设计实验

分支与循环结构程序设计实验

3、实验设备与仪器
PC机、Wave软硬件仿真软件。
分支与循环结构程序设计实验 4、实验步骤
1)打开伟福仿真软件, 打开仿真器设置窗口,在仿真器 标签里选择使用伟福软件模拟器,进入软件仿真环境。
2)在编辑窗口输入源程序,保存,编译程序。
3)用单步、设置断点、全速三种执行程序的方法调试程 序,观察并记录相关内容数据的变化。
编写程序分支与循环结构程序设计实验1实验目的了解程序的多分支结构掌握多分支结构程序的编程方法掌握循环程序的编程方法掌握跳转指令的使用
单片机开发基础实验
分支与循环结构程序设计实验
实验重点:读懂程序、调试程序、数据分析并规范记录
实验难点:编写程序
分支与循环结构程序设计实验 1、实验目的
了解程序的多分支结构,掌握多分支结构程
分支与循环结构程序设计实验
6、实验报告要求
1)实验报告要求有实验目的、要求、设备或仪器、程序设计、 步骤、数据分析。数据分析填在报告本的原始数据栏。 2)画出程序设计流程图、写出程序清单并有简要注释。 3)写出实验过程中所遇到的问题与解决的办法。
7、思考题
1)MCS-51系列单片机有那些跳转指令?列出这些指令,并说 明其功能。 2)MCS-51系列单片机有哪些子程序调用和返回指令?列出这 些指令,并说明其功能。 3)MCS-51系列单片机有哪些查表指令?列出这些指令,并说 明其功能。
分支与循结构程序设计实验
5、找最大数参考程序
ORG 0000H START:MOV R7,#9 MOV R0,#41H MOV A,@R0 LOOP: INC R0 MOV B,@R0 CJNE A,B,$+3 JNC NEXT MOV A,@R0 NEXT: DJNZ R7,LOOP MOV 40H,A SJMP $ END
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四分支和循环程序设计实验一、实验要求和目的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是否有实根。

若有实根,则将字节变量 tag置 1,否则置 0。

假设 A、B、C均为字节变量,数据范围为-128~127。

流程图:(2)程序代码:DATAS SEGMENTA1 DB ?B1 DB ?C1 DB ? TAG DB ? ;此处输入数据段代码 DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START:MOV AX,DATAS MOV DS,AXMOV AH,01H;输入第一个数据 INT 21HSUB AL,30H;输入数据存入A,并转化为十进制数MOV A1,ALMOV AH,01H;输入第二个数据 INT 21H SUB AL,30H MOV B1,ALMOV AH,01H;输入第三个数据 INT 21HSUB AL,30H;输入数据存入C,并转化为十进制数MOV C1,AL程序结果: B*B-4AC=0,>0,<0的三种情况MOV AL,B1MUL AL;计算B*B,结果存入AX MOV BX,AX;B*B结果存入BXMOV AL,A1 IMUL C1 MOV CL,4IMUL CL;计算4*A*CCMP BX,AX JGE T1 MOV TAG,0 JMP NEXT1T1: MOV TAG,1;有根,将TAG赋值为1 NEXT1:ADD TAG,30HMOV DL,TAG;输出TAG的值 MOV AH,02H INT 21H MOV AH,4CH INT 21H CODES ENDS END START2、编写一个程序,判别键盘上输入的字符;若是 1-9字符,则显示之;若为 A-Z 字符,显示“C”;若为 a-z字符,显示“ c”;若是回车字符 <CR>(其 ASCII码为 0DH),则结束程序,若为其它字符则显示显示“R”。

流程图:DATAS SEGMENT;此处输入数据段代码结果DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS START:MOV AX,DATASMOV DS,AXMOV AH,01HINT 21HCMP AL,'1';同1比较JNB ONEONE:CMP AL,'9';同9比较JL READJGE TOWREAD:MOV DL,ALMOV AH,02HINT 21HMOV AH,4CHINT 21HTOW: CMP AL,'A';同A比较JGE A A:CMP AL,'Z';同Z比较READ1:MOV DL,'C' MOV AH,02H INT 21H MOV AH,4CH INT 21HTHREE:CMP AL,'a';同a比较 JGE B;>a则转到B B: CMP AL,'z';同z比较 JL READ2 JGE FOUR READ2: MOV DL,'c' MOV AH,02H INT 21H MOV AH,4CH JL READ1 JGE THREEINT 21HFOUR:CMP AL,0DH JZ CR JNZ FIVE CR: MOV AH,4CH INT 21HFIVE: MOV DL,'R' MOV AH,02HINT 21H ;此处输入代码据段代码 MOV AH,4CH INT 21H CODES ENDS END START3、(大家再次编成实现实验一的题目,看是否可以优化程序?)分类统计字数组 data中正数、负数和零的个数,并分别存入内存字变量Positive、Negative和Zero中,数组元素个数保存在其第一个字中。

使用 Debug查看Positive、Negative和 Zero三个变量的数据。

流程图程序代码DATAS SEGMENTNUM DW 30,4,16,-2,0,6,34,0,-4,3 CNT EQU $-NUM POSITIVE db 0 Negative db 0 Zero db 0DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS START:MOV AX,DATASMOV DS,AXLEA SI,NUM ;SI取NUM的偏移地址 MOV CX,CNT/2;CX存入数据个数,JMP A Z:INC Zero JMP A A:ADD SI,2 LOOP SADD POSITIVE,30H;把数字转换为相应的ASCII码MOV DL,POSITIVE MOV AH,02H INT 21HADD Negative,30H MOV DL,Negative MOV AH,02HINT 21HADD Zero,30H用于控制循环 S:CMP WORD PTR [SI],0 JG P JZ Z INC Negative JMP A P:INC POSITIVE程序结果MOV DL,ZeroMOV AH,02HINT 21HMOV AH,4CH INT 21H CODES ENDS END START4、编写程序,在字符串变量 STRING中存有一个以 $为结尾的 ASCII码字符串,要求计算字符串的长度,并把它存入 LENGTH单元中。

(要求用条件控制循环方法,并且字符串分数据类型是字节和字两种情况)流程图:程序代码: STRING1 DB 100 db ?DB 100 DUP(?) LENGTH1 DB -1STR2 DB 0ah,'The length of the string is',' ','$' DATAS ENDSCODES SEGMENTMOV AH,0AH LEA DX,STRING1 INT 21H;输入字符串 LEA SI,STRING1+2 MOV CL,0 S:MOV AH,0CMP BYTE PTR[SI],'$';判断与$是否相等 JZ STOP;相等则跳去STOPINC SIASSUME CS:CODES,DS:DATAS,ES:DATAS START:MOV AX,DATAS;初始化ES,DX MOV DS,AXINC CLMOV LENGTH1,CL;CL每次变化后保存JMP SSTOP:LEA DX,STR2MOV AH,09HINT 21HMOV AH,0结果ADD CL,30h MOV DL,CL MOV AH,02H INT 21H MOV AH,4CH INT 21H CODES ENDS END START五、实验总结通过这次实验掌握了输入输出基本操作,学习了单个字符的输入输出与字符串的输入输出,学习使用了数字与ASCII码之间的转换,进一步熟悉了许多的条件转移指令如JZ,JNZ,JGE,JL等.通过实验巩固了基础知识,加深了理解,非常有助于今后的学习.。

相关文档
最新文档