当前位置:文档之家› 实验二 分支程序实验和循环程序实验

实验二 分支程序实验和循环程序实验

实验二  分支程序实验和循环程序实验
实验二  分支程序实验和循环程序实验

实验二分支程序实验和循环程序实验【上篇】分支程序实验

一、知识点

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';若是回车字符(其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)

c语言实验报告4 循环结构程序设计

《C程序设计》课程实验报告 学院:班级:姓名:学号: 实验设备:计算机1台实验日期:2011年3月1日 实验项目名称循环结构程序设计 实验目的 掌握使用三种循环语句实现循环结构的方法。 实验要求:能用while~ do~while for 三种循环语句实现循环结构,编写简单的程序,掌握这三种循环语句。 实验内容(包括步骤):1.猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半另一个,以后每天早晨都吃剩下的一半另一个,到第十天早晨再想吃时,就剩一个桃子。问第一天共摘了多少桃子。 要求:分别用三种语句编写程序。 2.编写程序验证下列结论:任何一个自然数n的立方都等于n个连续奇数之和。例如:13=1;23=3+5;33=7+9+11;43=13+15+17+19。 要求:程序对每个输入的自然数计算并输出相应的连续奇数,直到输入的自然数为0时止。 3.编写程序,求1-3+5-7+…-99+101的值。 4.编写程序,求e的值。e ≈ 1+1/1!+1/2!+1/3!+1/4!+…+1/n! (1)用for循环,计算前50项。 (2)用while循环,要求直至最后一项的值小于10-6。 5.编写程序,输出从公元1600年至2000年所有闰年的年号。每输出5个年号换一行。判断公元年是否为闰年的条件是:

(1)公元年数如能被4整除,而不能被100整除,则是闰年。 (2)公元年数如能被400整除也是闰年。 6.编写程序,打印以下图形: * *** ***** ******* ***** *** * 7.输入一行字符,统计输入的字符中字母‘a’出现的次数(包括大小写)。 8.我国1991年有11.6亿人口,要求根据人口平均年增长率,计算从1991年算起经过多少年后我国的人口增加到15亿。 9.有一个四位数F=BBAA,前二位数相同,后二位数相同,此数又是某个自然数T的平方,求此数。 10.分解一个正整数的所有质因数 调试与结果测试:部分程序出现错误经过调整后调试正常,达到题目要求的结果,运行正常。

实验3 顺序及分支结构程序设计

实验三顺序及分支结构程序设计 一、实验目的 1.熟悉运算符、表达式,掌握标准输入输出函数的适用方法和顺序结构程序设计的一般方法 2. 掌握if语句的格式与应用,if语句的嵌套格式与应用,条件运算符的作用,Switch 语句的格式与应用,Break语句的格式与应用。 二、预习内容 1.C语言的常用的运算符及其使用特点。 2. 常用的关系运算符及应用特点。 3.逻辑运算符的概念及应用特点 4.各种运算符的混合运算及不同运算符的优先级别。 5.条件分支语句的格式及应用。 6.Switch多分支选择语句的格式及应用。 三、实验内容 (一)阅读下列程序,并写出程序结果。 1. 输入两个实数a,b,然后交换它们的值,最后输出 #include void main() { float a,b,temp; printf("请输入a和b的值:"); scanf("%f,%f",&a,&b); printf("交换后, a=%f, b=%f\n",a,b); } 2. 完成下面的程序,在空白处填入a,b,c,取a,b,c中最大者赋给max。 A.if(a>b && a>c) B. if (a>b) max=________ if(a>c)

else max=______ if(b>c) else max=________ max=______ else else max=________ if(b>c) max=________ else max=_________ 3. 若整数x分别等于95、87、100、43、66、79,则以下程序段运行后屏幕显示是什 么? #include main() { int x; printf(“please input the x value:”); scanf(“%d”,&x); 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; default: printf("Fail\n"); } } x等于95时,程序段运行后屏幕上显示___ x等于87时,程序段运行后屏幕上显示___ x等于100时,程序段运行后屏幕上显示___ x等于43时,程序段运行后屏幕上显示___ x等于66时,程序段运行后屏幕上显示___ x等于79时,程序段运行后屏幕上显示___ (二)编制下列程序(在每道题的后面先写上程序,再粘贴运行结果截图) 1. 判断输入的数是否是13的倍数. 2.以下程序输入三个整数值给a,b,c,程序把b中的值给a,把c中的值给b,把a中的值给c,然后输出a,b,c的值

