实验二--分支程序实验和循环程序实验
实验二 分支结构程序设计实验
实验二 分支结构程序设计实验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的直接寻址、寄存器间接寻址、变址寻址、寄存器相对寻址传送指令编写程序段,并上机验证结果。
实验二 C语言中的分支语句程序设计实验
实验二 C语言中的分支语句程序设计一、实验目的:1.掌握C语言的基本语法;2.掌握C语言的表达式运算及标准库函数的调用方法;3.掌握C语言的基本输入输出语句;4.掌握字符类型、整型和浮点型数据的输入输出及表达式计算方法;5.掌握if语句和switch语句的用法;6.掌握分支程序结构的设计思想;二、实验内容(一)分析程序,用程序验证下面各个表达式的值1、当整型变量a,b,c的值分别为3,4,5时,以下各语句执行后a,b,c的值为多少? (1) if(a>c) {a=b; b=c; c=a;}else {a=c; c=b; b=a;}执行后a,b,c的值为,,(2) if(a<c) a=c;else a=b; c=b; b=a;执行后a,b,c的值为,,(3) if(a!=c) ;else a=c; c=b; b=a;执行后a,b,c的值为,,2、若整数x分别等于95、87、100、43、66、79,57,则以下程序段运行后屏幕显示是什么?switch(x/10){ case 6:case 7: printf("Pass\n"); break;case 8: printf("Good\n"); break;case 9:case 10: printf("VeryGood\n"); break;case 5 : printf("Between Pass and Fail\n");default: printf("Fail\n");}x等于95时,程序段运行后屏幕上显示。
x等于87时,程序段运行后屏幕上显示。
x等于100时,程序段运行后屏幕上显示。
x等于43时,程序段运行后屏幕上显示。
x等于66时,程序段运行后屏幕上显示。
x等于79时,程序段运行后屏幕上显示。
x等于57时,程序段运行后屏幕上显示。
汇编语言实验报告
汇编语⾔实验报告汇编语⾔实验报告专业:班级:姓名:学号:2011年12⽉14⽇⽬录实验1 利⽤DEBUG调试汇编语⾔程序段 (3)实验2 初级程序的编写与调试实验(⼀) (11)实验3 初级程序的编写与调试实验(⼆) (20)实验4 汇编语⾔程序上机过程 (28)实验5 分⽀程序实验 (33)实验6 循环程序实验 (40)实验7 ⼦程序实验 (45)实验1 利⽤DEBUG调试汇编语⾔程序段⼀.实验⽬的1.熟悉DEBUG有关命令的使⽤⽅法;2.利⽤DEBUG掌握有关指令的功能;3.利⽤DEBUG运⾏简单的程序段。
⼆.实验内容1.进⼊和退出DEBUG程序;1)开始—运⾏,输⼊cmd,点确定进⼊命令窗⼝2)在命令窗⼝中输⼊dubug进⼊debug程序3)进⼊debug窗⼝后,输⼊q命令退出debug2.学会DEBUG中的1)D命令(显⽰内存数据D 段地址:偏移地址)例1:-D100 ;显⽰DS段, 0100开始的128个节内容说明: 指定要显⽰其内容的内存区域的起始和结束地址,或起始地址和长度。
① D SEGREG[起始地址] [L 长度];显⽰SEGREG段中(缺省内默认为DS), 以[起始地址] (缺省内为当前的偏移地址),开始的[L 长度] (缺省内默认为128)个字节的内容.② D SEGREG[段地址:偏移地址];显⽰SEGREG段中(缺省内默认为DS), [段地址:偏移地址] 开始的[L 长度] (缺省内默认为128)个字节内容-D ;默认段寄存器为DS,当前偏移地址(刚进⼊debug程序偏移地址为0100H)-D DS:100 ;显⽰DS段, 0100H开始的128个字节内容-D CS:200 ;显⽰CS段, 0200H开始的128个字节内容-D 200:100 ;显⽰DS段, 0200:0100H开始的128个字节内容-D 200 ;显⽰DS段, 0200H开始的128个字节内容-D 100 L 10 ;显⽰DS段, 100H开始的8H个字节内容2)E命令(修改指定内存)-E100 11 22 33 44 55 66 77 88-D 100结果:0AF1:0100 11 22 33 44 55 66 77 88例2:-E 100:E 地址数据表;从指定的地址开始⽤数据表给定的数据修改存储单元。
可编程序控制器(PLC)实验报告
可编程序控制器实验报告**:**学号:*************实验一认识FXGP与PLC一.实验目的:1.熟悉FXGP的操作界面2.熟悉FXGP菜单的显示和操作方式3.注意观察FXGP系统提供的信息4.学会设置路径、新建程序5.初步学习用指令表、梯形图方式编制PLC程序6.理解指令表和梯形图的对应关系7.掌握FXGP中的程序传送到PLC的方法8.通过实验了解和熟悉FX系列PLC的外部结构和外部接线方法9.熟悉简易编程器的使用。
10. 掌握调试程序的方法二.实验内容(一)使用FXGP软件编辑程序1.设置文件路径为C:\PLC12.进入FXGP软件3.新建一个序程序,指定正确的PLC类型,程序名称[untit101] 4.用梯形图形式编辑如下一段程序5、通过转换,在指令表形式下阅读程序:LD X000AND X001LDI X000AND X002ORBLD X007OR Y000ANBAND X006OUT Y000LDI X004AND X005MPSAND Y000OUT C0MRDAND X010OUT Y001MPPAND Y001RST C0AND C0OUT Y002END关于PLc的说明:PLC的硬件基本组成; (一)中央处理单元(CPU)(二)存储器(三)输入接口电路(四)输出接口电路(五)电源(六)编程器PLC的软件结构:(一)系统监控程序(二)用户程序PLC的供电电源是一般市电,也有用直流24伏供电的,PLC对电源稳定要求度不高,一般允许电源电压额定值在10%之间波动。
PLC的输入电路:一般有三种类型一种是直流12——24V输入,另一种是交流100——120,200——240V输入,第三种是交直流输入。
PLC的输出也有三种形式,即继电器输出,晶体管输出,晶闸管输出。
FX-20P-E手持式编程器(简称HPP)可以用于FX系列PLC,也可以通过转换器FX-20P-E-FKIT用于F1、F2系列PLC。
汇编语言设计实验报告参考模板
南通大学计算机类课程实验报告MOV [Z],AX ;将最后的结果送给ZMOV AH,4CH ;返回DOSINT 21HCODE ENDSEND START(如不够,请另附纸)六、实验结果七、实验存在问题和解决办法问题:在实验过程中,对指令不熟悉,以至于不熟悉命令的应用及debug的调用命令。
代码还不能灵活运用,编写代码有所困难。
解决办法:多试调试。
八、实验心得和建议对于DEBUG的追踪还不熟悉,不过在指导老师的认真教导下,我们渐渐了解了汇编语言。
也能读懂一些简单的汇编语言。
我觉得在以后的学习中,我们必须要加强汇编语言的学习力度。
在学习过程中,不仅要大量阅读源程序,分析其功能,而且要借鉴他人的经验,练习编写完成特定功能的源程序。
南通大学计算机类课程实验报告MOV AH,2INT 21HMOV AH,4CH ;返回DOSINT 21HCODE ENDSEND START(如不够,请另附纸)六、实验结果七、实验存在问题和解决办法问题:在实验过程中,对指令不熟悉,以至于不熟悉命令的应用及debug的调用命令。
代码还不能灵活运用,编写代码有所困难。
解决办法:多试调试。
八、实验心得和建议第二次做汇编实验了,在心理上已没有了第一次做实验的那种茫然不知。
在实验中遇到的错误很多,并且无论怎样修改都还是不能使程序达到完美的状态的时候,情绪会比较不稳定,这时候才知道,编写程序除了有思路,有想法,有语言知识,还要有很强大的心理,要有耐心,才能去面对这一连串的错误。
在学习过程中,不仅要大量阅读源程序,分析其功能,而且要借鉴他人的经验,练习编写完成特定功能的源程序。
南通大学计算机类课程实验报告PUSH DXMOV DL,0AHMOV AH,2INT 21HPOP DXPOP AXRETCRLF ENDPCODE ENDSEND START(如不够,请另附纸)(如不够,请另附纸)六、实验结果七、实验存在问题和解决办法问题:在实验过程中,对指令不熟悉,以至于不熟悉命令的应用及debug的调用命令。
汇编语言程序设计实验报告
实验报告实验名称汇编语言程序设计||专业班级:信息安全学号:姓名:实验一汇编语言上机过程和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 文件名。
电子科技大学_汇编实验报告
电子科技大学计算机工程学院标准实验报告(实验)课程名称电子科技大学教务处制表电子科技大学实验报告实验一学生姓名:穆萨·图拉克学号:2012060090033 指导教师:实验地点:主楼A2-412 实验时间:19:00~一、实验室名称:二、实验项目名称:汇编源程序的上机调试操作基础训练三、实验学时:四、实验原理:(包括知识点,电路图,流程图)DEBUG 的基本调试命令;汇编数据传送和算术运算指令MASM宏汇编开发环境使用调试方法五、实验目的:1. 掌握DEBUG 的基本命令及其功能2. 学习数据传送和算术运算指令的用法3. 熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程六、实验内容:(介绍自己所选的实验内容)1. DEBUG命令的使用2. 程序的调试与运行3. 编写程序计算以下表达式:Z=(5X+2Y-7)/2设X、Y的值放在字变量V ARX、V ARY中,结果存放在字节单元V ARZ中。
七、实验器材(设备、元器件):WinXP PC机,MASM,50 ,VisulASM软件平台。
八、实验步骤:(编辑调试的过程)1.编辑源程序,建立一个以后缀为.ASM的文件.2.汇编源程序,检查程序有否错误,有错时回到编辑状态,修改程序中错误行。
无错时继续第3步。
3.连接目标程序,产生可执行程序。
4.用DEBUG程序调试可执行程序,记录数据段的内容。
九、实验数据及结果分析:(实验运行结果介绍或者截图,对不同的结果进行分析)程序说明:功能:本程序完成Z=(5X+2Y-7)/2这个等式的计算结果求取。
其中X 与Y是已知量,Z是待求量。
结构:首先定义数据段,两个DB变量VARX与VARY(已经初始化),以及结果存放在VARZ,初始化为?。
然后定义堆栈段,然后书写代码段,代码段使用顺序程序设计本程序,重点使用MOV和IMUL以及XOR,IDIV完成程序设计。
详细内容见程序注释。
程序清单:DATA SEGMENTVARX DB10VARY DB10VARZ DB?DATA ENDSSTACK SEGMENT PARA STACKSTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKMAIN:MOV AX,DATAMOV DS,AXMOV AL,VARXMOV AH,VARYSAL AL,1SAL AL,1ADD AL,VARXSAL AH,1ADD AL,AHSUB AL,7SAR AL,1MOV VARZ,ALMOV AH,4CHINT21HCODE ENDSEND MAIN程序框图:结束调试说明:将汇编语言(.asm文件)通过masm命令转换为目标程序(.obj 文件),通过link命令转换为目标程序可执行程序(.exe文件); 这次试验还要用-p参数以及d参数显示结果为:十、实验结论:(联系理论知识进行说明)通过本次实验,我们学习了解掌握了DEBUG 的基本命令及其功能,学习了数据传送和算术运算指令的用法,熟悉了在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。
微处理器与应用实验报告
MOV 41H,#78H
MOV 42H,#56H
MOV R0,30H
MOV R1,40H
MOV A,R0
ADD A,R1
DA A
MOV 50H,A
MOV R0,31H
MOV R1,41H
MOV A,R0
ADDC A,R1
DA A
MOV 51H,A
MOV R0,32H
MOV R1,42H
14、根据已给程序分别编辑汇编程序和C51程序;
15、编辑完成以后对程序进行编译,生成目标代码;
16、运行、调试目标代码和进行结果检查;
17、根据要求分别编写汇编程序和C51程序实现两个16位无符号数的比较;
18、编译,生成目标代码,分别采用单步和宏单步运行程序,观察有关单元中的内容的变化;
19、修改内存单元中的内容在观察存储单元内容的变化;
微处理器原理与应用实验日志四
实验题目:
分支和循环程序设计
实验目的:
1、掌握分支程序编写方法
2、掌握循环程序设计的方法和技巧
3、学习程序调试的基本过程和方法
实验要求:
5、阅读、运行并调试已给的分支和循环程序;
6、模仿已给程序分别汇编程序和C51程序实现两个16位无符号数的比较的程序;
实验主要步骤:
13、启动计算机,进入Keil C51的集成开发环境;
3、根据要求编辑程序;
4、编辑完成以后对程序进行编译,生成目标代码;
5、编译,生成目标代码,分别采用单步和宏单步运行程序,观察有关单元中的内容的变化;
实验结果:
汇编程序:
ORG 0000H
AJMP START
ORG 0100H
python编程基础(分支、循环和函数)实验总结
Python编程基础实验总结随着计算机科学的迅速发展,编程已经成为了一门重要的技能。
而Python作为一种广泛使用的编程语言,其简洁易读的特点使得它成为了许多人学习编程的首选。
在Python编程基础课程中,学习分支、循环和函数是至关重要的一部分。
本文将对Python编程基础中的分支、循环和函数进行实验总结,以便更好地理解和掌握这些知识点。
一、分支在Python编程中,分支结构可以使程序根据不同的条件执行不同的代码块。
常见的分支结构包括if语句、if-else语句和if-elif-else语句。
我在实验中学习了如何使用这些语句来实现条件判断和分支控制。
我使用if语句判断一个数是否大于0,如果大于0则输出"这是一个正数",否则输出"这是一个负数"。
通过这些实验,我更加熟悉了Python中分支结构的使用方法,以及如何编写出高效且可读性强的代码。
二、循环循环结构是Python编程中常用的一种结构,它可以使程序重复执行某段代码。
Python中有两种循环结构,分别是while循环和for循环。
在实验中,我学习了如何使用这两种循环结构来实现不同的功能。
我使用while循环计算1到100的和,以及使用for循环遍历列表中的元素并进行相应的操作。
通过这些实验,我对Python中循环结构的使用有了更深入的理解,同时也学会了如何避免循环陷阱以及如何编写高效的循环代码。
三、函数函数是Python编程中的重要部分,它可以将一段代码封装起来,以便复用和模块化。
我在实验中学习了如何定义和调用函数,以及函数的参数传递和返回值的使用。
通过实验,我掌握了如何编写简单的函数,并且了解了函数的作用域和闭包的相关知识。
我还学习了如何使用函数来提高代码的重用性和可维护性,以及如何编写符合规范的函数文档和注释。
总结通过对Python编程基础中分支、循环和函数的实验总结,我对这些知识点有了更深入的理解和掌握。
金陵科技学院_35841
金陵科技学院汇编语言程序设计实验指导书序号:适用专业:计算机科学与技术电子工程一、性质、任务和基本要求“汇编语言程序设计”是一门实践性很强的课程,只有多上机调试通过自己所编写的程序,才能熟练地掌握程序设计的方法与技巧,才能真正学好本课程。
因此,实验是本门课程的一个重要学习环节。
为了充分利用有限的机时,提高上机效率,保证实验效果,特对实验作出如下说明与要求:1.上机前应做好充分的准备工作。
对选定的实验题要先编好程序,并进行认真的静态检查,减少错误的发生,同时,还要预先估计程序运行的结果或结果范围,做到心中有数。
2.上机前应熟悉上机操作步骤和各种操作调试命令。
3.下机后要对实验进行整理,分析程序调试过程中所出现的各种情况对未通过的程序更要认真分析原因,总结经验教训。
4.认真完成实验报告。
实验报告的内容为:本次实验的目的及要求、实验内容、算法描述、程序框图、寄存器及变量的使用说明、所通过的源程序清单、运行结果、在调试过程中的体会、经验与教训。
二、内容实验一、DEBUG的使用㈠、目的及要求进一步熟悉常用的单、双操作数指令和各种寻址方式的功能及使用格式,初步掌握DEBUG程序的基本使用方法,为以后的实验打下基础。
㈡、实验内容⑴、用DEBUG的基本命令,单步执行下面的程序,检查每条指令执行后目的地址及有关寄存器的内容。
阅读下列程序,并指出程序执行之后,以BUF2,BUF3,BUF4为首址的3个字节存贮区中存放的数据。
STACK SEGMENT STACKDB 200 DUP(0)STACK ENDSDATA SEGMENTBUF1 DB 0,1,2,3,4,5,6,7,8,9BUF2 DB 10 DUP(0)BUF3 DB 10 DUP(0)BUF4 DB 10 DUP(0)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK STARTY:MOV AX,DATAMOV SI,OFFSET BUF1MOV DI,OFFSET BUF2MOV BX,OFFSET BUF3MOV BP,OFFSET BUF4MOV CX,10LOPA:MOV AL,[DI]MOV [SI],ALINC ALMOV [BX],ALADD AL,3MOV DS:[BP],ALINC SIINC DIINC BPINC BXDEC CXJNE LOPAMOV AH,4CHINT 21HCODE:ENDSEND START⑵、用DEBUG的A命令,键入如下程序段:MOV BX ,8275H MOV AX ,3412H;双精度数34128275h →AX 、BX ADD BX ,92A5H ADC AX ,2F65H;加上双精度数2F6592A5HADD BX ,OEAE6H ADC AX ,9C88H;加上双精度数9C88EAE6H 然后用 T 命令单步执行,查看每条指令执行后有关寄存器的内容及标志位的变化。
- 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)。