实验二--分支程序实验和循环程序实验
实验二 分支结构程序设计实验

实验二 分支结构程序设计实验1、实验目的和要求:掌握汇编语言分支程序的设计方法;2、实验内容:编程序求分段函数Y 的值。
已知变量X 为16位带符号数, 分段函数的值要求 保存到字单元Y 中。
函数定义如下:1 (当X>0)Y = 0 (当x=0)—1 (当X<0)3、实验仪器与器材:计算机及EMU8086汇编软件等。
4、实验原理:分支结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的分支语句。
分支结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解。
程序流程图是根据解题分析所绘制的程序执行流程图。
5、实验过程与测试数据(含电路图/程序流程框图):6、实验分析:自己分析7、实验体会:自己总结实验参考程序:DATA SEGMENTX DW -128Y DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DATAMOV DS,AXMOV AX,XCMP AX,0JG ISPNJZ ISZNMOV Y,-1JMP FINISHISPN: MOV Y,1JMP FINISHISZN: MOV Y,0FINISH: MOV AH,4CHINT 21HCODE ENDSEND START思考题:把程序修改成如下的分段函数的值—1 (当X>=0)Y=1 (当X<0)。
基于arm的汇编实验报告

竭诚为您提供优质文档/双击可除基于arm的汇编实验报告篇一:汇编实验报告实验一(1)熟悉汇编语言程序调试环境及顺序程序设计一、实验目的及要求:1.学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。
2.学会使用eDIT、mAsm、LInK、Debug等软件工具。
3.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。
二、熟悉汇编语言程序调试环境1.汇编语言源程序的建立本例中给出的程序是要求从内存中存放的10个无符号字节整数数组中找出最小数,将其值保存在AL寄存器中。
设定源程序的文件名为Abc。
DATAsegmenTbuFDb23h,16h,08h,20h,64h,8Ah,91h,35h,2bh,7Fh cneQu$-buFDATAenDscoDesegmenTAssumecs:coDe,Ds:DATAsTART:pushDsxoRAx,AxpushAxmoVAx,DATAmoVDs,AxmoVbx,oFFseTbuFmoVcx,cnDeccxmoVAL,[bx]IncbxLp:cmpAL,[bx]JbenexTmoVAL,[bx]nexT:IncbxDeccxJnZLpmoVAh,4chInT21hcoDeenDsenDsTART键入以下命令:c:\>eDITAbc.Asm此时屏幕的显示状态如图1所示。
1图1用eDIT编辑Abc.Asm程序窗口程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出源程序进行修改。
2.将源程序文件汇编成目标程序文件一般情况下,mAsm汇编程序的主要功能有以下3点:(1)检查源程序中存在的语法错误,并给出错误信息。
(2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.obJ。
(3)若程序中使用了宏指令,则汇编程序将展开宏指令。
源程序建立以后,在Dos状态下,采用宏汇编程序mAsm 对源程序文件进行汇编,其操作过程如图2所示。
《c语言程序设计》实验报告(实验-2)

《c语⾔程序设计》实验报告(实验-2)《C语⾔程序设计》实验报告2013~2014学年第⼆学期班级姓名学号指导教师实验⼀实验项⽬名称:C程序的运⾏环境和运⾏C程序的⽅法所使⽤的⼯具软件及环境:Visual C++ 6.0⼀、实验⽬的:1.了解在Visual C++ 6.0环境下如何编辑、编译、连接和运⾏⼀个C程序;2.通过运⾏简单的C程序,初步了解C源程序的特点。
⼆、预习内容:教材《C语⾔程序设计教程》第1章。
三、实验内容:1. 在Visual C++ 6.0环境下输⼊并运⾏下⾯的程序:#includeint main( ){printf("This is a C program.\n");return 0;}2. 在Visual C++ 6.0环境下输⼊下⾯的程序(有语法错误),编译、连接、调试该程序,直⾄程序⽆语法错误,然后运⾏程序,并观察分析运⾏结果。
#includeint main( ){int a,b,suma=3;b=4;sun=a+b;print(“%d+%d=%d\n”,a,b,sum);return 0;}四、实验结果:1. 运⾏结果(或截图):This is a C program.Press any key to continue2. (1) 改正后的源程序:#includeint main( ){int a,b,sum;a=3;b=4;sum=a+b;printf("%d+%d=%d\n",a,b,sum);return 0;}(2) 运⾏结果(或截图):3+4=7五、思考题:1. ⼀个C程序上机的步骤有哪些?答:上级输⼊与编辑源程序—对原程序进⾏编译–与库函数链接–运⾏可执⾏的⽬标程序。
2. 组成C程序的基本单位是函数,⼀个函数包括哪⼏个部分?答:⼀个函数包括两部分:分别为函数头或函数⾸部和函数体。
成绩指导教师签名实验⼆实验项⽬名称:数据类型、运算符和表达式所使⽤的⼯具软件及环境:Visual C++ 6.0⼀、实验⽬的:1.掌握整型、实型与字符型这三种基本类型的概念;2.掌握常量及变量的使⽤⽅法;3. 掌握基本算术运算符及其表达式的使⽤⽅法;4. 掌握++、--运算符、赋值运算符及其表达式的使⽤⽅法。
程序设计基础实验报告

实验一 用C 语言编写简单程序一、实验目的1. 熟悉VC6.0的编程环境,掌握运行C 程序的基本步骤。
2. 了解C 程序的基本框架,模仿例题编写简单的C 语言程序。
3. 正确书写算术表达式、赋值表达式和关系表达式。
4. 掌握基本输入输出函数的使用,正确调用C 语言提供的数学库函数。
5. 掌握简单的单步调试方法。
二、实验环境Windows XP ;Visual C++ 6.0。
三、实验内容1.在屏幕上显示一个句子“What is a computer?”。
2.求华氏温度150F 对应的摄氏温度。
计算公式如下:其中,c 表示摄氏温度;f 表示华氏温度。
3.输入x ,计算下列分段函数的值(保留2位小数),请调用sqrt 函数求平方根,调用pow 函数求幂。
4. 输入一个正整数m (0100)m ≤≤,求100i m i =∑。
四、实验要求1. 将上机验证正确的源代码写到实验报告上。
2.根据自己的真实感受,认真填写实验分析和实验心得以及问题和建议。
3.按时提交实验报告。
553299c f =⨯-⨯21(1)2 x<02()0x x f x ⎧+++⎪=≥一、实验目的1.熟练掌握关系表达式的使用。
2.熟练掌握使用else-if 语句实现多分支结构程序设计。
二、实验环境Windows XP ;Visual C++ 6.0。
三、实验内容1.输入x ,计算并输出下列分段函数sign(x)的值。
2.输入月薪salary ,输出应交的个人所得税tax (保留2位小数)。
按照2011年开始实行的新的个人所得税法,计算公式为:tax = rate*(salary-3500)-deduction 。
当salary≤3500时,rate=0、deduction=0当3500<salary≤5000时,rate=3%、deduction=0当5000<salary≤8000时,rate=10%、deduction=105当8000<salary≤12500时,rate=20%、deduction=555当12500<salary≤38500时,rate=25%、deduction=1005当38500<salary≤58500时,rate=30%、deduction=2775当83500<salary 时,rate=45%、deduction=135053.输入一个正整数n ,再输入n 个学生的百分制成绩,统计各等级成绩的个数。
最新版C语言重新设计基础实验实验二周信东输入输出方法及分支结构程序设计

}
}
运行结果:
请在此粘贴本程序运行成功时的截图
Eh3-1请在下面分别插入完整填空后的源程序代码及运行成功时的画面:
源程序代码:
请在此粘贴填空后正确的程序代码。
#include<stdio.h>
void main()
{
int c,t,m;
printf("int put the number of coat and trousers your want buy:\n");
请把观察这些变量时的画面粘贴到下面:
请在此框内插入观察到变量值的截图
7、C程序在什么情况下运行需要输入数据才能得出运行结果?输入的测试数据需要注意哪些事项?
在此回答问题
在调试与调试完成后的运行中,
类型要对,格式要正确,数据范围要在规定范围内
8、在运行Eh3-1.c时,至少需要输入几组测试数据才能对程序进行完整的测试?如何进行输入多组数据的测试?
源程序代码:
请在此框内粘贴修改后正确的程序代码。
#include<stdio.h>
void main()
{
int i,j,p,m,n;
scanf("%d,%d,%d",&i,&j,&p);
m=i+j+p;
n=(int)m/3;
printf("%d,%d\n",m,n);
}
运行结果:
请在此框内插入本程序运行成功时的截图
{
int score;
printf("enter score=");
任务实训2 Java分支结构程序设计(一)

任务实训2 Java分支结构程序设计(一)一、实训目的通过本次实验,掌握Java的流程控制语句:顺序、分支语句的使用。
并能熟练运用if语句,switch语句解决实际问题。
二、实训内容1.阅读程序写出执行结果。
2.编写判断输入的年份是否是闰年的程序,闰年的条件是能被4整除,但不能被100整除;能被4整除,又能被400整除。
3.给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。
90分以上为A,81-89分为B,70-79分为C,60-69分为D,60分以下为E。
说明:Character.toUpperCase(ch)可以把小写字母转换为大写字母。
4.任意给定3个正实数(a,b,c)作为三角形的三边,判断是否能组成三角形,若可以则输出它的面积。
请编程。
说明:Math.sqrt()方法为求平方根;a+b>c,a+c >b,b+c>a同时成立组成三角形;p=(a+b+c)/2;面积=Math.sqrt(p*(p-a)*(p-b)*(p-c))三、实训步骤1、启动NetBeans。
2、新建一个项目,项目名称为ch02,存放在自己建立的文件夹下。
(具体操作步骤可以再复习一下实验一的内容)3、通过选择[文件]菜单中的[新建文件]命令,实现创建Java Application程序。
四、阅读程序写出执行结果及程序的功能通过选择[文件]菜单中的[新建文件]命令,实现以下实例内容。
通过练习并能熟练运用if语句,switch语句解决实际问题。
1、程序的功能及结果,并说明各语句的作用源程序名:NumberSort .javapackage chapter04;public class NumberSort {public static void main(String[] args) {int a=5,b=7,c=3,t;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}System.out.print(a+" "+b+" "+c);}}五、独立编写Java Application程序1.编写判断输入的年份是否是闰年的程序,闰年的条件是能被4整除,但不能被100整除;能被4整除,又能被400整除。
实验报告

南通大学计算机科学与技术学院微机原理实验报告书班级:智控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.熟悉8086指令系统的数据传送指令及8086的寻址方式。
2.利用TurboDebugger调试工具来调试汇编语言程序。
实验任务:1.通过下述程序段的输入和执行来熟悉TurboDebugger的使用,并通过显示器屏幕观察程序的执行情况。
练习程序段如下:MOVBL,08HMOVCL,BLMOVAX,03FFHMOVBX,AXMOVDS:[0020H],BX2.用以下程序段将一组数据压入(PUSH)堆栈区,然后通过不同的出栈顺序出栈,观察出栈后数据的变化情况。
压栈程序段如下:MOVAX,0102HMOVBX,0304HMOVCX,0506HMOVDX,0708HPUSHAXPUSHBXPUSHCXPUSHDX出栈程序段请自行编写(用不同的出栈顺序)。
3.指出下列指令的错误并加以改正,上机验证之。
(1)MOV[BX],[SI](2)MOVAH,BX(3)MOVAX,[SI][DI](4)MOVBYTEPTR[BX],2000H(5)MOVCS,AX(6)MOVDS,2000H4.设置各寄存器及存储单元的内容如下:(BX)=0010H,(SI)=0001H(10010H)=12H,(10011H)=34H,(10012H)=56H,(10013H)=78H(10120H)=0ABH,(10121H)=0CDH,(10122H)=0EFH说明下列各条指令执行完后AX寄存器中的内容,并上机验证。
(1)MOVAX,1200H(2)MOVAX,BX(3)MOVAX,[0120H](4)MOVAX,[BX](5)MOVAX,0110H[BX](6)MOVAX,[BX][SI](7)MOVAX,0110H[BX][SI]5.将DS:1000H字节存储单元中的内容送到DS:2020H单元中存放。
试分别用8086的直接寻址、寄存器间接寻址、变址寻址、寄存器相对寻址传送指令编写程序段,并上机验证结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二分支程序实验和循环程序实验【上篇】分支程序实验
一、知识点
1、控制转移类指令
无条件转移指令JMP 、条件转移指令Jcc
2、单分支结构
注意分支条件的选择:当条件满足时,直接转到分支的下一条指令;否则,执行单分支语句段。
例如,求AX中数据的绝对值:
CMP AX, 0
JGE NONEG
NEG AX
NONEG: MOV RESULT, AX
思考:如果条件改为JL,以上分支程序段如何改写?是比较程序段的复杂度?
3、双分支结构
双分支结构中条件的选择任意,但特别注意:
当分支语句段1结束后,一定要用JMP指令跳过分支语句段2,即跳到分支结束的位置。
例如,判断AX中的数据的符号,若为非负数,则0→sign;否则,-1→sign。
CMP AX, 0
JGE NONEG
MOV SIGN, -1
JMP END0
NONEG: MOV SIGN, 0
END0: ……
4、分支结构程序测试用例的设计
基本准则:测试用例要满足能够使每个分支都能执行一次,特别注意边界数据的测试。
换句话说,就是首先分析每个分支条件,找出使条件成立、不成立时的数据取值范围,然后从每个范围中选一个数据,形成一个测试用例;另外,边界数据作为单独一个测试用例。
【举例说明】
(1)单分支/双分支结构的测试:比如“判断AX中的数据的符号”程序段,需要设计三个测试用例,即分AX>0、AX<0、AX=0三种情况,分别确定一个数据(假设AX分别取5、-2、0三个数据)。
其中,0就是一个介于条件成立与不成立之间的边界数据。
具体操作:在DEBUG环境下,用R命令改变AX的值,调试,分析程序流程和结果。
(2)多分支结构的测试:对每一种情况设计一个测试用例,即1~9中的一个数、a~z 中的一个字符、A~Z中的一个字符、回车符、其他字符,然后设计边界测试用1、9、A、Z、a、z,共11个测试数据。
具体操作:当测试数据需要从键盘输入时,可在在MS-DOS环境下逐个使用测试数据运行;当测试数据是程序中某个变量或寄存器的值时,可在DEBUG环境下,利用R或E 命令用测试数据修改寄存器或变量的值,然后运行。
二、实验内容
1、编写一个程序,显示AL寄存器中的两位十六进制数
三、实验步骤
1、用记事本编写.ASM源程序。
2、对源程序进行汇编及连接,产生.EXE文件
四、实验报告要求
参考下面的程序,完成实验内容,截图显示,重点画出程序的流程图。
参考程序清单
⑴ 显示AL中两位十六进制数程序: TWO.ASM
CODE SEGMENT
ASSUME CS:CODE
START:MOV AL,3EH
MOV BL,AL
MOV DL,AL
MOV CL,4
SHR DL,CL
CMP DL,9
JBE NEXT1
ADD DL,7
NEXT1:ADD DL,30H
MOV AH,2
INT 21H ;显示高位ASCII码 MOV DL,BL
AND DL,0FH
CMP DL,9
JBE NEXT2
ADD DL,7
NEXT2:ADD DL,30H
MOV AH,2
INT 21H ;显示低位ASCII码
MOV AH,4CH
INT 21H
CODE ENDS ;返回DOS
END START
【下篇】循环程序实验
一、知识点
1、常用循环结构的汇编语言实现
(1)对于确定循环次数的循环结构,一般使用LOOP指令构成循环,LOOP指令中的标号位循环体的起始位置。
但在循环之前要将循环次数送CX。
(2)对于循环次数不定的循环结构,一般用Jcc指令与标号一起构成循环。
(3)循环结构的汇编语言程序一般包含三部分,即
循环初始部分——循环之前准备相应的条件,如循环次数、相关变量/寄存器赋初
值等;
循环体——重复执行的程序代码,其中包含改变与循环条件有关的值;
循环控制部分——判断循环条件,决定是否继续循环。
2、循环程序的测试技巧
单步调试与分段调试结合:即对循环体内部的程序段的测试用单步执行的方法,执行1~2遍循环体,观察并分析每一步的结果及程序流程;对于整个循环体程序段的测试,一般用G命令分段调试,通过结果判断循环体的正确程度。
二、实验内容
1、编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z
字符,均显示'c';若是回车字符<CR>(其ASCII码为0DH),则自动结束程序,若为其它字符则不显示,循环等待新的字符输入。
三、实验步骤
1、用记事本编写.ASM源程序。
2、对源程序进行汇编及连接,产生.EXE文件
四、实验报告要求
完成实验内容,截图显示,重点画出程序的流程图。
实验代码
DATA SEGMENT
DB 0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MAIN PROC FAR
PUSH DS
SUB AX,AX ;AX清零
PUSH AX
MOV AX,DATA
MOV DS,AX ;DATA段地址给DS
NEXT:
MOV AH,07 ;INPUT CHARACTER INT 21H
CMP AL,0DH
JE OVER ;enter
CMP AL,'0'
JGE DA0 ;>=0
JMP NEXT
DA0:
CMP AL,'9'
JLE DA09 ;<=9
CMP AL,'A'
JGE DA_GA ;>=a
JMP NEXT
DA_LA:
CMP AL,'Z'
JLE CHR ;A~Z
JMP NEXT
CMP AL,'a'
JGE DA_LA
JMP NEXT
DA_GA:
CMP AL,'z'
JLE CHR ;a~z
JMP NEXT
;////////////////////////////
DA09:
MOV AH,02
MOV DL,AL ;DISPLAY NUMBER
INT 21H
JMP NEXT
CHR:
MOV AH,2
MOV DL,'c' ;DISPLAY CHARACTER:c INT 21H
JMP NEXT
OVER:
RET ;BACK
MAIN ENDP
CODE ENDS
END MAIN
实验截图:
(1)
(2)。