实验二--分支程序实验和循环程序实验

实验二分支程序实验和循环程序实验【上篇】分支程序实验 一、知识点 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文件 四、实验报告要求 参考下面的程序,完成实验内容,截图显示,重点画出程序的流程图。 参考程序清单

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

实验四分支和循环程序设计实验 一、实验要求和目的 1.熟悉汇编语言程序设计结构; 2.熟悉汇编语言分支程序基本指令的使用方法; 3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法; 4.了解汇编语言循环程序设计的基本流程; 5.熟悉汇编语言循环基本指令的使用方法; 6.掌握利用汇编语言的循环指令完成循环程序设计方法。 二、软硬件环境 1、硬件环境:计算机系统 windows; 2、软件环境:装有 MASM、DEBUG、LINK、等应用程序。 三、实验涉及的主要知识 在实际应用中,经常根据一些条件来选择一条分支执行。汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号相减而导致的结果来进行。 1.无条件转移指令 JMP 无条件转移指令 JMP是使程序无条件转移至目标处,又分为段内转移、段间转移。 2.条件转移指令 JXX 条件转移指令可分为三大类: 1).简单条件转移指令指令。根据单个标志位的状态判断转移条件。标志位指令转移条件意义 CF JC CF=1 有进位/借位 JNC CF=0 无进位/借位 ZF JE/JZ ZF=1 相等/等于 0 JNE/JNZ ZF=0 不相等/不等于 0 SF JS SF=1 是负数 JNS SF=0 是正数 OF JO OF=1 有溢出 JNO OF=0 无溢出 PF

JP/JPE PF=1 有偶数个 1 JNP/JPO PF=0 有奇数个 1 2).无符号数条件转移指令。 假设在条件转移指令前使用比较指令,比较两个无符号数A,B,指令进行的的操作是 A-B,其转移指令如下: 指令转移条件意义 JA/JNBE CF=0 AND ZF=0 A>B JAE/JNB CF=0 OR ZF=1 A>=B JB/JNAE CF=1 AND ZF=0 AB JGE/JNL SF=OF OR ZF=1 A>=B JL/JNGE SF OF AND ZF=0 A

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

嘉应学院计算机学院 实验报告 课程名称程序设计基础实验名称实验地点 指导老师实验时间提交时间 班级姓名座号 一、实验目的和要求 (1)熟悉掌握用while语句、do…while语句和for语句实现循环的方法。 (2)掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。 (3)进一步学习调试程序。 二、实验环境和方法 实验方法: (一)综合运用课本所学的知识,用不同的算法实现在不同的程序功能。 (二)结合指导老师的指导,解决程序中的问题,正确解决实际中存在的异常情况,逐步改善功能。 (三)根据实验内容,编译程序。 实验环境:Windows xp Visual C++6.0 三、实验内容及过程描述 实验步骤: ①进入Visual C++ 6.0集成环境。 ②输入自己编好的程序。 ③检查一遍已输入的程序是否有错(包括输入时输错的和编程中的错误),如发现有错, 及时改正。 ④进行编译和连接。如果在编译和连接过程中发现错误,频幕上会出现“报错信息”, 根据提示找到出错位置和原因,加以改正。再进行编译,如此反复直到不出错为止。 ⑤运行程序并分析运行结果是否合理。在运行是要注意当输入不同的数据时所得结果 是否正确,应运行多次,分别检查在不同情况下结果是否正确。 实验内容:编译以下题目的程序并调试运行。 (1)输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符的个数。 编写程序如下: #include int main() { char c; int letters=0,space=0,digit=0,other=0; printf("请输入一行字符:\n"); while((c=getchar())!='\n')

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

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

————————————————————————————————作者: ————————————————————————————————日期:

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

分支程序设计实验实验报告

实验二分支程序设计实验实验报告 实验名称:分支程序设计实验 指导教师罗志祥 专业班级光信1006 姓名张博学号U9 联系方式

一、任务要求: 熟练掌握KeilC 环境下汇编语言程序的调试方法,加深对汇编语言指令、机器码、寻址方式等基本内容的理解,掌握分支程序和简单程序的设计与调试方法,了解并行IO 口的使用。 1. 设有8bits 符号数X 存于外部RAM 单元,按以下方式计算后的结果Y 也存于外部RAM 单元,请按要求编写程序。 240 /2204020X X Y X X X X ?≥? =<

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

