实验四-循环结构汇编语言程序的设计实验报告

合集下载

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

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

实验四循环分支程序设计一&实验目的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寄存器中的两位十六进制数。

汇编实验2-循环程序设计-实验报告

汇编实验2-循环程序设计-实验报告

汇编实验2-循环程序设计-实验报告一、实验目的1、了解循环程序设计的方法2、理解汇编语言中循环指令的使用3、掌握汇编语言中常用的循环结构二、实验原理1、循环指令循环指令是计算机中常用的一种控制结构,其作用是重复执行一定的操作。

在汇编语言中,常用的循环指令有LOOP、LOOPE、LOOPNE等,具体功能如下:(1)LOOP:重复执行指定次数的操作;(2)LOOPE:执行操作直到CX寄存器为0或ZF寄存器为1;(3)LOOPNE:执行操作直到CX寄存器为0或ZF寄存器为0。

LOOP指令的语法格式如下:LOOP label其中,label表示循环的目标地址。

2、循环结构循环结构是计算机程序设计中常用的一种结构,其基本形式包括:while、do...while、for等。

在汇编语言中,常用的循环结构有以下两种:(1)无限循环结构:该结构适用于需要不停顿地进行某项操作的情况,底层逻辑基于测试指令;(2)计数器循环结构:该结构适用于需要循环指定次数的情况,底层逻辑基于循环指令。

三、实验内容1、使用循环指令实现计算1~10的和;2、使用循环结构实现计算1~10的和。

四、实验步骤1、使用循环指令实现计算1~10的和。

(1)将计数器初始化为10,即MOV CX,10;(2)将累加器初始化为0,即MOV AX,0;(3)将当前计数器值加到累加器中,即ADD AX,CX;(4)将计数器减1,即DEC CX;(5)判断计数器是否为0,若不为0,则执行第3步;若为0,则跳转到计算结果的部分。

2、使用循环结构实现计算1~10的和。

(1)将计数器初始化为10,即MOV CX,10;(2)将累加器初始化为0,即MOV AX,0;(3)将当前计数器值加到累加器中,即ADD AX,CX;(4)将计数器减1,即DEC CX;(5)判断计数器是否为0,若不为0,则执行第3步;若为0,则跳转到计算结果的部分。

五、实验结果(1)使用循环指令实现计算1~10的和MOV CX,10MOV AX,0LOOP label1ADD AX,CXDEC CXJNZ label1label1:MOV sum,AX(2)使用循环结构实现计算1~10的和MOV CX,10MOV AX,0label2:ADD AX,CXDEC CXJNZ label2MOV sum,AX六、实验总结本次实验实现了两种不同的循环方式,分别使用了循环指令和循环结构。

汇编语言循环程序实验报告

汇编语言循环程序实验报告

一、实验目的(1) 加深对循环结构的理解;(2) 掌握循环程序的设计方法;(3) 熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。

二、实验内容1.已知以BUF为首地址的字存储区中存放着8个有符号二进制数,是编写程序将其中大于等于0的数依次送BUF1为首地址的字存储区中,小于0的数依次送以BUF2为首地址的字存储区中。

同时将大于等于0的数的个数送A字变量,将小于0数的个数送B字变量。

2.设STR字符串是以0结尾。

试编写一个把字符串中的所有大写字母改为小写字母的程序并将转换后的字符串显示输出。

3.试编程从自然数1开始累加,直到累加和大于5050为止,统计被累加的自然数的个数,并把统计的个数送入COUNT单元,累加和送入TOTAL单元。

三、算法描述流程图实验内容1、2、3的流程图分别为图1、图2、图3。

图1 图2 图3四、实验步骤1.已知以BUF为首地址的字存储区中存放着8个有符号二进制数,是编写程序将其中大于等于0的数依次送BUF1为首地址的字存储区中,小于0的数依次送以BUF2为首地址的字存储区中。

同时将大于等于0的数的个数送A字变量,将小于0数的个数送B字变量。

1)输入源程序:DATA SEGMENTBUF DW 23,123,-12,-210,45,0,90,-453BUF1 DW 8 DUP(0)BUF2 DW 8 DUP(0)A DW ?B DW ?DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART: MOV AX, DATAMOV DS, AXLEA BX, BUFLEA SI, BUF1LEA DI, BUF2MOV A,0MOV B,0MOV CX,8L0: MOV AX,[BX]CMP AX,0JGE L1MOV [DI],AXADD DI,2INC BJMP NEXTL1: MOV [SI],AXADD SI,2INC ANEXT: ADD BX,2LOOP L0MOV AH, 4CHINT 21HCODE ENDSEND START2)运行程序。

《汇编语言》实验报告

《汇编语言》实验报告

《汇编语言》实验报告实验名称:汇编语言实验报告实验目的:通过实验了解汇编语言的基本概念、语法结构和程序设计方法,掌握汇编语言的编写方法。

