实验五 分支程序设计
实验五 分支结构程序设计
实验五分支结构程序设计一、实验目的掌握条件转移指令的使用方法及指令对标志寄存器中各标志位的影响;掌握标志位和转移指令之间的关系;会用条件转移指令和无条件转移指令设计多分支结构程序;掌握设置断点调试程序的方法。
二、示例1、简单分支结构判断方程ax2+bx+c=0是否有实根,若有实根则将字节变量tag置1,否则置0(假设a、b、c均为字节变量,表达-127~+127的数据)。
(参考程序略)2、多分支结构程序根据键盘输入的1~8数字转向8个不同的处理程序段。
【参考程序如下】DATA SEGMENTmsg db 'Input number(1-8):',13,10,'$'ms1 db 'Chapter 1: Fundamentals of Assembly Language',13,10,'$'ms2 db 'Chapter 2: 8086 Instructino Set',13,10,'$'ms3 db 'Chapter 3: Statements of Assembly Language',13,10,'$'ms4 db 'Chapter 4: Assembly Language Programming',13,10,'$'ms5 db 'Chapter 5: 32-bit Instruction and Programming',13,10,'$'ms6 db 'Chapter 6: Mixed Programming with C/C++',13,10,'$'ms7 db 'Chapter 7: FP Instructions and Programming',13,10,'$'ms8 db 'Chapter 8: MMX Instructions and Programming',13,10,'$'tab dw 0,L1,L2,L3,L4,L5,L6,L7,L8DATA ENDScode segmentassume cs:code,DS:DATAmain proc farstart:push dssub ax,axpush axMOV AX,DATAMOV DS,AX;main programnext: mov dx,offset msg ;提示输入数字mov ah,9int 21hmov ah,1 ;等待按键int 21hcmp al,31h ;数字 < 1 ?jb nextcmp al,38h ;数字 > 8 ?ja nextsub al,30h ;将ASCII码转换成数字shl al,1 ;将al中的数乘以2mov ah,0lea bx,tabadd bx,ax ;bx中为标号Li的偏移地址mov ah,2mov dl,13int 21hmov ah,2mov dl,10int 21hjmp [bx] ;(段内)间接转移;IP<-[bx]exit: mov ah,9int 21hretL1: mov dx,offset ms1 ;处理程序1jmp exitL2: mov dx,offset ms2 ;处理程序2,以下类推jmp exitL3: mov dx,offset ms3jmp exitL4: mov dx,offset ms4jmp exitL5: mov dx,offset ms5jmp exitL6: mov dx,offset ms6jmp exitL7: mov dx,offset ms7jmp exitL8: mov dx,offset ms8jmp exitmain endpcode endsend start三、实验题(1)上机验证教材例5.9折半查找算法的程序实现。
分支程序设计实验
分支程序设计实验在计算机科学领域中,分支程序设计是一种重要的概念。
它是指在程序执行过程中,根据不同的条件选择不同的执行路径。
这种设计方法可以使程序更加灵活和智能,提高程序的执行效率和准确性。
在本文中,我们将探讨分支程序设计的原理和实验。
一、分支程序设计的原理分支程序设计的核心原理是根据条件的真假来选择不同的执行路径。
在程序中,我们可以使用条件语句来实现分支程序设计。
常见的条件语句有if语句和switch语句。
if语句是一种基本的条件语句,它根据条件的真假来选择不同的执行路径。
if语句的基本结构是:if (条件) {执行语句} else {执行语句}。
当条件为真时,执行if语句中的代码块;当条件为假时,执行else语句中的代码块。
switch语句是另一种常见的条件语句,它根据条件的不同值来选择不同的执行路径。
switch语句的基本结构是:switch (条件) {case 值1: 执行语句1; break; case值2: 执行语句2; break; default: 执行语句3;}。
当条件的值与某个case的值相等时,执行对应的执行语句;当条件的值与所有case的值都不相等时,执行default语句。
二、分支程序设计的实验为了更好地理解和应用分支程序设计的原理,我们可以进行一些实验。
下面是一个简单的实验示例:实验目的:根据用户输入的成绩,判断其等级。
实验步骤:1. 定义一个变量grade,用于存储用户输入的成绩。
2. 使用scanf函数获取用户输入的成绩,并将其赋值给变量grade。
3. 使用if语句判断成绩的等级,并输出相应的结果。
实验代码:```#include <stdio.h>int main() {int grade;printf("请输入您的成绩:");scanf("%d", &grade);if (grade >= 90) {printf("您的等级为A\n");} else if (grade >= 80) {printf("您的等级为B\n");} else if (grade >= 70) {printf("您的等级为C\n");} else if (grade >= 60) {printf("您的等级为D\n");} else {printf("您的等级为E\n");}return 0;}```在这个实验中,我们根据用户输入的成绩判断其等级,并输出相应的结果。
实验报告1
实验报告1实验五正负数据分流程序设计一、实验目的1.掌握汇编语言程序的编写方法。
2.学习汇编语言程序的编辑、组装、连接、调试和运行的全过程。
3.掌握分支程序结构和循环程序结构的编程二、实验内容使用缓冲区的第一个地址设置内存缓冲区,以存储16个数字(字节)。
尝试将数据块中的正数(包括0)存储到起始地址为正的缓冲区中,将负数存储到起始地址为负的缓冲区中。
数据为F5H、46h、78h、4f、0bch、0dah、0abh、02h、12h、56h、0d5h、0ach、34h、89h、45h、0c3h。
三、实验步骤1.输入源程序,建立asm文件。
程序的编辑d:\\masm5>edit文件名.asm2.使用MASM宏汇编程序汇编源文件并生成目标文件obj。
程序汇编d:\\masm5>masm文件名;3.使用链接连接程序形成执行文件exe。
程序链接D:\\masm5>链接文件名;4.实施程序。
程序运行D:\\masm5>文件名5程序调试D:\\masm5>调试文件名Exe(或D:>debugd:\\masm5\\filename.Exe)四、思考题1.使用调试软件(.EXE文件形式)调试程序。
不执行任何命令,就可以使用D命令(dds:0)查看数据段的原始数据吗?为什么?2.如果汇编语言源程序通过汇编和链接,是否正确?为什么?5、实验报告1.画出程序流程图。
2.写出源程序清单。
数据段bufferdb0f5h,46h,78h,4fh,0bch,0dah,0abh,02h,12h,56h,0d5h,0ach,34h,89h,45h,0c3h plusdb16dup(?)minusdb16dup(?)dataendscodesegment假设:代码,ds:datastart:movax,datamovds,axmovcx,16movsi,offsetbufferleadi,plusleabx,minuslop:moval,[si]testal,80hjnzl1莫夫[di],艾尔incdijmpagainl1:mov[bx],alincbxjmpagain:印西looplopmovah,4chint21hcodeendsendstart3.回答思考问题1.首先用t命令顺序执行用户程序的前几条直到寄存器ds/es已预置为用户的数据段。
实验五分支程序设计精
JC NEXT2
INC BYTE PTR[DI+1]
JMP STO
NEXT2:CMP AL,70
JCNEXT3
INC BYTE PTR[DI+2] JMP STO
NEXT3:CMP AL,60
JC NEXT4
INC BYTE PTR[DI+3] JMP STO
NEXT4:INC BYTE PTR[DI+4] STO:INC SI
(1)画出程序流程图。
开始
[DI]+1
>=90?
Y
N
Y
>=80?[DI+1]+1
N
[DI+2]+1
>=70?Y
N
Y
[DI+3]+1
>=60?
N
[DI+4]+1
N>=0 ?
Y
结束
(2)列出程序清单,加上适量注释。
DATAS SEGMENT
DATA1 DB20,55,45,90,72,66,42,80,92,90,95,96,97,98,99,91,96,97,99DATA2 DB5
LOOP AGAIN
MOV DL,[DI]
AND DL,OFH
ADD DL,37H
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
(3)记录实验结果
DUP(O);统计结果:》=90,80~89,70~79,60~69《60
DATAS ENDS
J
STACKS SEGMENT
C语言实验五最简单的C语言程序设计
C语⾔实验五最简单的C语⾔程序设计实验5:最简单的C语⾔程序设计⼀、实验⽬的:(1)掌握C语⾔中使⽤最多的⼀种语句——赋值语句的使⽤⽅法。
(2)掌握各种类型数据的输⼊输出的⽅法,能正确使⽤各种格式转换符。
(3)进⼀步掌握编写程序和调试程序的⽅法。
⼆、实验内容和步骤:1、通过下⾯的程序掌握各种格式转换符的正确使⽤⽅法。
(1)输⼊以下程序:/* Note:Your choice is C IDE */# includeint main( ){int a,b;float d,e;char c1,c2;double f,g;long m,n;unsigned int p,q;a=61,b=62;c1='a';c2='b';d=3.56;e=-6.87;f=3157.890121;g=0.123456789;m=50000;n=-60000;p=32768;q=40000;printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e);printf("f=%15.6f,g=%15.12f\nm=%1d\np=%u,q=%u\n",f,g,m,n,p,q);显⽰结果:(2)运⾏此程序并分析结果。
(3)在此基础上,将程序第10~14⾏改为c1=a,c2=b;f=3157.890121;g=0.123456789;d=f;e=g;运⾏程序,分析结果。
/* Note:Your choice is C IDE */#include"stdio.h"int main(){int a,b;float d,e;char c1,c2;double f,g;long m,n;unsigned int p,q;a=61;b=62;c1=a;c2=b;f=3157.890121;g=0.123456789;d=f;e=g;p=a=m=50000;q=b=n=-60000;printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e);printf("f=%15.6f,g=%15.12f\nm=%1d,n=%1d\np=%u,q=%u\n",f,g,m,n,p,q);}显⽰结果:(4)⽤sizeof运算符分别检测程序中各类型的数据占多少字节。
实验5 分支结构程序设计
河北工业大学城市学院《汇编语言程序设计》实验报告实验5 分支结构程序设计一、 实验目的1.熟悉运算类指令对状态标志位的影响,掌握根据状态标志实现转移的方法。
2.掌握条件转移、无条件转移指令的使用方法。
3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法;掌握分支程序设计、编写、调试和运行的方法。
二、实验内容1.判断X 单元数据的奇偶性,若为奇数,将Y 单元设置为0FFH ,若为偶数,将Y 单元清0。
解:程序代码为:DATAS SEGMENT X DB 13H Y DB ? DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS START :MOV AX,DATAS MOV DS,AX MOV BL,Y MOV AL,XTEST AL,01H JZ L1 MOV BL,0FFH JMP L2 L1: XOR BL,BL L2: NOP MOV Y ,BL MOV AH,4CH INT 21H CODES ENDS ENDSTART部分图解注释为:2. 设有两个字节数据分别存放在FIRST 和SECOND 单元中,编程求出其中的较小数并存于MIN 单元。
要求:将两个数看作无符号数据和带符号数据时分别编程实现。
将X 单元中的数据给到AX 后,判断出为奇数,则BX 中的值为00FFH①解:带符号数据时代码程序为:DATAS SEGMENTFIRST DB 5SECOND DB-6MIN DB?DATAS ENDSSTACKS SEGMENTDW 20H DUP(?)STACKS ENDS CODES SEGMENTASSUME CS:CODES,DS:DATAS START:MOV AX,DATAS MOV DS,AX MOV AL,FIRST MOV BL,SECOND CMP AL,BLJGE L1MOV AH,4CHINT 21HL1: MOV MIN,BL CODES ENDS ENDSTART部分图解注释为:②解:无符号数据时代码程序为:DATAS SEGMENTFIRST DB 5SECOND DB 6MIN DB? DATAS ENDS STACKS SEGMENTDW 20H DUP(?) STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS START:MOV AX,DATASMOV DS,AXMOV AL,FIRST MOV BL,SECOND CMP AL,BL JBE L1 MOV AH,4CH INT 21H L1: MOV MIN,AL MOV AH,4CH INT 21H CODES ENDS ENDSTART部分图解注释为:3.分段函数:③解:无符号数据时代码程序为:DATAS SEGMENT X DB 3 Y DB ? DATAS ENDSSTACKS SEGMENTDW 20H DUP (?) STACKS ENDS CODES SEGMENTASSUME CS:CODES,DS:DATAS START :MOV AX,DATAS MOV DS,AX MOV AL,X CMP AL,0JGE L1 MOV cl,4 mul cl sub AX,6 mov y,AL JMP L3 L1: JE L2 MOV al,x MOV CL,2 MUL CL ADD AX,5 MOV Y ,AL JMP L3 L2: MOV Y ,-102*x+5 x>0 -10 x=0 4*x-6 x<0y=将较小的数存于AX 中,将较大的数存于BX 中L3: MOV AH,4CH INT 21H CODES ENDS ENDSTART部分图解注释为:。
C程序设计实验五实验报告
同组者
离开实验室时间
实验项目名称
09:50
无
11:30
实验五循环结构程序设计
实验目的:
1、熟悉掌握用while语句、do…while语句和for语句实现循环的方法;
2、掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、地推等);
3、进一步学习调试程序。
实验内容
编程序并上机调试运行。
printf("The quantities of circulation is %f\n",i);
return 0;
}
2输出结果如下:
不同初值对迭代次数有影响。
实验总结:
老师批语:
return 0;
}
②运行结果如下:
在得到正确结果后,请修改程序使之能分别统计大小写字母、空格、数字和其他字符的个数。
1输入程序如下:
#include<stdio.h>
int main()
{
char c;
int bigletters=0,smallletters=0,space=0,digit=0,other=0;
①输入程序如下:
#include<stdio.h>
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;
}
②程序运行结果如下:
在得到正确结果后,修改题目,改为猴子每天吃了前一天剩下的一半后,再吃两个。
实训五选择结构程序设计
实验五选择结构程序设计【实验目的】1.学会使用逻辑表达式表示条件的方法。
2.掌握if语句三种形式的用法。
3.掌握switch语句的用法。
4.学会设计有实际价值的分支结构程序。
【实验内容】1.简单if语句的用法。
编写调试程序:从键盘输入一个任意大小的实数x,如果x满足如下条件,则输出x及其绝对值。
输出x的条件:-29.5≤x≤29.52.if-else语句的用法。
修改上面的程序,使得x满足-29.5≤x≤29.5时输出x及其绝对值,否则只输出x。
3.if-else if语句的用法。
编写一个能够进行加减法运算的程序,要求:从键盘任意输入两个实数,然后输入一个运算符,当运算符为“+”时对两个数进行加法运算,为“-”时对两个数进行减法运算,其他符号时,只显示输入的符号不进行运算。
4.switch语句的应用。
编写计算器程序。
要求从键盘任意输入两个数值,然后输入一个四则运算符,自动完成运算后输出结果。
【实验指导】1.简单if语句的用法。
⑴编程分析正确表示条件,将数学不等式-29.5≤x≤29.5表示为如下逻辑表达式:x>=-29.5&&x<=29.5 或 (x>=-29.5)&&(x<=29.5)也可以使用x的绝对值形式表示,如下:fabs(x)<=29.5⑵参考程序⑶程序调试输入数据时,至少应考虑的几种情况①输入满足输出条件的数,包括正数、负数、零。
②输入不满足输出条件的数,包括正数、负数。
③输入数据为整数。
2.if-else语句的用法。
⑴编程分析只需修改上面程序中的if语句即可。
将if语句修改为如下形式:if(x>=-29.5&&x<=29.5)printf("x=%f\t|x|=%f\n",x,fabs(x));elseprintf("x=%f\n",x);⑵程序调试输入数据时,除考虑上面指出的三种情况的数据外,输入一个字符数据,观察会是什么结果。
实验五 循环结构程序设计
实验五循环结构程序设计一、实验目的(1)掌握使用while语句,do-while语句和for语句实现循环的方法。
(2)掌握在循环结构中使用break与continue语句的方法。
(3)掌握多重循环的使用方法。
二、实验步骤、数据记录及处理(1)编写程序输出半径为1到15的圆的面积,若面积在30到100之间则予以输出,否则,不予输出。
程序代码:#include<stdio.h>int main(){int i;float area;for(i=1;i<=15;i++){area=3.14*i*i;if(area<30) continue;else if(area>100) break;printf("半径为%d的圆的面积为%6.2f\n",i,area);}return 0;}运行结果:(2)输入一个正整数x(可以是1-9位的正整数),将其转换为逆序正整数y输出,例如输入x的值为3456,则输出y的值6543。
程序代码:#include<stdio.h>int main(){int num,temp,i=0;printf("请输入一个数字:");scanf("%d",&num);while(num>0){temp=num%10;++i;printf("%d",temp);num=num/10;}printf("\n这个数是%d位数",i);return 0;}运行结果:(3)编写程序,分行输出斐波那契Fibonacci数列的前20项(每行5个数)。
说明:斐波那契序列:1,1,2,3,5,8,13,21,……题目扩展(选做):求Fibonacci数列中小于t的最大的一个数,其中t由键盘输入。
例如:输入t=1000时,则输出987。
程序代码:#include <stdio.h>void main(){int i,a[20];a[0]=1;a[1]=1;for(i=2;i<20;i++)a[i]=a[i-1]+a[i-2];i=0;while(i<20){printf("%d\t",a[i++]);if(i%5 == 0)printf("\n");}}运行结果:(4)编写程序,输出“九九乘法口诀表”。
分支程序设计实验精简版
分支程序设计实验
分支程序设计实验
介绍
分支程序设计是计算机程序设计中的一种常见结构,用于根据特定条件执行不同的代码块。
在本实验中,我们将学习如何使用分支程序设计来解决实际问题。
实验背景
在实际的软件开发过程中,我们经常会遇到需要根据条件执行不同的代码块的情况。
这些条件可以是用户输入、系统状态或其他变量的值。
为了解决这些问题,我们可以使用分支程序设计。
实验目标
本实验的目标是让学生掌握如何使用分支程序设计来解决实际问题。
具体来说,我们将学习以下内容:
分支程序设计的基本概念和用法
如何根据条件执行不同的代码块
如何处理多个条件
实验内容
在本实验中,我们将使用一个简单的示例来说明分支程序设计的应用。
假设我们要编写一个程序,根据用户的输入判断一个数是奇数还是偶数。
我们可以使用以下伪代码来实现:
1. 读取用户输入的数
2. 如果数 mod 2 等于 0,则输出\。
分支程序设计实验实验报告
实验二 分支程序设计实验实验报告实验名称:分支程序设计实验一、任务要求:熟练掌握KeilC 环境下汇编语言程序的调试方法,加深对汇编语言指令、机器码、寻址方式等基本内容的理解,掌握分支程序和简单程序的设计与调试方法,了解并行IO 口的使用。
1. 设有8bits 符号数X 存于外部RAM 单元,按以下方式计算后的结果Y 也存于外部RAM 单元,请按要求编写程序。
240/2204020X X Y X X XX ⎧≥⎪=<<⎨⎪≤⎩当当当2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD 码的形式)。
P3.0为低电平时开始计时,为高电平时停止计时。
提高部分(选做):a. 实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。
利用P3.7状态选择加、减计数方式。
b. 利用P3口低四位状态控制开始和停止计数,控制方式自定。
二、设计思路:1.分支函数程序设计:首先将X 赋给累加器A ,与40比较大小,将大于或等于40的执行乘方操作;小于40的再与20做比较,大于20的执行取除法操作,小于或等于20的执行取反操作。
最后将计算结果Y 存于片外的RAM 上。
2.电子时钟程序设计思路:首先用循环程序的嵌套实现一个1s 的延时,同时让记秒的端口P2同步加一,到60后清零;再让此循环执行60次实现1min的延时,同时让P1同步加一,到60后清零;再让分钟的循环执行24次,实现1hour的延时,同时让P0同步加一。
至此循环,即可实现24小时的时钟功能。
(注:本计算机的晶振频率为12MHz)3.4位十进制加、减1计数程序思路:低位的个位和十位赋给一个寄存器,而将高位即百位千位赋给另外一个寄存器,通过循环程序使低位数循环100次即向高位进位或借位,高位循环100次后即回归初始状态,同时设计两个子函数分别执行加一、减一操作。
分支程序设计实验报告
一、实验目的1. 理解分支程序设计的概念和作用。
2. 掌握分支语句(如if语句)的使用方法。
3. 通过实际编程练习,提高编程能力和逻辑思维能力。
二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 开发工具:PyCharm三、实验内容本次实验主要涉及分支程序设计的基本概念和编程实现。
具体内容包括:1. 理解分支程序设计的基本原理。
2. 掌握if语句、elif语句和else语句的使用。
3. 编写分支程序,实现特定功能。
四、实验步骤1. 理解分支程序设计的基本原理。
分支程序设计是一种根据不同条件执行不同操作的程序设计方法。
在Python中,分支语句主要是指if语句、elif语句和else语句。
2. 编写分支程序,实现特定功能。
以下是一个简单的分支程序示例,用于判断用户输入的数字是正数、负数还是零。
```python# 用户输入一个数字num = float(input("请输入一个数字:"))# 使用分支语句判断数字的正负if num > 0:elif num < 0:print("输入的数字是负数。
")else:print("输入的数字是零。
")```3. 分析实验结果。
根据上述程序,当用户输入一个正数时,程序会输出“输入的数字是正数。
”;当用户输入一个负数时,程序会输出“输入的数字是负数。
”;当用户输入零时,程序会输出“输入的数字是零。
”4. 修改程序,增加更多功能。
为了提高程序的实用性,我们可以增加一些功能,如:- 判断用户输入的是整数还是小数。
- 根据用户输入的数字,输出对应的中文数字。
以下是修改后的程序:```python# 用户输入一个数字num = float(input("请输入一个数字:"))# 使用分支语句判断数字的正负if num > 0:print("输入的数字是正数。
分支程序设计实验报告
分支程序设计实验报告
实验名称:分支程序设计实验报告
实验目的:通过分支程序设计的实验,深入理解程序运行的基本
原理,掌握分支语句的应用方法,提高编写程序的能力和水平。
实验原理:分支程序设计是一种基于逻辑运算的程序结构,它可
以根据不同的条件,选择不同的执行路径,从而实现程序不同的输出
效果。
实验过程:首先,确定需要实现的程序功能,并根据程序逻辑设
计分支语句。
然后,使用编程工具编写代码,调试程序,运行程序。
最后,对程序进行测试和优化,达到预期的效果。
实验结果:通过实验,我深入理解了分支程序设计的基本原理和
应用方法。
我能够设计和编写简单的分支程序,实现不同的输出结果。
我还学会了如何测试和优化程序,以达到最佳的执行效果。
通过实验,我提高了编写程序的能力和水平。
实验总结:分支程序设计是计算机编程中非常重要的一部分,掌
握分支语句的应用方法可以提高编写程序的效率和质量。
通过实验,
我能够利用分支语句来设计程序,实现复杂的逻辑运算和条件判断。
我对编程语言的掌握和应用能力也有了进一步的提高。
我相信,凭借
自己的勤奋努力和不断的实践,我一定能成为一名优秀的程序员。
实验五汇编语言程序设计实验(一)
实验五汇编语言程序设计实验(一)一、实验目的1、了解和掌握汇编语言子程序和主程序的设计。
2、掌握循环程序的设计。
3、掌握汇编语言主程序与子程序的调用和参数传递。
4、进一步熟悉在PC机上建立,汇编,链接,调试和运行8086、8088汇编语言程序的过程。
二、实验内容1、复习汇编语言源程序的上机过程:2、编写一个完整程序(包含循环设计和子程序设计)在以strg为首地址的缓冲区中存放着1个字符串,以-1作为结束标志,编程统计字符串长度,并将结果存入lenth单元。
要求统计字符串用子程序完成。
data segmentstrg db ‘abcd’,-1lenth dw ?data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axlea dx,strgcall scountmov lenth,bxmov ah,4chint 21hscount proc nearpush sixor bx,bxmov si,dxnext:cmp byte ptr[si],-1jz overinc bxinc sijmp nextover:pop siretscount endpcode endsend start三、实验器材IBM PC 微机一台四、实验要求1、正确理解本次实验的目的,内容和原理。
2、能编写相应的程序五、实验报告要求完成下面任务:从键盘输入1个长度小于100的字符串,存入以buff 为首地址的缓冲区,其中如有大写字母,要求用子程序转换成小写字母,字符串以回车键作为结束。
写出操作步骤,程序清单,程序注释,实验现象。
实验五 分支结构程序设计
实验五分支结构程序设计
一、实验目的:
1、掌握分支结构程序设计的基本方法。
2、掌握无条件转移指令和条件转移指令的使用。
3、掌握分支结构程序设计的两种基本结构的使用。
二、实验内容及步骤:
1.将X字节单元中的内容拆为两个十六进制数,并分别转换为相应的ASCII码存于Y及Z 单元中。
DATA SEGMENT
X DB 9AH
Y DB ?
Z DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AL,X
MOV CL,4
SHR AL,CL
CMP AL,9
JBE NEXT1
ADD AL,07H
NEXT1: ADD AL,30H
MOV Y,AL
MOV AL,X
AND AL,0FH
CMP AL,9
JBE NEXT2
ADD AL,07H
NEXT2: ADD AL,30H
MOV Z,AL
MOV DL,Y
MOV AH,2
INT 21H
MOV DL,Z
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
2.编写程序比较两个16位带符号数的大小,若A>B,则显示出A>B,否则显示B > A。
3.编写下列函数的实现程序:
X+10 X<0Y=20*X 0X 10X-19 X>10⎧⎪≤≤⎨⎪⎩。
分支程序设计实验
分支程序设计实验1. 实验目的本实验旨在通过编写分支程序,加深对分支结构的理解,并掌握使用分支语句进行程序设计的能力。
2. 实验背景分支结构是计算机程序中的一种重要控制结构,它根据条件的真假来选择执行不同的代码块。
分支结构通常使用if语句、switch语句等来实现。
掌握分支结构的使用对于编写复杂的程序非常重要。
3. 实验内容本次实验要求编写一个分支程序,根据用户输入的成绩判断其对应的等级,并输出相应的提示信息。
4. 实验步骤步骤一:定义变量和输入首先,定义一个变量score来存储用户输入的成绩。
然后,通过输入函数从用户处获取成绩,并将其赋值给score变量。
步骤二:编写分支程序根据成绩的不同范围,使用if语句来判断其对应的等级,并输出相应的提示信息。
以下是一个示例代码:if score >= 90:print("你的成绩为A级,非常优秀!")elif score >= 80:print("你的成绩为B级,很不错!")elif score >= 70:print("你的成绩为C级,还可以!")elif score >= 60:print("你的成绩为D级,勉勉强强!")else:print("你的成绩为E级,需要努力!")步骤三:输出结果根据用户输入的成绩,程序将会根据判断条件输出相应的等级和提示信息。
5. 实验结果假设用户输入的成绩为85,根据上述分支程序,程序将会输出以下结果:"你的成绩为B级,很不错!"6. 实验总结通过本次实验,我们学习了如何使用分支结构来编写程序。
分支结构是一种非常重要的控制结构,能够根据不同的条件选择执行不同的代码块。
合理使用分支结构可以使程序更加灵活和智能。
在实际编程中,我们可以根据具体需求设计不同的分支程序,以实现更复杂的功能。
实验5-分支程序设计
实验五分支程序设计一、实验目的1.掌握分支程序的结构。
2.掌握分支程序的设计、编写及调试方法。
二、实验准备1.复习教材中分支结构程序设计的相关内容。
2.分析下面程序(程序1)的功能。
此程序功能是比较BUF中三个数的最大数,结果存在MAX的变量中DATA SEGMENTBUF DB 38H,73H,1FHMAX DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AL,BUFCMP AL,BUF+1 ;AL>=BUF+1(即比较BUF中的第一个数与第二JNB LP1 个数的大小)则跳转到LP1MOV AL,BUF+1LP1: CMP AL,BUF+2JAE LP2 ;AL>=BUF+2(即比较BUF中的第二个数与第三个数的MOV AL,BUF+2 大小)则跳转到LP2LP2: MOV MAX,AL ;把三个数种最大的数给MAXMOV AH,4CHINT 21HCODE ENDSEND START2.编写程序2::判断BUF单元存放的带符号字节数的正负,并在屏幕上给出正负信息。
DATA SEGMENTBUF DB 38H,-5H,-32H,-44H,40HSTRING1 DB 'FUSHU',0DH,0AH,'$'STRING2 DB 'ZHENGSHU',0DH,0AH,'$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AL,00HMOV CL,00HMOV SI,OFFSET BUFLP0: MOV BL,[SI]INC SIINC CLCMP CL,COUNT ;记录测试数据的个数,JNL LP4 当CL大于数据个数时,程序结束CMP AL,BL ;把测试的数据跟0比较,JNL LP1 得出时正数还是负数JMP LP2LP1: MOV DX,OFFSET STRING1 ;小于0,是负数MOV AH,09HINT 21HJMP LP0LP2: MOV DX,OFFSET STRING2 ;大于0,是正数MOV AH,09H INT 21HJMP LP0LP4: MOV AH,4CHINT 21HCODE ENDSEND START3.编写程序3:实现任意给定X 值(-128≤X ≤127),求符号函数Y 的值,存放于内存单元。
实验五 分支程序的设计
实验五分支程序设计实验目的:掌握分支程序设计的基本方法和技巧巩固dos的键盘输入及显示输出的中断调用实验内容:编写出完整的源程序,完成从键盘输入一个字符,如果是数字就输出num,如果是小写字母就输出lower,如果是大写字母就输出cap,其它字符就输出other。
上机编辑、汇编、连接、运行后,检查并记录运行结果。
实验报告要求:(1)画出程序的流程图(2)列出程序清单(3) 总结汇编语言实现分支程序的一般方法和技巧附分析及源程序:本程序设计的难点是如何实现程序的多路分支,即调用dos中断的1号功能(或者是7、8号功能)从键盘输入的字符的ASCII码就存放在al内,如果al的值在30h到39h表示输入的是数字,如果al的值在41h到5ah表示输入的是大写字母,如果al的值在61h到7ah表示输入的是小写字母,剩下输入的就是其它字符data segmentother db ' is other','$' ;表示其它字符num db ' is number','$' ;表示数字字符cap db ' is capital','$' ;表示大写字符lower db ' is lowercase','$' ;表示小写字符data endscode segmentassume cs:code,ds:datamain procpush dsxor ax,axpush axmov ax,datamov ds,ax;从键盘接收一个符mov ah,1int 21h;进行比较cmp al,30hjb otcmp al,39hjbe nucmp al,41hjb otcmp al,5ahjbe cacmp al,61hjb otcmp al,7ahjbe lojmp otot:mov dx,offset otherjmp exitnu:mov dx,offset numjmp exitca:mov dx,offset capjmp exitlo:mov dx,offset lowerjmp exitexit:mov ah,9int 21hmov dl,0ahmov ah,02int 21hmov dl,0dhmov ah,02int 21h; mov ah,4ch ; int 21hretmain endp code endsend main。
实验五 分支程序设计实验(二)
实验五分支程序设计实验(二)
一、实验目的:
1、熟悉8086指令系统的移位指令和控制转移指令。
2、进一步熟悉debug调试程序的运用。
3、掌握完整的汇编程序的上机方法。
二、实验内容:
1、判断PAR单元数据的奇偶性,当为奇数时置MARK单
元为1,当为偶数时置MARK单元为0。
2、在A,B单元各有一个有符号数,从键盘输入一个字符,
当其为“A”时,表示将该两个有符号数相加,结果存
入C单元中。
当收到“S”时,表示将该两个有符号数相
减,结果也存入C单元中。
当为非”A“或”S”时,则
不做运算,置C单元为0FFH。
三、实验器材
IBM PC 微机一台
四、实验预习要求:
按题目要求,画出流程图,在实验前编写好源程序。
五、实验报告要求
1、整理经过运行而且证明是正确的源程序,并加上注释。
2、整理正确的运行结果。
3、实验报告中应包括实验目的,实验内容,实验步骤,实验设备,思考题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五分支程序设计
一、实验要求和目的
1.熟悉汇编语言程序设计结构;
2.熟悉汇编语言分支程序基本指令的使用方法;
3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法。
二、实验内容与步骤
1. 实验内容
在当前数据段中DATA1开始的顺序80个单元中,存放着80个同学某门功课的考试成绩(0-100)。
编写程序统计>=90分,80-89分,70-79分,60-69分以及<60分的人数。
并将结果放到同一数据段的DATA2开始的5个单元中。
2. 实验步骤
(1)预习分支程序设计的方法,根据实验内容,画出流程图;
(2)利用EDIT或其他编辑软件,编写汇编源程序,取名为“ch5-1.ASM”;
(3)汇编、连接该源程序,产生“ch5-1.EXE”文件;
(4)对“ch5-1.EXE”文件进行调试运行:利用DEBUG的T命令或G命令和D命令查看数据区,看结果是否正确。
三、实验要求
(1)画出程序流程图。
开始
[DI ]+1
>=90?
Y
N
Y
>=80?[DI+1]+1
N
[DI+2]+1
>=70?
Y
N
Y
[DI+3]+1
>= 60?
N
[DI+4]+1
N>=0?
Y
结束
(2)列出程序清单,加上适量注释。
DATAS SEGMENT
DATA1 DB 20,55,45,90,72,66,42,80,92,90,95,96,97,98,99,91,96,97,99
DATA2 DB 5 DUP(0);统计结果:》=90,80~89,70~79,60~69,《60
DATAS ENDS
;
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS START:
MOV AX,DATAS
MOV DS,AX
MOV CX,80;统计人数送入CX
LEA SI,DATA1 ;si指向学生成绩
LEA DI,DATA2 ;di指向统计结果
AGAIN:
MOV AL,[SI];取一个学生的成绩
CMP AL,90 ;大于90分吗?
JC NEXT1 ;若不大于,则继续判断
INC BYTE PTR[DI];否则90分以上的人数加一
JMP STO;转循环控制处理
NEXT1:CMP AL,80
JC NEXT2
INC BYTE PTR[DI+1]
JMP STO
NEXT2:CMP AL,70
JCNEXT3
INC BYTE PTR[DI+2]
JMP STO
NEXT3:CMP AL,60
JC NEXT4
INC BYTE PTR[DI+3]
JMP STO
NEXT4:INC BYTE PTR[DI+4] STO:INC SI
LOOP AGAIN
MOV DL,[DI]
AND DL,0FH
ADD DL,37H
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
(3)记录实验结果。