甘肃政法学院 本科生实验报告 ( 五) 姓名:赵明翔 学院:公安技术学院 专业:安全防范工程 班级: 2015级安全防范工程班 实验课程名称:程序设计 实验日期:2016年月日 开课时间:2015学年第二学期

(2)输出所有的水仙花数,所谓水仙花数是指一个3位数,其各位数字李方和等于该数本身。例如,153是水仙花数,因为153=12+53+33程序如下: #include int main() { int i,j,k,n; printf("paicissus numbers are"); for (n=100;n<1000;n++) { i=n/100; j=n/10-i*10; k=n%10; if(n==i*i*i+j*j*j+k*k*k) printf("%d",n); } printf("\n"); return 0; } 运行结果: (3)猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉一半,又

多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下了1个桃子了。求第一天共摘了多少桃子。 程序如下: #include int main() { int day,x1,x2; day=9; x2=1; while(day>0) {x1=(x2+1)*2; x2=x1; day--; } printf("total=%d\n",x1); return 0; } 运行结果: (4)①用牛顿迭代法求方程0634223=-+-x x x 在1.5附近的根. #include #include int main() {double x1,x0,f,f1; x1=1.5; do {x0=x1; f=((2*x0-4)*x0+3)*x0-6; f1=(6*x0-8)*x0+3; x1=x0-f/f1;

实验3:分支结构程序设计

实验2 顺序程序结构程序设计 一、实验目的 1.进一步掌握关系表达式和逻辑表达式的使用。 2.熟悉选择结构程序设计。 3.熟练使用if语句进行程序设计。 4.使用switch语句实现多分支选择结构。 二、实验要求 1.复习关系表达式、逻辑表达式、条件表达式的相关内容; 2.复习if语句、if…else语句、switch语句的执行流程; 3.完成各项实验任务及问题讨论。 三、实验内容 (一)程序改错题 说明:给出的程序可能存在语法或算法上的问题或需要补充完整,但需要修改的地方肯定在/*******Found*******/下的第一行上且每行仅有一个(类)错误,不能修改其它地方,不能修改或删除/*******Found*******/本身,遵循最少修改、保持一行一条语句及{与}单独一行的原则。考试时由于是计算机自动阅卷,修改时不能增加行或删除行,哪怕是一个空行都不行,否则可能得0分。 1.程序D7.c的功能是判断x和y是否相等,相等则显示x=y,不等则显示x<>y。(序号:7) #include int main(void) { /*********Found************/ char x, y; x = 39270; y = 41001; /*********Found************/ if (x != y) { printf("x=y"); } /*********Found************/ else;; { printf("x<>y\n"); } return 0; } 2.程序D1000.c的功能是从键盘输入3个浮点数a,b,c(输入时abc之间以空格相隔),首先按照输入顺序显示在屏幕上,然后按从小到大顺序把它们输出到屏幕上。。(序号:20) #include #include

汇编上机实验七 分枝程序

汇编上机实验七分枝程序 实验目的: 1、掌握利用间接转移指令JMP BX实现多岔分枝的方法。 2、宏替换指令MACRO及ENDM。 3、符号扩展指令CBW。 实验程序: disp macro msg lea dx,msg mov ah,9 int 21h mov ah,4ch int 21h endm stack segment stack db 256 dup(0) stack ends data segment parm db 16 dup(?) brtable dw offset bra,offset brb,offset brc dw offset brd,offset bre,offset brf msga db 'I like my IBM-PC!$' msgb db 'How are you!$' msgc db 'Nibao College$' msgd db 'This is a sample$' msge db 'Wellcome use my coputer!$' msgf db 'Theassemder language of 8088$' errms db 'Error!! invalid parameter!!$' data ends code segment assume cs:code,ds:data,ss:stack start: mov ax,data mov es,ax mov si,80h lea di,parm mov cx,16 cld rep movsb mov ds,ax cmp parm,2 jc err mov al,parm+2 sub al,30h jc err

循环程序设计实验

