实验五 分支程序设计

合集下载

实验五 分支结构程序设计

实验五 分支结构程序设计

实验五分支结构程序设计一、实验目的掌握条件转移指令的使用方法及指令对标志寄存器中各标志位的影响;掌握标志位和转移指令之间的关系;会用条件转移指令和无条件转移指令设计多分支结构程序;掌握设置断点调试程序的方法。

二、示例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实验五正负数据分流程序设计一、实验目的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已预置为用户的数据段。

实验五分支程序设计精

实验五分支程序设计精
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
(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语言程序设计

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  分支结构程序设计

河北工业大学城市学院《汇编语言程序设计》实验报告实验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程序设计实验五实验报告

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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)记录实验结果。

相关文档
最新文档