实验时间:2024年1月1日实验地点:实验室一、实验背景汇编语言是计算机硬件和软件之间的桥梁,通过汇编语言可以直接操作计算机的底层硬件。

汇编语言是一种低级语言,使用汇编语言可以实现对计算机内存、寄存器等硬件资源的直接操作,从而实现程序的功能。

本实验通过编写汇编语言程序,加深对汇编语言的理解。

二、实验过程1. 确定实验环境:使用DOSBox模拟DOS环境进行汇编程序编写和调试。

2. 编写第一个汇编程序:编写一个简单的汇编程序,将字符串“Hello, World!”输出到屏幕上。

3.程序分析:a.定义要输出的字符串,将字符串存储在数据段中。

b.设置段寄存器,将数据段地址加载到DS寄存器中。

c.设置显示模式和光标位置。

d.将字符串逐个字符输出到屏幕上。

e.关闭显示模式。

4. 编译运行:使用汇编语言的编译器将汇编程序转换成机器码,并在DOSBox中运行程序。

5.调试程序:根据程序运行结果和分析,调试程序中存在的错误,并进行改正。

三、实验结果与分析经过多次编写和调试,我们成功实现了将字符串“Hello, World!”输出到屏幕上的功能。

通过程序分析和调试过程,加深了对汇编语言的理解和掌握。

四、实验总结通过本次实验,我们深入了解了汇编语言的基本概念、语法结构和程序设计方法。

通过实际编写汇编语言程序,对汇编语言的编写方法有了更加深入的认识。

同时,通过调试程序的过程,我们也提高了自身的问题解决能力和分析能力。

在今后的学习和工作中,我们将继续学习和深入研究汇编语言,提高自己的编程能力和创新思维能力。

总体而言,本次实验给我们带来了很大的收获,我们以后将更加努力地学习汇编语言,提高自己的编程水平,为以后的学习和工作做好充分的准备。

实验四 循环结构程序设计