循环程序设计实验 实验目的 1、掌握循环程序的设计方法。 2、掌握比较指令、转移指令和循环指令的使用方法。 3、进一步掌握调试工具的使用方法。 实验预习要求 复习比较指令、条件转移指令和循环指令。 复习循环程序的结构、循环控制方法等知识。 读懂“实验内容”中给出的将十进制数转换为二进制数以及将二进制数转换为十进制数的程序。 根据“实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。 从“实验习题”中任选一道题目,编写源程序,以便上机调试。 实验内容 计算1+2+……n=,其中n通过键盘输入。要求在屏幕上提供如下信息: Please input a number(1627): ;出现此信息后通过键盘输入一个小于628的无符号整数 1+2+…..n=sum;其中n为用户输入的数,sum为所求的累加和 程序运行情况如下图所示(说明:图中所运行程序允许累加和不大于一个32位二进制数所能表示的范围)。编程指导 键盘输入的十进制数如 368在计算机中是以 33H,36H,38H形式存 放的,如何将它们转换 为一个二进制数0B,以 便对累加循环的循环次 数进行控制是本程序首 先要解决的问题。将键 盘输入的十进制数转换为二进制数的程序清单如下: DATA SEGMENT INF1 DB "Please input a number (0-65535):$" IBUF DB 7,0,6 DUP() DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS:DATA START: MOV A X, DATA MOV DS, AX MOV DX, OFFSET INF1 MOV AH, 09H INT 21H MOV DX, OFFSET IBUF ;键入一个十进制数(<65535) MOV AH, 0AH INT 21H MOV CL, IBUF+1 ;十进制数的位数送CX MOV CH, 0 MOV SI, OFFSET IBUF+2 ;指向输入的第一个字符(最高位)

循环程序设计实验

2.4 循环程序设计实验 2.4.1 实验目的 1、掌握循环程序的设计方法。 2、掌握比较指令、转移指令和循环指令的使用方法。 3、进一步掌握调试工具的使用方法。 2.4.2 实验预习要求 1、复习比较指令、条件转移指令和循环指令。 2、复习循环程序的结构、循环控制方法等知识。 3、读懂“2.4.3 实验内容”中给出的将十进制数转换为二进制数以及将二进制数转换为十进制数的程序。 4、根据“2.4.3 实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。 5、从“2.4.4 实验习题”中任选一道题目,编写源程序,以便上机调试。 2.4.3 实验内容 计算1+2+……n=?,其中n通过键盘输入。要求在屏幕上提供如下信息: Please input a number(1 627): ;出现此信息后通过键盘输入一个小于628的无符号整数 1+2+…..n=sum;其中n为用户输入的数,sum为所求的累加和 程序运行情况如下图所示(说明:图中所运行程序允许累加和不大于一个32位二进制数所能表示 的范围)。 1、编程指导 (1)键盘输入的十进 制数如368在计 算机中是以 33H,36H,38H 形式存放的,如 何将它们转换为 一个二进制数 101110000B,以便对累加循环的循环次数进行控制是本程序首先要解决的问题。将键盘输入的十进制数转换为二进制数的程序清单如下: DA TA SEGMENT INF1 DB "Please input a number (0-65535):$" IBUF DB 7,0,6 DUP(?) DA TA ENDS CODE SEGMENT ASSUME CS: CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV DX, OFFSET INF1 MOV AH, 09H INT 21H MOV DX, OFFSET IBUF ;键入一个十进制数(<65535) MOV AH, 0AH INT 21H MOV CL, IBUF+1 ;十进制数的位数送CX MOV CH, 0

实验四-分支结构程序设计实验-张鹏

实验四分支结构程序设计实验_张鹏 一、实验目的 1.掌握分支结构程序设计的基本设计方法; 2.掌握条件转移指令和无条件转移指令的使用方法; 3.掌握指令对标志寄存器中各标志位的影响情况; 4.掌握多分支结构程序设计的三种方法:树型结构法、地址常数表法和指令常数表法。 二、实验要求 1.学会使用DEBUG的T命令,跟踪检查指令对标志位的影响情况; 2.学会使用DEBUG中的P命令,对INT指令的跟踪方法; 3.学会利用设置断点调试程序的方法; 4.了解大写、小写字母及数字在计算机内的表示方法及转换方法。 三、实验内容 1.编写程序,已知在DATA开始的内存单元中,连续存放着三个一位十六进制数,找出其中最大数及最小数,存放在指定的内存单元中。 2.编写程序,已知在DATA开始的内存单元中,连续存放着三个带符号数据,判断三个数是否同号,若同时为正,则在屏幕上显示“+”号,若同时为负,则在屏幕上显示“-”号,否则显示“*”号。 3.编写程序,从键盘接收字符,判断该字符是否为字母、数字或非字母也非数字类字符。若为字母,则在屏幕上显示“L”;若为数字,则在屏幕上显示“D”;若为非字母也非数字,则在屏幕上显示“O”。 4.编写程序,已知DATAX和DATAY单元各存放一个带符号字节数据,从键盘上接收加(+)、减(-)、乘(*)或除(/)号,完成相应运算,结果在屏幕上显示出来。 ⑴当输入“+”号时,计算X+Y,并以十六进制形式显示出来; ⑵当输入“-”号时,计算X-Y,并以十六进制形式显示出来; ⑶当输入“*”号时,计算X*Y,并以十六进制形式显示出来; ⑷当输入“/”号时,计算X/Y,并以十六进制形式显示出来; 5.编写程序,从键盘输入若干个任意字符,如果是小写字母a~z之间的字符,

Python实验3选择结构程序设计

实验3 选择结构程序设计(续) 【实验目的】 1.掌握分支条件语句的使用。 2.掌握分支嵌套语句的使用。 【实验内容】 1.通过Input()函数任意输入三条边长,经过简单的计算后,判断三条边长能否构成三角 形,并确定是类型的三角形,如(等边,等腰,一般三角形)。 a=input("Please input the length of a:") b=input("Please input the length of b:") c=input("Please input the length of c:") if a+b>c and a+c>b and b+c>a: if a==b==c: print "This is an equilateral triangle." if a==b or a==c or b==c: print "This is an isosceles triangle." if a!=b!=c: print "This is a scalene triangle." else: print "These lengths can not form a triangle." 2.密码登录程序。要求:建立一个登录窗口,要求输入帐号和密码。设定用户名为”zhangshan”, 密码为“Python123”;若用户名正确,密码正确,则显示“Zhangshan先生,欢迎你!”;如果用户名错误,则显示“用户名错误,请重新输入!”;若密码不正确,显示“对不起,密码错误,无法登录!”。 x=raw_input("User:") y=raw_input("Password:") if x=="zhangshan" and y=="Python123": print "Welcome,Mr.Zhangshan!" if x=="zhangshan" and y!="Python123": print "Wrong password.No right to log-in." while x!="zhangshan" and y=="Python123": x=raw_input("Wrong user's name.Please enter again:") if x=="zhangshan": print "Zhangshan先生,欢迎你!"

微机原理实验报告——分支程序设计

实验三 分支程序设计 一、实验要求和目的 1.熟悉汇编语言程序设计结构; 2.熟悉汇编语言分支程序基本指令的使用方法; 3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法。 二、软硬件环境 1.硬件环境:微机CPU 486以上,500MB 以上硬盘,32M 以上内存; 2.软件环境:装有MASM 5.0、DEBUG 、LINK 和EDIT 等应用程序。 三、实验涉及的主要知识单元 在实际应用中,经常根据一些条件来选择一条分支执行。汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号和相减而导致的结果来进行。下面就有符号数转移指令来了解在汇编语言程序设计方法。 四、实验内容与步骤 1.实验内容 (1)编写计算下面函数值的程序: ?? ? ??<-=>=0,10,00,1x x x y 设输入数据为X 、输出数据Y ,且皆为字节变量,使用Debug 查看X 、Y 两个变量 的数据 (2)以ARRAY 为首地址的内存单元中,存放5个8位的不带符号数,找出5个数中的最大数,并将结果存入RESULT 字节单元中。 2.实验步骤 a.实验流程图 (1)计算函数值的流程图

b.编写程序 (1)计算函数值的实验代码 DATA SEGMENT X DB 12 Y DB ? DATA ENDS STACK SEGMENT STACK'STACK' DB 100H DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AL,XX CMP AL,0 ;把AX 与0比较 JGE BIGPR ;0≥AL 转入BIGPR MOV Y,0FFFFH ;0AL 则1=Y JMP EXIT EQUPR: MOV Y,0 ;0=AL 则0=Y EXIT: MOV AL,Y RET CODE ENDS END START

微机原理与汇编语言_实验3_循环程序设计实验汇总