实验四  循环结构程序设计
/* 求最大公约数算法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( )
{定义变量;
变量赋初值;

实验报告4

实验报告4

实验四:循环结构程序设计班级:学生姓名:学号:一、实验目的1、理解循环的概念2、理解并掌握循环结构相关语句的含义、格式及使用3、学会循环的应用及控制,包括:①掌握使用循环输入多个数据的方法②掌握在多个数据中有选择地输出数据的方法③掌握在多个数据中对某种数据进行计数的方法④掌握求多个数据中最大值、最小值的方法⑤掌握使用break、continue语句终止循环4、掌握循环的嵌套二、知识要点1、循环变量、循环条件、循环体的概念2、三种循环语句的一般格式、执行过程3、理解选择结构与循环结构中“条件表达式”之不同含义4、二重循环的执行过程三、实验预习(要求做实验前完成)1、循环变量的主要用途是:2、用循环求多个数的和之前,先要把和的初始值赋为:3、用循环求多个数的乘积之前,先要把乘积的初始值赋为:4、字符变量能否作为循环变量?5、循环过程中,如果循环条件成立,但需要结束循环,可采用什么办法?6、什么叫循环的嵌套?四、实验内容(要求提供:①算法描述或流程图②源程序)1. 编程,利用循环计算以下表达式的值:(5+52)*(4+42)*(3+32)*(2+22)*(1+12)*(1/2+1/3+1/4+1/5)(for循环)include <stdio.h>#include <stdlib.h>int main(){int a;double sum=1,sum1=0;for(a=1;a<=5;a++)sum=sum*(a+a*a);printf("结果为%lf\n",sum);for(a=2;a<=5;a++)sum1=sum1+(1.0/a);printf("%lf\n",sum1);printf("结果为%lf\n",sum*sum1);return 0;}2. 编程,从键盘输入若干个整数,当输入0时,输入停止。

汇编语言循环结构程序设计

汇编语言循环结构程序设计

实验4 汇编语言循环结构程序设计实验题目:实现表达式S=(X+4×Y)/Z,其中X为有符号的字节数据,Z、Y为有符号的字数据,结果进行显示(进制不限)。

实验目的:1. 掌握循环结构程序设计:循环初始化、循环体、循环参数修改和循环控制;2. 灵活运用跳转类或循环指令;4. 掌握MASM、LINK、DEBUG等工具的使用。

实验设备:硬件:PC机软件:DOS操作系统、编辑软件、MASM 5.0实验内容:1. 程序代码DATA SEGMENTX DB 8Y DW 2Z DW 2N DW 10RESULT DW 4 DUP(?) ;定义RESULT单元,预留空间DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AL,XMOV AH,0H ;扩展xMOV BX,AXMOV CX,4MOV AX,YMUL CXADD AX,BXDIV ZDIV N ;除以10,用于进位显示MOV RESULT,AX ;存储商MOV RESULT+1,DX ;存储余数ADD RESULT,30HMOV DX,RESULTMOV AH,02HINT 21HADD RESULT+1,30HMOV DX,RESULT+1MOV AH,02HINT 21HMOV AH,4CH ;返回DOSINT 21HCODE ENDSEND START2.调试过程(具体应用DEBUG指令及其结果)实验思考与总结:通过本次实验我熟悉了源程序的基本组成及其使用,掌握了数据传送、算术运算类指令的使用。

C语言实验报告 实验四 参考答案

C语言实验报告 实验四  参考答案

实验四循环结构程序设计2(参考答案)(1)编写程序sy4-1.c,输入n,计算并输出如下多项式的值:S n=1+1/2!+1/3!+1/4!+…+1/n!。

例如输入n为15时,输出1.718282。

算法分析:第一项可以看成1/1!,用循环控制累加n个分式,分式的分母是i!,分子固定为1。

参考答案:# include <stdio.h>void main(){double s=0,p=1;int i,n;scanf("%d",&n);for(i=1;i<=n;i++){p = p * i ; //计算分母i!s = s + 1 / p ; //累加}printf("s=%lf\n",s);}运行结果:(2)编写程序sy4-2.c,输入n,根据以下公式计算s:,例如当n=11时,结果为1.833333。

算法分析:该多项式的分母是累加。

参考答案:# include <stdio.h>void main(){double sn=0,s=0;int i,n;scanf("%d",&n);for(i=1;i<=n;i++){s = s + i ; //计算分母1~i的累加和sn = sn + 1 / s ;}printf("sn=%lf\n",sn);}运行结果:(3)编写程序sy4-3.c,计算3~n之间所有素数的平方根之和,要求:输入n,输出结果。

例如,输入n 的值是100,则输出结果是148.874270。

注意n应在2~100之间。

算法分析:穷举3~n之间的数找素数,若是素数则累加她的平方根。

参考答案:# include <stdio.h># include <math.h>void main(){int i,j,n,flag;double s=0;scanf("%d",&n);for(i=3;i<n;i++) //穷举3~n之间找素数{flag=1; //假设当前的i是素数,标志变量设为1for(j=2;j<i;j++) //穷举要判断是否是素数的i的除数,范围2~i-1if(i%j==0) //若i能被j整除,则不是素数{ flag=0; break; } //标志变量改为0,并终止循环if( flag == 1 )s = s + sqrt( i ); //若i是素数,则累加sqrt(i)}printf("s=%f\n",s);}运行结果:(4)编写程序sy4-4.c,根据以下公式求p的值,(m与n为两个正整数且m>n)。

C语言程序设计实验报告

C语言程序设计实验报告

C语言程序设计实验报告一、引言C语言程序设计是计算机科学与技术专业中的一门基础课程。

通过实验学习,我深入了解了C语言的基本语法和程序设计的思想,掌握了一定的编程能力。

本文将详细介绍我在C语言程序设计实验中所进行的实验项目、实验结果和实验心得。

二、实验项目1. 实验一:C语言程序设计基础在这个实验中,我编写了一个简单的C语言程序,实现了对用户输入的两个整数进行相加并输出结果的功能。

在程序设计中,我正确使用了C语言的基本语法,包括变量定义、输入输出函数的调用等。

2. 实验二:条件语句和循环结构这个实验要求我编写一个C语言程序,实现对用户输入的分数进行等级评定的功能。

根据用户输入的分数,程序将输出相应的等级,如优秀、良好、及格等。

为了实现这个功能,我灵活运用了条件语句和循环结构,使程序具有良好的交互性。

3. 实验三:数组和字符串在这个实验中,我学习了C语言中数组和字符串的使用方法,并编写了一个程序,实现了对一个整数数组的排序功能。

通过实验,我进一步掌握了数组的声明、初始化和遍历等操作,提高了我对C语言程序设计的理解。

4. 实验四:函数和指针实验四要求我编写一个C语言程序,实现对一个数组中的元素求和的功能。

在这个实验中,我了解了函数的定义和调用、指针的基本概念以及函数指针的使用。

通过编写程序,我加深了对函数和指针的理解,并提高了程序的运行效率。

三、实验结果通过以上实验项目的设计与实现,我得到了如下实验结果:1. 实验一的结果是可以正确进行数值相加并输出结果。

2. 实验二的结果是根据输入的分数得到相应的等级评定。

3. 实验三的结果是对输入的整数数组进行排序,并输出排序后的结果。

4. 实验四的结果是对数组中的元素进行求和,并输出求和结果。

四、实验心得通过整个实验过程,我深刻认识到了C语言程序设计的重要性和应用广泛性。

C语言不仅是其他高级编程语言的基础,也是培养程序设计思维和逻辑思维的重要工具。

通过实验,我不仅掌握了C语言的基础知识和编程技巧,还培养了自己解决问题和分析问题的能力。

汇编语言学习知识程序设计实验

汇编语言学习知识程序设计实验

汇编语⾔学习知识程序设计实验⽬录⽬录 (1)实验⼀利⽤DEBUG熟悉常⽤指令的使⽤ (2)⼀、实验⽬的 (2)⼆、⽰例 (2)三、实验题 (2)实验⼆汇编程序和连接程序的使⽤ (6)⼀、实验⽬的。

(6)⼆、⽰例。

(6)三、实验题。

(8)实验三顺序结构程序设计 (11)⼀、实验⽬的 (11)⼆、⽰例 (11)三、实验题 (12)四、实验报告 (15)实验四循环结构程序设计 (16)⼀、实验⽬的 (16)⼆、⽰例 (16)三、实验题 (18)实验五分⽀结构程序设计 (21)⼀、实验⽬的 (21)⼆、⽰例 (21)三、实验题 (22)实验六⼦程序设计 (29)⼀、实验⽬的 (29)⼆、实验题 (29)实验⼀利⽤DEBUG熟悉常⽤指令的使⽤⼀、实验⽬的熟悉指令系统,掌握常⽤指令的⽤法;通过实验加深对各种寻址⽅式的理解;能熟练使⽤DEBUG中的命令对指令进⾏反汇编,观察并了解机器代码。

⼆、⽰例请分别⽤⼀条汇编语⾔指令完成如下功能:(过程略)。

1.⽤寄存器BX和SI的基址变址寻址⽅式把存储器的⼀个字节与AL寄存器的内容相加,并把结果送到AL中。

ADD AL,[BX][SI]2.⽤位移量为0520H的直接寻址⽅式把存储器中的⼀个字与3412H相加,并把结果送回该存储单元。

ADD WORF PTR [0520H],3412H三、实验题1.调试、验证下列指令的结果,已知(DS)=2000H,(BX)=0100H,(SI)=0002H,(BP)=0200H,(SS)=2300H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,(21200)=2AH,(21201)=4CH,(21202)=B7H,(21203)=65H,(23204)=88H,说明各指令执⾏完后AX寄存器的内容。

要求输⼊指令,相应存储单元的内容要事先设置,单步P执⾏,观察执⾏结果。

(设置存储器的值)①.MOV AX,1200H②.MOV AX,BX③.MOV AX,[1200H]④.MOV AX,[BX]⑤.MOV AX,1100[BX]⑥.MOV AX,[BX][SI]⑦.MOV AX,1100[BX][SI]⑧ .MOV AX,[BP+SI+04]2、上机调试、验证教材习题3.15。

汇编实验四分支和循环程序设计实验(设计性实验)

汇编实验四分支和循环程序设计实验(设计性实验)

汇编实验四分支和循环程序设计实验(设计性实验)汇编语言实验报告实验四分支和循环程序设计实验(设计性实验)班级:姓名:学号:实验日期:实验四分支和循环程序设计实验(设计性实验)一、实验要求和目的1.熟悉汇编语言程序设计结构;2.熟悉汇编语言分支程序基本指令的使用方法;3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法;4.了解汇编语言循环程序设计的基本流程;5.熟悉汇编语言循环基本指令的使用方法;6.掌握利用汇编语言的循环指令完成循环程序设计方法。

二、软硬件环境1、硬件环境:计算机系统windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。

三、实验涉及的主要知识在实际应用中,经常根据一些条件来选择一条分支执行。

汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号相减而导致的结果来进行。

1.无条件转移指令JMP无条件转移指令JMP 是使程序无条件转移至目标处,又分为段内转移、段间转移。

2.条件转移指令JXX条件转移指令可分为三大类:1).简单条件转移指令指令。

根据单个标志位的状态判断转移条件。

标志位指令转移条件意义CF JC CF=0 有进位/借位JNC CF=1 无进位/借位ZF JE/JZ ZF=1 相等/等于0JNE/JNZ ZF=0 不相等/不等于0 SF JS SF=1 是负数JNS SF=0 是正数OF JO OF=1 有溢出JNO OF=0 无溢出PF JP/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<b< p="">JBE/JNA CF=1 OR ZF=1 A<=B3).带符号数条件转移指令。

实验四.循环型程序

实验四.循环型程序

{ sum=sum+;+; } printf("%f",average); return 0; } 结果:-59652320.000000
4、猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉了一半,又多吃了一个。以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少桃 子。 在得到正确结果后,修改题目,改为每天早上都吃了前一天剩下的一半加二个,请修改程 序,并运行,检查运行结果是否正确。 程序提示: 使用以下循环结构 x=1 for(i=9;i>=1;i--) x=2*x+1 解: #include<stdio.h> main() { int i,n=1; for(i=9;i>=1;i--) n=2*n+1; printf("%d",n); }
学号:
熟悉使用 while 语句,do-while 语句和 for 语句实现循环的方法。掌握在程序设计中用循环的方法实 现一些常用算法(如穷举、迭代、递推等) 。
三、实验要求:
1. 在 D 盘建立一个自己的文件夹;
2.开启软件平台——Visual C++6.0,在此环境下进行实验 3.将题目、你输入的命令、程序及运行结果保存在 word 文件中,作为作业提交; 4.若出现错误,修改、运行直到输出正确结果;
求第一天共摘了多少桃在得到正确结果后修改题目改为每天早上都吃了前一天剩下的一半加二个请修改程序并运行检查运行结果是否正确
C 程序设计上机实验报告
实验课程:高级语言程序设计 实验时间:2012-3-28 任课教师:张力宁

程序循环结构实验报告(3篇)

程序循环结构实验报告(3篇)

第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.提高编程效率和程序的执行性能。

章节四:________实验环境本实验使用的编程语言为C++,开发环境为Visual Studio 2019。

实验中所采用的代码编辑器和编译器的版本信息,以及相关的配置信息都将在本章节详细介绍。

章节五:________实验过程本实验分为以下几个步骤:________1.阅读实验要求和相关文档。

2.设计程序的整体逻辑结构。

3.定义问题的输入和输出。

4.编写循环结构的相关代码。

5.测试并调试程序。

6.总结实验过程并撰写实验报告。

详细的实验过程将在本章节逐步展开。

5.1 阅读实验要求和相关文档在开始实验之前,需要仔细阅读实验要求和相关文档,了解问题的背景和要求,明确实验的目标和任务。

5.2 设计程序的整体逻辑结构根据实验要求,我们需要设计一个程序,实现特定功能。

在这一步,我们应该考虑问题的整体逻辑结构,包括输入、处理和输出的流程。

5.3 定义问题的输入和输出根据实验要求,我们需要明确问题的输入和输出。

输入可以是用户提供的数据,也可以是预设的测试数据。

输出是程序运行后产生的结果。

5.4 编写循环结构的相关代码根据问题的需求,我们可以选择合适的循环结构,并编写相应的代码进行实现。

在这一步,我们需要注意循环的条件以及循环体的内容。

汇编语言编程实验报告

汇编语言编程实验报告

汇编语言编程实验报告汇编语言程序设计实验报告(一)汇编语言程序设计实验报告(一)一、预备知识汇编语言程序设计是一门实践性很强的课程。

编写程序、上机调试、运行程序是进一步学习和掌握汇编语言程序设计的必要手段。

二、实验目的1、掌握实验运行汇编语言所用的计算机机型2、熟悉常用编辑程序(行编辑程序EDLIN、全屏幕编辑程序QE及其它用于文件编辑的应用程序。

)3、掌握汇编程序ASM、宏汇编程序MASM1.0以上。

4、LINK连接程序5、DEBUG调试程序三、汇编语言源程序上机操作过程2、编辑源文件根据给定的任务,可编写程序。

如果经过检查认为所编程序无错时,就可在计算机上通过编辑程序建立源程序文件了。

一般在编辑过程中总会有错误产生,因此还要进行人工检查、修改以致重新编辑,直到所编辑的源程序无误为止,然后以一个源程序文件(ASM文件)存盘。

将包含QE文件的工作磁盘插入驱动器A:。

进入QEA\QE进入全屏幕后可以开始编程。

文件名取为Myprog。

asm;Ddisplystring (09H)CODESEGMENTPUBLICASSUME CS:CODE,DS:CODEORG 100HSTART:JMP BEGINMSG DB‘Hi ! This ia a dollar sign terminated string.’,’$’BEGIN:MOV AX,CS ;set up to display messageMOV DS,AXMOV DX,OFFSET,SG ;set up to display messageMOV AH,09H;display string function requestINT 21H ;call DOSMOV AH ,4CH ;terminate propram funct requestINT 21H ;Call DOSCODE ENDS;end of code segmentEND START;strat is the entry point输入完毕后,按ALT---X,存盘返回DOS3、汇编源程序文件(ASM,MASM)由编辑程序所建立的ASM文件只是个文本文件,计算机无法执行。

汇编语言程序设计实验报告

汇编语言程序设计实验报告

实验报告实验名称汇编语言程序设计||专业班级:信息安全学号:姓名:实验一汇编语言上机过程和Debug常用调试命令一.实验目的:学习程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法。

二.实验题目:熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)的使用方法。

在调试过程中,学习及掌握debug程序的各种操作命令。

三.问题描述:试编写一程序:比较两个字符串string1和string2所含的字符是否相同,若相同则显示‘match’; 否则,显示‘no match’。

四.方法说明:a) 使用ws、tc或EDIT编辑程序来建立源文件,然后存盘,使系统返回DOS。

b) 用汇编程序masm(或asm)对源文件汇编产生目标文件obj如:汇编指示出错则需重新调用编辑程序修改错误,直至汇编通过为止。

c) 用连接程序link 产生执行文件EXE.d) 执行程序,可直接从DOS执行程序。

e) 使用debug程序调试程序的方法。

五.实验步骤:1.调用字处理程序EDIT 建立以sample.asm文件datarea segmentstring1 db ‘move the cursor backward.’string2 db ‘move the cursor backward.’mess1 db ‘Match..’,13,10,’$’mess2 db ‘No match!..’,13,10,’$’datarea endsprognam segmentmain proc farassume cs:prognam,ds:datarea,es:datarea start:push dssub ax,axpush axmov ax,datareamov ds,axmov es,axlea si,string1lea di,string2cldmov cx,25repz cmpsbjz matchlea dx,mess2jmp short dispmatch:lea dx, mess1disp:mov ah,09int 21hretmain endpprognam endsend start2.对源文件汇编产生目标文件obj D:\masm 文件名。

循环结构程序设计(汇编语言)

循环结构程序设计(汇编语言)

循环结构程序设计(汇编语言)汇编语言实验报告实验名称:循环结构程序设计姓名:学号:班级:一、实验内容1. 用多种循环方法实现1+2+3+…+20的程序(至少二种方法);2. 编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z 或a-z字符,均显示“c”;若是回车字符<CR>(其ASCII码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入;(选做)3、编写一个汇编语言程序,要求将BX寄存器内的小写字母用大写字母显示出来。

4、ADDR单元是存放数据的内存单元,要求将该内存单元中的字依次用十六进制数显示出来。

二、实验目的1. 掌握循环程序的结构。

2. 掌握循环程序的设计、编写及调试方法。

3. 掌握循环程序设计的基本方法。

主要掌握几种基本的循环程序设计技巧,如计数法程序设计、当循环、直到循环等程序设计技术。

三、实验结果1、将内存中的数据块中(BUFF为起始地址)奇数和偶数分别存入以ADDR1和ADDR2开始的存储块中,并分别统计其中的奇、偶数,将统计结果存放在RESULT 开始的两个字存储单元中。

实验代码:(1.ASM 1.OBJ 1.EXE)data segmentbuff dw 6,35,99,17,80,69,50,33addr1 dw 8 dup(?)addr2 dw 8 dup(?)result dw 0,0data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov cx,8dmov si,0mov di,0mov bx,0mov dx,0L1:test buff[si],0001hje L2mov ax,buff[si]mov addr2[bx],axadd si,2add bx,2inc dldec cxjmp L1L2:mov ax,buff[si]mov addr1[di],axadd di,2add si,2inc dhdec cxjmp L1mov si,0mov byte ptr result[si],dhadd si,2mov byte ptr result[si],dl code endsend start运行结果如下:2、不利用乘法指令实现乘法的程序代码如下:(2.ASM 2.OBJ 2.EXE) data segmentx dw 30dy dw 10ddata endscode segmentassume cs:code,ds:datastart:push dssub ax,axpush axmov ax,datamov ds,axmov cx,xmov bx,ymov ax,0L1:add ax,bxloop L1mov dx,axmov ah,2int 21hcode endsend start运行结果如下:3、用多种循环方法实现1+2+3+…+20的程序(至少二种方法) 代码1:(31.ASM 31.OBJ 31.EXE)DATA SEGMENTX DW 0DY DW 20DDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:PUSH DSSUB AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV BX,XMOV CX,YMOV AX,0L1:INC BXADD AX,BXLOOP L1MOV DX,AXMOV AH,2INT 21HCODE ENDSEND START运行结果1如下:(结果存于DX寄存器中)实验代码2如下:(32.ASM 32.OBJ 32.EXE) DATA SEGMENTY DW 20DDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:PUSH DSSUB AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV CX,YMOV AX,0MOV BX,0L1:INC BXADD AX,BXCMP BX,20JNZ L1MOV DX,AXMOV AH,2INT 21HCODE ENDSEND START运行结果2如下:(实验结果存于DX 寄存器中)4、编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z 或a-z字符,均显示“c”;若是回车字符<CR>(其ASCII码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入实验代码如下:(4.ASM 4.OBJ 4.EXE)code segmentassume cs:codestart:mov ah,1int 21hcmp al,0dhje exitcmp al,'0'jb startcmp al,'9'jbe output1cmp al,'A'jb startcmp al,'Z'jbe outputcmp al,'a'jb startcmp al,'z'jbe outputoutput1: mov dl,almov ah,2int 21hjmp startoutput:mov ah,02hmov dl,'c'int 21hjmp startexit: mov ah,4chint 21hcode endsend start运行结果如下:5、编写一个汇编语言程序,要求将BX寄存器内的小写字母用大写字母显示出来。

循环结构程序设计实验报告

循环结构程序设计实验报告

循环结构程序设计实验报告嘉应学院计算机学院实验报告课程名称指导老师班级程序设计基础实验名称实验时间姓名实验地点提交时间座号一、实验目的和建议(1)熟悉掌握用while语句、dowhile语句和for语句实现循环的方法。

(2)掌控在程序设计中用循环的方法同时实现一些常用算法(例如穷举、运算、关系式等)。

(3)进一步自学调试程序。

二、实验环境和方法实验方法:(一)综合运用课本所学的知识,用不同的算法实现在不同的程序功能。

(二)融合指导老师的指导,化解程序中的问题,恰当化解实际中存有的异常情况,逐步提升功能。

(三)根据实验内容,编译程序。

实验环境:windowsxpvisualc++6.0三、实验内容及过程描述实验步骤:①步入visualc++6.0内置环境。

②输出自己breuil的程序。

③检查一遍已输出的程序与否存有弄错(包含输出时因购买的和编程中的错误),例如辨认出存有弄错,及时废止。

④展开编程和相连接。

如果在编程和相连接过程中发现错误,频幕上可以发生“收起信息”,根据提示信息找出失效边线和原因,予以废止。

再展开编程,如此反反复复直至不失效年才。

⑤运转程序并分析运转结果与否合理。

在运转就是必须特别注意当输出相同的数据时税金结果与否恰当,应当运转多次,分别检查在相同情况下结果与否恰当。

实验内容:编程以下题目的程序并调试运转。

(1)输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符的个数。

编写程序如下:#include<stdio.h>intmain(){charc;intletters=0,space=0,digit=0,other=0;printf("恳请输出一行字符:\n");while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='a'&&c<='z')letters++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}printf("字母数:%d\n空格数:%d\n数字数:%d\n其它字符数:%d\n",letters,space,digit,other);return0;}运行结果为:在获得恰当结果后,修正程序并使之能够分别统计数据小小写字母、空格、数字、和其它字符的个数。

循环结构实验报告范本

循环结构实验报告范本
深 圳 大 学 实 验 报 告
课程名称:
程序设计基础
实验项目名称:
循环结构
学院:
计算机与软件学院
专业:
指导教师:
报告人:
学号:
班级:
实验时间:
2013-11-20
实验报告提交时间:
2013-11-22Biblioteka 教务处制 一、实验目的与要求:
实验目的: 1.理解结构化程序设计方法的循环结构; 2.掌握用 for 语句实现循环结构; 3.掌握用 while、do…while 语句实现循环结构; 4.理解 for、while、do…while 三者的区别; 5.掌握转向语句 break、continue; 6.掌握上机调试的方法。 实验要求: 1.输入数据、输出数据应加以说明(交互性) ; 2.程序应注意使用注释语句(可读性) ; 4.对各种可能的输入情况都要考虑处理方案(健壮性) ; 5.熟悉 for、while、do…while、break、continue 语法。 6.在 blackboard 上提交 C++源程序或执行文件、输出界面拷屏至实验报告; 7.按报告内容要求完成实验报告。

代码 3:输出乘法表
8
流程图 3:输出乘法表 4.编程,输入一个十进制数 num,输入一个整数 d(2、8) ,将 num 转换为 d 进制 数输出。(要求用 while 或 do…while 实现) 解题思路:首先要熟练掌握进制转换算法,十进制化其他进制,即采用整除求余 法,除以转换进制一直到商为 0,再将所有余数从后到前排,所得数即为转换后 的数;因为转换进制不明确,所以还须对输入进制进行判断。①采用 while 循环 对十进制数整除求余,并将每一次求得的余数赋予数组,计数;②对输入进制的 判断采用 if 判断;③最后对数组倒序输出。 流程图见下: 编程时,要注意中间变量的使用;数组的赋值与定义;对 d 值的判断;对数组输 出位数的判断条件,注意 i 的初始化赋值;详细代码如下:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

循环结构汇编语言程序设计实验报告
实验四循环结构汇编语言程序设计
一、实验目的
1、学习循环结构的汇编语言程序的设计和调试。

2、学习通过直接对8086计算机的寄存器和存的直接访问,编写更高效简洁的汇编程序。

3、加深掌握计算机整体的工作过程。

3、加深对排序算法的理解。

二、实验任务
编写程序求出数组A中(20个元素)的最大值和最小值(数组没有排序)。

要求至少采用二种不同的排序算法来实现。

( 快速排序,归并排序、堆排序、Shell排序、插入排序、冒泡排序、交换排序、选择排序、基数排序……)
三、实验容
为了更好地实现老师所布置的实验任务,我们根据情况选取以下两种方式实
验。

1、利用冒泡排序的方式求解数组A中元素的最大值最小值。

设计流程图如
下所示:
2、利用选择排序的方式求得数组A中元素的序列。

设计流程图如下所示:
四、实验环境
PC机: winXP/win7(32位)/win7(64位)+winxp 虚拟机
汇编工具:Masm.exe+Link.exe。

五、实验步骤
1)建立和生成的文件
(1)编写的源程序,源程序名为abc、扩展名为.asm
(2)源程序经汇编程序Masm.exe汇编(翻译)后生成二进制目标程序,文件名为abc.obj
(3)目标程序需要经Link.exe连接生成可执行程序,文件名为abc.exe
2)汇编环境
最基本的汇编环境只需要两个文件:Masm.exe和Link.exe。

将这两个文件拷入到已经建好的文件夹(例如 huibian)中,并将文件夹huibian放在硬盘根
目录C :\>下
3)上机步骤
进入DOS窗口中执行。

4)调试程序
进入DEBUG后,调试程序
5)调试成功后重新汇编、连接并生成可执行代码
6)执行程序,并对运行结果截图。

利用冒泡排序求得数组A中元素的最大值最小值的实验结果如下图所示:(说明:输入数据为:13,0,59,900,587,1,657,234,34,48)
利用选择排序对数组A中元素排序得到的序列得实验结果如下图所示:(说明:输入数据为13,0,59,900,587,1,657,234,34,48)
六、实验心得
通过本次循环结构汇编语言程序设计的实验,我初步了解了汇编语言的基本语法,利用汇编语言的循环结构实现了对于数组A中元素的排序以及求得元素中的最大值最小值。

另外,在实验过程中,我也了解到了,我们要时刻细心严谨,认真做好每一步,避免出现低级错误。

七、汇编语言代码
1、利用冒泡排序实现求最大值最小值的代码
data segment
mes1 db 'the max:$'
mes2 db 'the min:$'
a dw 13,0,59,900,587,1,657,234,34,48
data ends
code segment
main proc far
assume cs:code,ds:data
start:
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
;以下是起泡排序核心代码
mov cx,10
dec cx
loop1:
mov di,cx
mov bx,0
loop2:
mov ax,a[bx]
cmp a[bx+2],ax
jge cotinue
xchg ax,a[bx+2]
mov a[bx],ax
cotinue:
add bx,2
loop loop2
mov cx,di
loop loop1
mov dx,offset mes1
mov ah,09h
int 21h
mov bx,a[18]
call bini ;转换为十进制的子程序
mov dx,offset mes2
mov ah,09h
int 21h
mov bx,a[0]
call bini
ret
main endp
bini proc near
mov cx,10000d
call bin
mov cx,1000d
call bin
mov cx,100d
call bin
mov cx,10d
call bin
mov cx,1d
call bin
ret
bini endp
bin proc near
mov ax,bx
mov dx,0
div cx
mov bx,dx
mov dl,al
add dl,30h
mov ah,02h
int 21h
ret
bin endp
crlf proc near
mov dl,0ah
mov ah,02h
int 21h
mov dl,0dh
mov ah,02h
int 21
ret
crlf endp
code ends
end start
2、利用选择排序实现排序的代码
SAVEREG macro
push ax
push bx
push cx
push dx
push si
push di
endm
RESAVEREG macro
pop di
pop si
pop dx
pop cx
pop bx
pop ax
endm
;************************
data segment
arr dw 13,20,59,900,587,1,657,234,34,48 n dw 18
m dw 10
data ends
;************************
code segment
;------------------------
main proc far
assume cs:code, ds:data
start:
push ds
sub ax, ax
push ax
mov ax, data
mov ds, ax
;------------
;sort
;------------
;si,di index
;ax temp
mov si, 0
mov di, 0
loop1:
cmp si, n
jge OUTER1
;init loop2
mov ax, si
add ax, 2
mov di, ax
loop2:
cmp di, n
jg OUTER2
mov ax, arr[si]
cmp ax, arr[di]
jle DO_NOTHING
xchg ax, arr[di]
mov arr[si], ax
DO_NOTHING:
add di, 2
jmp loop2
OUTER2:
add si, 2
jmp loop1
OUTER1:
mov cx, m
mov di, 0
PRINT_LOOP:
mov ax, arr[di]
mov dx, 0
call print_dec
add di, 2
loop PRINT_LOOP
;read key from the keyboard mov ah, 0
int 16h
ret
;---------------------
;get_oct function
;must pass ax, dx
print_dec proc near
SAVEREG
mov cx, 0
mov bx, 10
GET_NUM_LOOP:
div bx
push dx
mov dx, 0
inc cx
cmp ax, 0
jne GET_NUM_LOOP
PRINT:
pop dx
add dx, 30h
mov ah, 02h
int 21h
loop PRINT
;enter and change line mov dl, 0dh
mov ah, 02h
int 21h
mov dl, 0ah
mov ah, 02h
int 21h
RESAVEREG
ret
print_dec endp
main endp
;------------------------ code ends
;************************ end start
WORD版本.。

相关文档
最新文档