微机原理与汇编语言 实验报告 姓名x x x学号xxxxxx 专业班级计科x班 课程名称微机原理与汇编语言实验日期2014.10.22 实验名称循环程序设计实验成绩 一、实验目的 1、掌握循环程序的设计方法。 2、掌握比较指令、转移指令和循环指令的使用方法。 3、进一步掌握调试工具的使用方法。 二、实验内容 1、实验原理 (1)键盘输入的十进制数如368在计算机中是以33H,36H,38H形式存放的,如何将它们转换为一个二进制数101110000B,以便对累加循环的循环次数进行控制是本程序首先要解决的问题 (2)累加结果为一个16位的二进制数,为了显示结果,必需把它们转换为十进制数 2、实验步骤 (1)流程图 (2)实验源码 .model small .stack ;定义堆栈段 .data ;定义数据段 inf1 db "Please input a number(1-627):$" inf2 db 0ah, 0dh, "1+2+......+$" ibuf db 7, 0, 6 dup(0) obuf db 6 dup(0) .code start: mov ax, @data mov ds, ax mov dx, offset inf1 ;将屏幕输入的十进制数(存放于ibuf)转化为二进制数存储于ax 中 mov ah, 09h int 21h mov dx, offset ibuf mov ah, 0Ah int 21h mov cl, ibuf+1 mov ch, 0 mov si, offset ibuf+2 mov ax, 0 loop1: mov dx, 10 mul dx and byte ptr [si], 0Fh add al, [si] 从键盘输入一个十进制数,并将其转换为二进制数,存放在AX中 开始 结束 素、、 (CX)-1=0 累加循环次数送CX(MOV CX,AX)AX清0(AX中存放累加和) BX送1(BX存放每次循环累加的数,每循环一次,BX值加1) ADD AX,BX INC BX 累加和(在AX中)转换为十进制数并 显示 Y N

《Python程序设计》实验3---Python基本数据类型及分支结构实验报告

**大学数学与信息工程学院 《Python程序设计》实验报告 实验名称:实验3 Python基本数据类型及分支结构 … 班级: 姓名:学号:[ 实验地点:日期: 、 一、实验目的: [实验目的和要求] 1、熟练掌握Python三种数字类型及其应用 \ 2、熟练判断条件表达式的真假 3、熟练掌握Python分支结构 二、实验环境: 1、计算机,局域网,python 软件 三、实验内容和要求:(直接将实验步骤及截图写在题目下面,结果必须截图) 1、# 2、复数z=-3+4j,用Python程序求得对应的实部和虚部并计算z的绝对值,并思考输出的绝对值代表什么含义 3、请将下列数学表达式用Python程序写出来,并运算结果 1) 4 2734 5 x +-?= 代码:~

a=2**4 b=7 c=3 d=4 e=5 [ x=(a+b-c*d)/e print(x) 2)2 131677()(mod )/x =+? 代码: | a=3**2 b=1 c=16 d=7 x=(a+b)*(c%d)/7 # print(x) 4、编写程序,根据输入的长和宽,计算矩形的面积并输出。要求:输入语句input 实现同步赋值。 lw=input('请输入矩形的长和宽,以空格分隔:') length,width=map(float,()) ~ s=length*width

print("矩形面积为:",s) 5、编写程序,用户输入一个三位以上的整数(如果不是三位数则提示输入错误),输出其百位以上的数字。例如用户输入1234,则程序输出12。(提示:使用整除运算。) 代码: [ a=eval(input('请输入一个三位以上的整数:')) b=int(a/100) if(a<99): print('输入错误') else: … print(b)

实验3-循环结构程序设计

实验报告 课程名称C程序设计 实验项目循环结构程序设计 实验仪器PC机一台 学院_____信息管理学院_______ 专业信息管理与信息系统 班级/学号_信管1301/2013012054_ 学生姓名_____姜猛__________________ 实验日期_______________________ 成绩_______________________ 指导教师_______陈立南 _________

北京信息科技大学 信息管理学院 (课程上机)实验报告 实验课程名称: C程序设计专业:信息管理与信息系统班级: 信管1301 学号:2013012054 姓名:姜猛成绩: 实验名称循环结构程序设计实验地点小营校区计算中心实验时间 1.实验目的: 1)熟练掌握用while语句、do……while语句和for语句实现循环的方法 2)掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推) 3)进一步学习调试程序的方法 2.实验内容及要求: 1) 输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。 2) 求Sn=a+aa+aaa+aaaa+……(n个a)之值,其中a表示一个数字,n表示a 的位数,n由键盘录入。 3) 1!+2!+3!+4!+……+n! 4)输出所有“水仙花数”。“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身,如153=1^3 +5^3+3^3 。 5)一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。例如6=1+2+3。编程找出1000以内的所有完数。 6)编写程序,完成课本P141的第10题。 7)猴子第一天摘了若干个桃子,当即吃了一半,还不解馋,又多吃了一个;第二天,吃剩下的桃子的一半,还不过瘾,又多吃了一个;以后每天都吃前一天剩下的一半多一个,到第10天想再吃时,只剩下一个桃子了。问第一天共摘了多少个桃子? 8)编写程序,完成课本P141的第16题。

汇编语言实验4-分支程序设计

汇编语言实验报告 Assembly Language Programming Lab Reports ______________________________________________________________________________ 班级: _________ 姓名:___________ 学号:___________ 实验日期:_____________ 学院: _____计算机与通信工程学院____ 专业:_______计算机科学与技术___________ 实验顺序:___实验四____ 实验名称:____________分支程序设计________________ 实验分数:_______ 考评日期:________ 指导教师: ______________________________________________________________________________ 一.实验目的 1.掌握主要的转移指令和位操作指令。 (1)无条件转移指令。Jmp理解掌握段内寻址和段间寻址方式。 (2)条件转移指令,无符号数比较转移,带符号数比较转移,cx为0转移指令(jcxz)这 些都为短转移指令,当代码过长超出-128-127的的转移范围,学会使用无条件指令 作为中间桥梁完成相应的功能。 (3)Test指令和Cmp指令。 2.掌握分支程序实现的方法。 (1)在完成一个程序的功能时,先简单列出要完成这个程序需要的步骤。 (2)根据列出的步骤画出程序框图。 (3)根据框图写代码。 3.在调试运行程序时,理解程序的加载过程。进一步掌握编辑、编译、链接、调试过程。 ______________________________________________________________________________ 二.实验环境 操作系统:windows xp 编译程序:masm 5.0 ______________________________________________________________________________ 三.实验原理 1.无条件转移指令 格式:JMP OPR 举例:JMP AA1 2.条件转移指令 格式:JZ、JNZ、JC、JNC 举例:JZ let1 3.逻辑与AND 格式:AND DST,SRC 举例:AND AL,0FH 4.循环左移,循环右移 格式:ROL、ROR 举例:ROL AX,1 ROR AL,1

微机原理实验之-分支程序、循环程序设计

实验三分支程序、循环程序设计实验 一、实验目的 1.掌握分支程序的结构。 2.掌握分支程序的设计、调试方法。 3.加深对循环结构的理解。 4.掌握循环结构程序设计的方法以及调试方法。 二、实验设备 PC机一台,TD-PITE实验装置一套。 三、实验内容: 设计一数据块间的搬移程序。设计思想:程序要求把内存中一数据区(称为源数据块)传送到另一存储区(称为目的数据块)。源数据块和目的数据块在存储中可能有三种情况,如图1所示。 图3-1 源数据块与目的数据块在存储中的位置情况 对于两个数据块分离的情况,如图3-1(a),数据的传送从数据块的首地址开始,或从数据块的末地址开始均可。但是对于有重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭到破坏,可有如下结论: 当源数据块首地址<目的块首地址时,从数据块末地址开始传送数据,如图3-1(b)所示。当源数据块首地址>目的块首地址时,从数据块首地址开始传送数据,如图3-1(c)所示。参考流程:如图3-2所示。

图3-2 程序流程图实验程序 STACK SEGMENT STACK DW 64 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE START: MOV CX, 0010H MOV SI, 3100H MOV DI, 3200H CMP SI, DI JA A2 ADD SI, CX ADD DI, CX DEC SI DEC DI A1: MOV AL, [SI] MOV [DI], AL DEC SI DEC DI DEC CX JNE A1 JMP A3 A2: MOV AL, [SI] MOV [DI], AL INC SI INC DI

分支程序的设计实验

《单片机实验》报告 实验名称分支程序设计实验 指导教师冬生 专业班级电子1103班 XXXXXX 学号 XXXXXXXXXXX 联系方式 XXXXXXXXXXX

一、任务要求 熟练掌握KeilC 环境下汇编语言程序的调试方法,加深对汇编语言指令、机器码、寻址方式等基本容的理解,掌握分支程序和简单程序的设计与调试方法,了解并行IO 口的使用 1. 设有8bits 符号数X 存于外部RAM 单元,按以下方式计算后的结果Y 也存于外部RAM 单元,请按要求编写程序。 240/22040 20X X Y X X X X ?≥? =<

相关主题
文本预览
相关文档 最新文档