2016年广东海洋大学汇编实验4 循环程序设计

合集下载

汇编语言-实验四-循环分支程序设计

汇编语言-实验四-循环分支程序设计

实验四循环分支程序设计一&实验目的1、熟悉汇编语言源程序的编辑、汇编、连接及调试过程。

2、掌握循环及分支程序的设计方法;3、学会针对不同的问题,选用不同的循环分支结构设计方法;二&实验环境微型计算机一台DOS或WINDOWS操作系统,MASM开发套件。

三&实验要求1、使用正确的指令格式和程序结构编写实验内容要求的所有程序;2、对编写或改写的程序进行汇编连接时,注意对错误信息的处理;3、熟悉源程序汇编、连接的使用方法。

四&实验内容1、使用程序1掌握汇编语言程序上机过程,2、阅读程序2,理解程序功能并上机运行,使用debug检验结果。

3、编写一个程序,判别键盘上输入的字符;若是1-9字符或A-Z ,则显示之;若为a-z字符,均显示“A-Z”;若是<ESC>(其ASCII码为1BH),则结束程序。

4、改写任务三中的程序:输入小写字母a时,显示内容为aA*输入小写字母a时,显示内容为a***输入小写字母a时,显示内容为aa***五&实验步骤1、用EDIT编辑软件,编写.ASM源程序。

2、对其进行汇编及连接,产生.EXE文件。

3、在DOS下运行.EXE文件进行。

4、实验程序清单1)程序1:stack segmentdw 512 dup(?)stack endsdata segmentstring db 'Hello, Everybody !','$'data endscode segmentassume cs:code,ds:data,ss:stackstart: mov ax,datamov ds,axmov dx,offset stringmov ah,9int 21hmov ax,4c00hint 21hcode endsend start2)程序2data segmentx db 20hy dw ?data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov al,xmov bl,10xor ah,ahshl ax,1mov bx,axmov cl,2shl ax,cladd ax,bxmov y,axmov ax,4c00hint 21hcode endsend start3)程序3:data segmentmessage db 'This is a sample program of keyboard and disply' db 0dh,0ah,'Please strike the key!',0dh,0ah,'$'data endscode segmentassume cs:code,ds:datastart: mov ax,datamov dx,offset messagemov ah,9int 21hagain: mov ah,1int 21hcmp al,1bhje exitcmp al,61hjc ndcmp al,7ahja ndand al,11011111bnd: mov dl,almov ah,2int 21hjmp againexit: mov ah,4chint 21hcode endsend start4)改写程序1:data segmentmessage db 'This is a sample program of keyboard and disply' db 0dh,0ah,'Please strike the key!',0dh,0ah,'$'data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,offset messagemov ah,9int 21hagain: mov ah,1int 21hcmp al,1bhje exitcmp al,61hjc ndcmp al,7ahja ndand al,11011111bmov ah,2int 21hmov al,'*'nd: mov dl,almov ah,2int 21hjmp againexit: mov ah,4chint 21hcode endsend start5)改写程序2:data segmentmessage db 'This is a sample program of keyboard and disply' db 0dh,0ah,'Please strike the key!',0dh,0ah,'$'data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,offset messagemov ah,9int 21hagain: mov ah,1int 21hcmp al,1bhje exitcmp al,61hjc ndcmp al,7ahja ndmov al,'*'mov cx,2ok: mov dl,almov ah,2int 21hloop oknd: mov dl,almov ah,2int 21hjmp againint 21hcode endsend start6)改写程序3:data segmentmessage db 'This is a sample program of keyboard and disply' db 0dh,0ah,'Please strike the key!',0dh,0ah,'$'data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,offset messagemov ah,9int 21hagain: mov ah,1int 21hcmp al,1bhje exitcmp al,61hjc ndcmp al,7ahja ndmov dl,almov ah,2int 21hmov al,'*'mov cx,2ok: mov dl,almov ah,2int 21hloop oknd: mov dl,almov ah,2int 21hjmp againexit: mov ah,4chint 21hcode endsend start六&思考题:编写一个程序,显示AL寄存器中的两位十六进制数。

广东海洋大学java实验4

广东海洋大学java实验4

GDOU-B-11-112广东海洋大学学生实验报告书(学生用表)实验名称类的综合运用课程名称 Java 程序设计课程号16232105学院(系) 信息学院专业计算机科学与技术班级学生姓名XXX 学号20 实验地点钟04002 实验日期实验目的:(1)掌握类的继承,实现构造函数的继承。

(2)多态,通过相同的方法名实现不同的功能实验内容:1、有一个shape接口,利用该接口来编写求解不同的几何图形(矩型,正方形,圆)的周长、面积的应用程序(其中正方形是矩形的子类),要求用到继承、多态、抽象类、接口、内部类等面向对象程序设计技术的来编程。

Interface shape{Public double perimeter();Public double area();}放自己的程序代码import java.util.Scanner;interface Shape{ //定义一个接口public double perimeter();public double area();}abstract class line{ //定义一个长度抽象类double r=0;}class Juxing implements Shape{ //矩形的类定义double c=0;double h=0;Juxing(){}Juxing(double a){ //多态h=a;}Juxing(double a,double b){ //多态c=a;h=b;}public double perimeter(){ //重写,求矩形周长double z=(c+h)*2;return z;}public double area(){ //重写,求矩形面积double s=c*h;return s;}}class Square extends Juxing{ //继承,定义正方形的类 Square(double a){super(a);}}class Circle extends line implements Shape{ //继承,定义圆的类 jisuan A=new jisuan();Circle(double y){r=y;}class jisuan{ //内部计算类jisuan(){}double zhouchang(){double l=2*3.14*r;return l;}double mianji(){double s1=3.14*r*r;return s1;}}public double perimeter(){ //求圆的周长return A.zhouchang();}public double area(){ //求圆的面积return A.mianji();}}public class Shiyan4 {public static void main(String[] args){System.out.print("请输入矩形的长和宽:");Scanner input = new Scanner(System.in);Scanner input2 = new Scanner(System.in);double ai = input.nextInt(); // 输入double bi = input2.nextInt(); //输入Juxing J=new Juxing(ai,bi);ai=J.perimeter();System.out.print("矩形的周长为:"+ai+'\n');bi=J.area();System.out.print("矩形的面积为:"+bi+'\n');System.out.print("请输入正方形的边长:");Scanner input3 = new Scanner(System.in);double ci = input3.nextInt();Square S=new Square(ci);ci=S.perimeter();System.out.print("正方形的周长为:"+ci+'\n');ci=S.area();System.out.print("正方形的面积为:"+ci+'\n');System.out.print("请输入一个圆的半径:");Scanner input4 = new Scanner(System.in);double di = input4.nextInt();Circle C=new Circle(di);di=C.perimeter();System.out.print("圆的周长为:"+di+'\n');di=C.area();System.out.print("圆的面积为:"+di+'\n');}}运行结果或截图2 设计一个抽象类CompareObject,其中定义一个抽象方法compareTo()用于比较两个对象。

汇编实验2-循环程序设计-实验报告

汇编实验2-循环程序设计-实验报告

汇编实验2-循环程序设计-实验报告一、实验目的1、了解循环程序设计的方法2、理解汇编语言中循环指令的使用3、掌握汇编语言中常用的循环结构二、实验原理1、循环指令循环指令是计算机中常用的一种控制结构,其作用是重复执行一定的操作。

在汇编语言中,常用的循环指令有LOOP、LOOPE、LOOPNE等,具体功能如下:(1)LOOP:重复执行指定次数的操作;(2)LOOPE:执行操作直到CX寄存器为0或ZF寄存器为1;(3)LOOPNE:执行操作直到CX寄存器为0或ZF寄存器为0。

LOOP指令的语法格式如下:LOOP label其中,label表示循环的目标地址。

2、循环结构循环结构是计算机程序设计中常用的一种结构,其基本形式包括:while、do...while、for等。

在汇编语言中,常用的循环结构有以下两种:(1)无限循环结构:该结构适用于需要不停顿地进行某项操作的情况,底层逻辑基于测试指令;(2)计数器循环结构:该结构适用于需要循环指定次数的情况,底层逻辑基于循环指令。

三、实验内容1、使用循环指令实现计算1~10的和;2、使用循环结构实现计算1~10的和。

四、实验步骤1、使用循环指令实现计算1~10的和。

(1)将计数器初始化为10,即MOV CX,10;(2)将累加器初始化为0,即MOV AX,0;(3)将当前计数器值加到累加器中,即ADD AX,CX;(4)将计数器减1,即DEC CX;(5)判断计数器是否为0,若不为0,则执行第3步;若为0,则跳转到计算结果的部分。

2、使用循环结构实现计算1~10的和。

(1)将计数器初始化为10,即MOV CX,10;(2)将累加器初始化为0,即MOV AX,0;(3)将当前计数器值加到累加器中,即ADD AX,CX;(4)将计数器减1,即DEC CX;(5)判断计数器是否为0,若不为0,则执行第3步;若为0,则跳转到计算结果的部分。

五、实验结果(1)使用循环指令实现计算1~10的和MOV CX,10MOV AX,0LOOP label1ADD AX,CXDEC CXJNZ label1label1:MOV sum,AX(2)使用循环结构实现计算1~10的和MOV CX,10MOV AX,0label2:ADD AX,CXDEC CXJNZ label2MOV sum,AX六、实验总结本次实验实现了两种不同的循环方式,分别使用了循环指令和循环结构。

计科1141广东海洋大学java10(实验4)解答

计科1141广东海洋大学java10(实验4)解答

广东海洋大学学生实验报告书(学生用表)实验名称实验四.类的基本编程课程名称Java程序设计与开发技术课程号学院(系) 数学与计算机学院专业计算机科学与技术班级计科1141学生姓名邓超荣学号201411621110 实验地点钟海楼04017实验日期2016.10.26一实验目的:掌握Java类的基本知识及应用二实验内容:定义一个名为Complex的类实现复数概念及运算,它的UML图如下,先实现该类的相关方法,再试编写主方法来测试该类这些的方法。

GDOU-B-11-112代码:public class ComplexDemo {public static void main(String[] args) {Complex c1 = new Complex(1,2);Complex c2 = new Complex(2,3);Complex c3 = new Complex(4,-2);double c = -2;Complex sum = new Complex();sum = plexAdd(c1,c2);System.out.println("(1+2i)+(2+3i)="+sum);sum = plexAdd(c1, c);System.out.println("(1+2i)+(-2)="+sum);sum = plexAdd(c1,c2,c3);System.out.println("(1+2i)+(2+3i)+(4-2i)="+sum);Complex mid = new Complex();mid = plexMinus(c1,c2);System.out.println("(1+2i)-(2+3i)="+mid);mid = plexMinus(c1, c);System.out.println("(1+2i)-(-2)="+mid);Complex mul = new Complex();mul = plexMul(c1,c2);System.out.println("(1+2i)*(2+3i)="+mul);mul = plexMul(c1, c);System.out.println("(1+2i)*(-2)="+mul);mul = plexMul(c1,c2,c3);System.out.println("(1+2i)*(2+3i)*(4-2i)="+mul);}}class Complex {double realPart;double imaginaryPart;Complex(){} //默认构造函数Complex(double r,double i) { //带参数的构造函数realPart = r;imaginaryPart = i;}double getRealPart() { //返回实部return realPart;}void setRealPart(double d) { //设置实部realPart = d;}double getImaginaryPart() { //返回虚部return imaginaryPart;}void setImaginaryPart(double d) { //设置虚部imaginaryPart = d;}Complex complexAdd(Complex c1,Complex c2) { //复数对象与复数对象相加Complex sum = new Complex();sum.realPart = c1.realPart + c2.realPart;sum.imaginaryPart = c1.imaginaryPart +c2.imaginaryPart;return sum;}Complex complexAdd(Complex c1,double c2) { //复数对象与实数相加Complex sum = new Complex();sum.realPart = c1.realPart + c2;sum.imaginaryPart = c1.imaginaryPart;return sum;}Complex complexAdd(Complex c1,Complex c2,Complex c3) { //三个复数相加Complex sum = new Complex();sum.realPart = c1.realPart + c2.realPart +c3.realPart;sum.imaginaryPart = c1.imaginaryPart +c2.imaginaryPart + c3.imaginaryPart;return sum;}Complex complexMinus(Complex c1,Complex c2) { //复数对象与复数对象相减Complex mid = new Complex();mid.realPart = c1.realPart - c2.realPart;mid.imaginaryPart = c1.imaginaryPart -c2.imaginaryPart;return mid;}Complex complexMinus(Complex c1,double c2) { //复数对象与实数相减Complex mid = new Complex();mid.realPart = c1.realPart - c2;mid.imaginaryPart = c1.imaginaryPart;return mid;}Complex complexMul(Complex c1,Complex c2) { //复数对象与复数对象相乘Complex mul = new Complex();mul.realPart = c1.realPart * c2.realPart -c1.imaginaryPart * c2.imaginaryPart;mul.imaginaryPart= c1.realPart* c2.imaginaryPart + c1.imaginaryPart * c2.realPart;return mul;}Complex complexMul(Complex c1,double c2) { //复数对象与实数相乘Complex mul = new Complex();mul.realPart = c1.realPart * c2;mul.imaginaryPart = c1.imaginaryPart * c2;return mul;}Complex complexMul(Complex c1,Complex c2,Complex c3) { //三个复数相乘Complex mul = new Complex();mul.realPart = c1.realPart * c2.realPart -c1.imaginaryPart * c2.imaginaryPart;mul.imaginaryPart= c1.realPart* c2.imaginaryPart + c1.imaginaryPart * c2.realPart;double r = mul.realPart;double i = mul.imaginaryPart;mul.realPart = r * c3.realPart - i *c3.imaginaryPart;mul.imaginaryPart = r * c3.imaginaryPart + i *c3.realPart;return mul;}public String toString() { //以a+bi的形式显示复数String s = new String();if(realPart!=0){if(imaginaryPart>0) {s = (int)realPart + "+" + (int)imaginaryPart + "i";}else if(imaginaryPart==0) {s = String.valueOf((int)realPart);}else{s= (int)realPart+ ""+ (int)imaginaryPart+ "i";}}else{if(imaginaryPart>0) {s = (int)imaginaryPart + "i";}else if(imaginaryPart==0) {s = String.valueOf(0);}else{s = (int)imaginaryPart + "i";}}return s;}}。

广东海洋大学-2016-2017年JSP试题修正版

广东海洋大学-2016-2017年JSP试题修正版

广东海洋大学 2016 ——2017 学年第二学期 《 JSP 程序设计 》课程试题 注:文档及答案由Adao 上传提供,如有不妥之处,请自行解决! 2017年题型:选择+填空+程序填空=60分 简答题=40分 一、选择题(2x12=24分) 稍难的一题:有关全局变量的,全局变量会被其后的赋值替代,具体题目是先定义了全局变量x=AAA,后面在程序片重新赋值为x=aaa 。

然后再定义全局变量y=BBB,后面在程序片重新赋值为y=bbb ;问:输出的xy 是:aaabbb 。

(并非AAABBB ) 二、填空题(2x8=16分) 1 response 2 webapps 3 attribute ? 4 两(p37第二题课后习题) 5 session 6 application 7 next() 8 variable 三、程序填空题 1 n-i-1 2 count+1 3 a[i]<Mixnum 4 a[i]>Maxnum 5 a[i] 6 n>49 7 n*n 8 col+1 9 col=110 value+1 四、简答题 1.简述JSP 页面啊运行原理。

(p7) (1)把JSP 页面中的HTML 标记(页面的静态部分)发送给用户的浏览器,由浏览器中的HTML 解释器负责解释执行HTML 标记。

(2)负责处理JSP 标记,并将有关的处理结果发送到用户的浏览器。

(3)执行“<%”和“%>”之间的java 程序片(JSP 页面中的动态部分),并把执行的结果交给用户的浏览器显示。

(4)当多个用户请求一个JSP 页面时,Tomcat 服务器为每个用户启动一个线程,该线程负责执行常驻内存的字节码文件来响应相应用户的请求。

这些写线程有Tomcat 服务器来管理,将CPU 的使用权在各个线程之间快速切换,以保证每个线程都有机会执行字节码文件,这与传统的CGI 为每个用户启动一个进程相比较,效率要高得多。

广东海洋大学学生软件测试实验报告书4

广东海洋大学学生软件测试实验报告书4

GDOU-B-11-112广东海洋大学学生实验报告书(学生用表)实验名称实验四功能测试工具QTP课程名称软件测试课程号学院(系) 信息(软件)学院专业软件工程班级学生姓名学号实验地点实验日期实验四功能测试工具QTP实验目的:1.熟悉QuickTest Professional(QTP)的安装过程2.熟悉并掌握QTP的基本原理及使用-对象的识别、检查点、参数化实验内容:1.安装QTP2.录制计算器加法运算,计算5+6,保存脚本为cal。

运行脚本,观察是否正确。

计算器对应的程序是:C:\WINDOWS\system32\calc.exe3.对脚本为cal修改,插入属性检查点检查预期结果是否为“11.”,保存脚本为checkcal。

观察运行后QTP是否能够正确判断结果对错。

4.以QTP自带的Windows应用程序flight为例。

对应的应用程序是:C:\Program Files\Mercury Interactive\QuickTestProfessional\samples\flight\app\flight4a.exe,其中AgEnt name至少为4位,password 为mercury.录制如下操作:登录并订购机票(此时不要选择航班)。

保存脚本为flight。

运行脚本,观察是否正确。

5.对登录名称进行参数化:对脚本flight修改,利用Data table数据(只用二个用户)进行参数化,保存脚本为para_name。

观察运行后QTP是否能够以相应的用户名进行登录。

1.1)先打开QTP软件,如下图操作,选择计算器进行测试图1-1-1选择Test-Record图1-1-2按Record后如下图操作,选择Windows的计算器图1-1-3 点击“确定”后,弹出以下页面图1-1-4 2)开始录放脚本(事先已将对象设置好)按照顺序输入“5+6=”,完成后按Stop图1-2-1完成后,按“Run”键,选择“确定”可以运行脚本。

计科1141广东海洋大学java10(实验4)

计科1141广东海洋大学java10(实验4)

广东海洋大学学生实验报告书(学生用表)实验名称实验四.类的基本编程课程名称Java程序设计与开发技术课程号学院(系) 数学与计算机学院专业计算机科学与技术班级计科1141学生姓名邓超荣学号201411621110 实验地点钟海楼04017实验日期2016.10.26一实验目的:掌握Java类的基本知识及应用二实验内容:定义一个名为Complex的类实现复数概念及运算,它的UML图如下,先实现该类的相关方法,再试编写主方法来测试该类这些的方法。

GDOU-B-11-112代码:public class ComplexDemo {public static void main(String[] args) {Complex c1 = new Complex(1,2);Complex c2 = new Complex(2,3);Complex c3 = new Complex(4,-2);double c = -2;Complex sum = new Complex();sum = plexAdd(c1,c2);System.out.println("(1+2i)+(2+3i)="+sum);sum = plexAdd(c1, c);System.out.println("(1+2i)+(-2)="+sum);sum = plexAdd(c1,c2,c3);System.out.println("(1+2i)+(2+3i)+(4-2i)="+sum);Complex mid = new Complex();mid = plexMinus(c1,c2);System.out.println("(1+2i)-(2+3i)="+mid);mid = plexMinus(c1, c);System.out.println("(1+2i)-(-2)="+mid);Complex mul = new Complex();mul = plexMul(c1,c2);System.out.println("(1+2i)*(2+3i)="+mul);mul = plexMul(c1, c);System.out.println("(1+2i)*(-2)="+mul);mul = plexMul(c1,c2,c3);System.out.println("(1+2i)*(2+3i)*(4-2i)="+mul);}}class Complex {double realPart;double imaginaryPart;Complex(){} //默认构造函数Complex(double r,double i) { //带参数的构造函数realPart = r;imaginaryPart = i;}double getRealPart() { //返回实部return realPart;}void setRealPart(double d) { //设置实部realPart = d;}double getImaginaryPart() { //返回虚部return imaginaryPart;}void setImaginaryPart(double d) { //设置虚部imaginaryPart = d;}Complex complexAdd(Complex c1,Complex c2) { //复数对象与复数对象相加Complex sum = new Complex();sum.realPart = c1.realPart + c2.realPart;sum.imaginaryPart = c1.imaginaryPart +c2.imaginaryPart;return sum;}Complex complexAdd(Complex c1,double c2) { //复数对象与实数相加Complex sum = new Complex();sum.realPart = c1.realPart + c2;sum.imaginaryPart = c1.imaginaryPart;return sum;}Complex complexAdd(Complex c1,Complex c2,Complex c3) { //三个复数相加Complex sum = new Complex();sum.realPart = c1.realPart + c2.realPart +c3.realPart;sum.imaginaryPart = c1.imaginaryPart +c2.imaginaryPart + c3.imaginaryPart;return sum;}Complex complexMinus(Complex c1,Complex c2) { //复数对象与复数对象相减Complex mid = new Complex();mid.realPart = c1.realPart - c2.realPart;mid.imaginaryPart = c1.imaginaryPart -c2.imaginaryPart;return mid;}Complex complexMinus(Complex c1,double c2) { //复数对象与实数相减Complex mid = new Complex();mid.realPart = c1.realPart - c2;mid.imaginaryPart = c1.imaginaryPart;return mid;}Complex complexMul(Complex c1,Complex c2) { //复数对象与复数对象相乘Complex mul = new Complex();mul.realPart = c1.realPart * c2.realPart -c1.imaginaryPart * c2.imaginaryPart;mul.imaginaryPart= c1.realPart* c2.imaginaryPart + c1.imaginaryPart * c2.realPart;return mul;}Complex complexMul(Complex c1,double c2) { //复数对象与实数相乘Complex mul = new Complex();mul.realPart = c1.realPart * c2;mul.imaginaryPart = c1.imaginaryPart * c2;return mul;}Complex complexMul(Complex c1,Complex c2,Complex c3) { //三个复数相乘Complex mul = new Complex();mul.realPart = c1.realPart * c2.realPart -c1.imaginaryPart * c2.imaginaryPart;mul.imaginaryPart= c1.realPart* c2.imaginaryPart + c1.imaginaryPart * c2.realPart;double r = mul.realPart;double i = mul.imaginaryPart;mul.realPart = r * c3.realPart - i *c3.imaginaryPart;mul.imaginaryPart = r * c3.imaginaryPart + i *c3.realPart;return mul;}public String toString() { //以a+bi的形式显示复数String s = new String();if(realPart!=0){if(imaginaryPart>0) {s = (int)realPart + "+" + (int)imaginaryPart + "i";}else if(imaginaryPart==0) {s = String.valueOf((int)realPart);}else{s= (int)realPart+ ""+ (int)imaginaryPart+ "i";}}else{if(imaginaryPart>0) {s = (int)imaginaryPart + "i";}else if(imaginaryPart==0) {s = String.valueOf(0);}else{s = (int)imaginaryPart + "i";}}return s;}}。

汇编实验四分支和循环程序设计实验(设计性实验)

汇编实验四分支和循环程序设计实验(设计性实验)

汇编实验四分支和循环程序设计实验(设计性实验)汇编语言实验报告实验四分支和循环程序设计实验(设计性实验)班级:姓名:学号:实验日期:实验四分支和循环程序设计实验(设计性实验)一、实验要求和目的1.熟悉汇编语言程序设计结构;2.熟悉汇编语言分支程序基本指令的使用方法;3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法;4.了解汇编语言循环程序设计的基本流程;5.熟悉汇编语言循环基本指令的使用方法;6.掌握利用汇编语言的循环指令完成循环程序设计方法。

二、软硬件环境1、硬件环境:计算机系统windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。

三、实验涉及的主要知识在实际应用中,经常根据一些条件来选择一条分支执行。

汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号相减而导致的结果来进行。

1.无条件转移指令JMP无条件转移指令JMP 是使程序无条件转移至目标处,又分为段内转移、段间转移。

2.条件转移指令JXX条件转移指令可分为三大类:1).简单条件转移指令指令。

根据单个标志位的状态判断转移条件。

标志位指令转移条件意义CF JC CF=0 有进位/借位JNC CF=1 无进位/借位ZF JE/JZ ZF=1 相等/等于0JNE/JNZ ZF=0 不相等/不等于0 SF JS SF=1 是负数JNS SF=0 是正数OF JO OF=1 有溢出JNO OF=0 无溢出PF JP/JPE PF=1 有偶数个1JNP/JPO PF=0 有奇数个12).无符号数条件转移指令。

假设在条件转移指令前使用比较指令,比较两个无符号数A,B,指令进行的的操作是A-B,其转移指令如下:指令转移条件意义JA/JNBE CF=0 AND ZF=0 A>BJAE/JNB CF=0 OR ZF=1 A>=BJB/JNAE CF=1 AND ZF=0 A<b< p="">JBE/JNA CF=1 OR ZF=1 A<=B3).带符号数条件转移指令。

广东海洋大学 微机原理实验报告 实验四 8255A接口实验

广东海洋大学 微机原理实验报告 实验四   8255A接口实验

GDOU-B-11-112广东海洋大学学生实验报告书(学生用表)实验名称8255A接口实验课程名称课程号
学院(系) 信息学院专业电气工程及其自动化班级电气1123 学生姓名许学儒学号201211631325 实验地点科技楼实验日期
一、实验目的
1.掌握TDN86/88教学系统的基本操作
2.掌握8255A可编程并行通信接口芯片的使用。

二、实验内容
通过按键来控制发光二极管的显示。

当k0按下,二极管从低到高循环点亮;按下k1,二极管从高到低循环点亮;其他按键所有的发光二极管闪烁。

三、实验步骤
1.硬件接口及接口地址如下,8255的数据线、地址线和控制线分别与系统总线相连,A、B、C三个端口以排针形式引出,供实验使用。

按要求接好电路。

2.根据接线及端口地址,编写源程序。

3.运行程序,拨动开关,查看LED是否能按照实验要求点亮。

四、调试结果及调试分析
五、结论与心得
实验难点:8255A的初始化,流水灯程序的编写,扩展并口的地址计算等。

心得:本次实验顺利完成,通过本次实验后掌握了8255A扩展并口的应用与相关程序的编写。

成绩指导教师日期
注:请用A4纸书写,不够另附纸。

第1页,共1页。

汇编(循环、分支、子程序)实验报告

汇编(循环、分支、子程序)实验报告
1.设计:
分别为十个成绩、成绩总个数、分段的5个区间申请内存单元,初始化数据段;将AX,BX,CX压栈,保留原始数据。选取第一个成绩,存入AX中,该数据除以10,得到商存入BX,判断商的所属区间,给所属区间加1,继续下一个,循环直到十个全部判断结束,pop出栈,得到属于各区间的成绩个数,程序结束。
2.源程序清单
2.源程序清单
datasegment
xdw 1ah
ydw 0ah
zdw 01h
maxdw ?
dataends ;数据段定义
codesegment
assume ds: data, cs: code
start:
mov ax, data
mov ds, ax ;初始化数据段
mov ax, x
cmp ax, y
《汇编语言程序设计》实验报告
实验名循环、分支、子程序设计实验室实验楼实验日期2014-06-09
一、实验目的及要求
1.熟悉命令格式,功能,加强对指令系统的理解
2.编写简单循环、选择、子程序的结构程序
3.单步跟踪调试,观察寄存器的变化和指令执行的结果
二、实验环境
硬件环境:一台微型计算机
软件环境:windows xp,debug环境,masm
2.源程序清单
datarea segment;定义数据段
buffer db 80 dup(?) ;预申请了以buffer为首地址的内存单元
flag db ?
datarea ends
prognam segment;定义编码段
main proc far
assume cs:prognam,ds:datarea
(5).初始数据段
(6).分别将AX,BX,CX,SI压栈,保留初始数据,

汇编循环程序实验报告

汇编循环程序实验报告

课程名称:汇编语言实验项目:DOS IO调用实验姓名:姜晓阳专业:计算机科学与技术班级:14-6学号:1404010607计算机科学与技术学院实验教学中心2016 年 5 月 1 日实验项目名称: DOS IO调用实验一、实验目的1.掌握汇编语言程序结构。

2.了解DOS输入输出调用命令使用。

3.掌握输入/输出程序设计编程方法。

二、实验内容1.掌握汇编语言上机过程,了解汇编语言程序结构。

2.使用DOS I/O调用功能,实现从键盘键入一串字符串,在屏幕上显示该字符串。

3.编写程序,实现从键盘输入字符串,进行密码检测,若密码正确,显示‘Match’,否则,显示‘No match,input key again’,重新输入密码。

三、实验用设备仪器及材料硬件:计算机软件:汇编语言DOS环境或汇编语言集成环境四、程序清单stack segment stackdb 1024 dup(?)stack endsDATA segmentmsg db 'input',0dh,0ah,'$'msg1 db':monday',0dh,0ah,'$'msg2 db':Tuesday',0dh,0ah,'$'msg3 db':Wednesday',0dh,0ah,'$'msg4 db':thursday',0dh,0ah,'$'msg5 db':friday',0dh,0ah,'$'msg6 db':saturday',0dh,0ah,'$'msg7 db':sunday',0dh,0ah,'$'table dw disp1,disp2,disp3,disp4,disp5,disp6,disp7DATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODE,ES:stackSTART:MOV AX,DATAMOV DS,AXMOV ES,AXMOV DX,OFFSET msgMOV AH,09HINT 21Hmov ah,02hmov dl,0ahint 21hmov ah,02hmov dl,0dhint 21hstart1:mov ah,01hint 21hcmp al,'1'jb start1cmp al,'7'ja start1and ax,0fhdec axshl ax,1mov bx,axjmp table[bx]start2: mov ah ,09hint 21hjmp start1EXIT:MOV AH,4CHINT 21Hdisp1: mov dx,offset msg1jmp start2disp2: mov dx,offset msg2jmp start2disp3: mov dx,offset msg3jmp start2disp4: mov dx,offset msg4jmp start2disp5: mov dx,offset msg5jmp start2disp6: mov dx,offset msg6jmp start2disp7: mov dx,offset msg7jmp start2code endsend startdb 78h,80h,23h,1,4,0fh,2ah,46h,32h,42h五、实验结果分析。

汇编实验报告--循环程序设计实验

汇编实验报告--循环程序设计实验

实验三循环程序设计实验学生姓名:何茂杰学号:2010305104 专业班级:计算机本科一班指导老师:文远熔实验日期:实验成绩:一、实验目的1.掌握循环程序的设计方法;2.学会针对不同的问题,选用不同的组织循环的方法;3.进一步熟悉利用DEBUG程序修改参数的方法,并检查和验证结果的正确性。

二、实验内容1.计算y=x!X为8位无符号数Y为16位无符号数2.计算z=x+y其中x,y为5字节压缩BCD码,x,y,z的存放地址自定。

3. y=x/32,要求得商的整数和小数,x为四字节无符号数三、实验环境PC微机DOS操作系统或Windows 操作系统四、实验要求1.编写实验内容要求的两个程序;2.写出调试以上程序,即修改程序参数,检查结果的操作方法;3.熟悉源程序汇编、连接命令的使用方法即要回答的内容。

五、主要实验步骤一.算法过程1.分析算法思想2.根据算法分析3.编写程序测试,记录结果4.分析结果5总结二.对.EXE文件进行调试运行。

(1)用DEBUG调试运行,学会修改BL内容的方法;(2)对DSPKEY.EXE键入不同的字符,分别进行调试;(3)在MS-DOS下运行这两个.EXE文件。

六.心得体会实验让我了解了循环程序设计的应用。

让我明白如何应用循环程序设计。

源代码:code segmentassume cs:code,ds:codeorg 100hstart:push cspop dspush cspop esQ0:lea dx,Tipsmov ah,9int 21hQ1:mov ah,0int 16hcmp al,1bhjz exitcmp al,'0'jb Q1cmp al,'8'ja Q1mov ah,0ehint 10hsub al,30h;'0'or al,aljnz Q2mov ax,1 ;0!=1 jmp Q4Q2:mov ah,0 mov cx,axmov al,1xor dx,dxQ3:mul cxloop Q3Q4:cldlea di,Result add di,2lea bp,Table mov cx,5Q5:xor dx,dx div word ptr [bp] or al,30hstosbmov ax,dxadd bp,2loop Q5lea dx,Result mov ah,9int 21hjmp Q0exit:mov ah,4chint 21hcode endsend start。

c程序设计实验3

c程序设计实验3

广东海洋大学学生实验报告书实验名称 顺序程序设计成绩学院(系) 电子与信息工程学院 专业电气工程及其自动化班级 1163学生姓名李宇华学号 201611631312 实验地点钟海楼04002实验日期2016年10月20日1实验目的(1)掌握C 语言中使用最多的一种语句——赋值语句的使用方法。

(2)掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。

(3)进一步掌握编写程序和调试程序的方法。

2实验内容和步骤(1)通过下面的程序掌握各种格式转换符的正确使用方法。

①输入以下程序: #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'; 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,n=%1d\np=%u,q=%u\n",f,g,m,n,p,q); return 0; }②运行此程序并分析结果。

GDOU-B-11-112③在此基础上,将程序第10~14行改为c1=a;c2=b;f=3157.890121;g=0.123456789;d=f;e=g;p=a=m=50000;q=b=n=-60000;运行程序,分析结果。

运行这个程序时,出现了c1=?c2=?的结果,说明c1c2的输入方法有错,让我认识到输入时应该准确地输入,不该偷工减料。

循环程序设计实验报告

循环程序设计实验报告

学号:0740303104姓名:雷凤循环程序设计实验报告一、实验目的:1、了解和掌握比较循环程序的组成部分,重复控制指令的功能、作用和方法。

2、学会循环程序设计的方法。

3、学习汇编语言输出输入语句的设计。

二、实验要求:1、具体了解和掌握循环程序的组成部分,重复控制指令的使用和在使用时应注意的问题2、学习循环序设计的一般方法。

三、实验内容1、实验任务设有N个学生的某科成绩(百分制),已按学号的次序存放在以STUD 为首址的字单元数组中,现要求按成绩的高低记入名次,并把名次填入成绩所在的字单元的高字节中。

字单元的格式为2、实验的原理这个实验要用循环的嵌套,内外循环都循环6次,刚开始时将所有的名次都置1,外循环从第一个成绩开始依次与每一个学生(包括自己)的成绩比较大小,要是小于,相应的名次就加1,再将第二个成绩与所有的分数依次比较大小,一直循环6 次,就能得出名次排序了,将相应的名次分别保存在dl 低字节中,也便于输出名次。

3、程序设计流程图开始BX<-STUD存区首址CX<-外循环次数DL<-1AL<-[BX]CX<-内循环次数Slv-STUD存区首址DL<-DL+1SI<-SI+2[BX+1]<-DLBX<-BX+2Slv-SI+2结束A:INC SIINC SILOOP LOP2POPCXmov[BX+1], dl ; 把结果保存到高地址INC BX; 修改地址INC BX 四、实验步骤1、编辑源程序,建立一个以后缀为 .ASM 的文件 .DATASSEGMENT; 此处输入数据段代码STUDDW78,65,89,90,58,99DATASENDSSTACKSSEGMENT; 此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMCES:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX; 此处输入代码段代码LEABX,STUDLOP1:PUSHCXMOVdl,1 ;dl 用来存放名次MO\AL,[BX];BX 的内容送给AL MOVCX,6取偏移地址 LOP2:CMPAL,[SI]JL LOP3JMP A; 比较大小 ; 小于就转 ;LOOP LOP LOP3:INC dl ; 小于,名次加 1; 修改地址add dl,30h ; 输出movah,02hint 21hLOOP LOP1 ; 回到外面的循环MOVAH,4CHINT 21HCODESENDSENDSTART2、汇编源程序,检查程序有否错误,有错时回到编辑状态,修改程序中错误行。

汇编语言程序设计04循环控制与过程

汇编语言程序设计04循环控制与过程

可整理ppt- 朱明
Section 1…
11
间接寻址
通过间接操作数进行寻址
add
esi,
mov
al,
2 [esi]
通过间接操作数寻址时,寄存器中存放的是地址/偏移
通过变址操作数进行寻址
mov
esi,
mov
al,
2 aar1[esi]
mov
al,
[aar1 + esi]
通过变址操作数寻址时,寄存器中不直接存放地址/偏 移,而存放一个相对于地址/偏移的增量
假设在程序运行之前,数组的大小(5个元素)和元素 大小都是已知的(DWORD)
要求你的程序仅使用今天以前讲过的指令完成
数组中有5个DWORD类型元素的
如果元素数目和大小未知怎么办?
想办法知道元素的数目和大小 建立一个具有判断机制的循环体
前章回顾…
可整理ppt- 朱明
3
LOOP指令
组成原理实验中的实现循环方法到LOOP循环
INCLUDE
irvine32.inc
取得数组 相关信息
.data
arr1 DWORD 111h, 222h, 333h, 444h, 555h
val1 DWORD ?
.code main
PROC mov
eax, TYPE arr1
把数据 逐一相加
mov val1, eax
mov mov
ecx, LENGTHOF arr1 eax, 0
LOOP 标号
LOOP指令的执行包含两个步骤
ECX的值减1,并与0作比较
如果ECX不等于0,则跳转到对应标号 地址处;如果ECX等于0则不跳转
与LOOP指令类似的有使用ECX作计 数器的LOOPD和使用CX作为计数器 的LOOPW

广东海洋大学 汇编语课程设计要求

广东海洋大学 汇编语课程设计要求

汇编语言实习任务 实习任务汇编语言课程实习任务以下题目可以最多2人为一组进行选题,2位同学分工合作开发系统和编写课程实习报告。

题目一:学生成绩管理系统基本功能:1、 输入学生各门功课成绩;(假设3门功课,每门功课有唯一编号)2、 对学生成绩记录进行查询检索(按学号、姓名)3、 能修改指定学号的学生成绩;4、 对学生成绩排序(按总成绩降序排列);5、、统计指定学号的学生的平均成绩在屏幕上显示;6、 统计指定编号课程的平均成绩在屏幕上显示;7、 每门课程成绩分析:在屏幕上显示3门课程的各个分数段的学生人数;(分数段为:>=90;80~89;70~79;60~69;<=59)8、 退出系统功能题目二:通信录管理系统基本功能:1、 建立通信录文档,记录字段包含序号、姓名、电话、单位等内容;2、 显示通信录报表;3、 能够通过姓名、或电话号码查询记录并显示查询结果;4、 能够对记录进行增加、删除、修改操作;5、退出系统题目三:计算比赛成绩系统基本功能:(1)有9名评委,每个评委给分范围为0~10(整数):由键盘输入;(2)9名评委给分中,去掉一个最高分和一个最低分,剩余7名评委的平均分即为参赛者的得分(精确到小数点后二位,不考虑四舍五入);(3)将最后得分在光标位置处显示出来。

题目四:带显示界面的运算器基本功能:1、具有简单人机交互界面,易于操作;2、能够实现基本的加、减、乘、除四则运算(可以限定在字或双字范围内);3、由键盘输入运算数据并显示。

如输入数据时出现错误,可以向前删除修改;4、运算结果能正确显示;题目五电子时钟基本功能1、设计可以显示与系统同步的时钟。

2、通过按键可以切换到秒表功能,可控制秒表清零、暂停、继续,退出等。

3、通过按键可以切换到闹钟设定功能,到达设定时间则发出声音。

提示:用系统8253定时器计数器0设计秒表程序。

利用计数器2 触发扬声器发音。

题目六:点歌系统基本功能:1、在屏幕上显示出歌曲代号与名单,比如:A miusic 1B miusic 2C miusic 32、当从键盘输入歌曲的序号A、B或C时,计算机则演奏所选择的歌曲;3、通过按键控制演奏暂停、继续和结束;4、在键盘上按下ESC键时结束演奏并退出系统。

汇编语言循环程序实验报告

汇编语言循环程序实验报告

东北大学计算机硬件技术基础实验报告一、实验目的(1) 加深对循环结构的理解;(2) 掌握循环程序的设计方法;(3) 熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。

二、实验内容1.已知以BUF为首地址的字存储区中存放着8个有符号二进制数,是编写程序将其中大于等于0的数依次送BUF1为首地址的字存储区中,小于0的数依次送以BUF2为首地址的字存储区中。

同时将大于等于0的数的个数送A字变量,将小于0数的个数送B字变量。

2.设STR字符串是以0结尾。

试编写一个把字符串中的所有大写字母改为小写字母的程序并将转换后的字符串显示输出。

3.试编程从自然数1开始累加,直到累加和大于5050为止,统计被累加的自然数的个数,并把统计的个数送入COUNT单元,累加和送入TOTAL单元。

三、算法描述流程图实验内容1、2、3的流程图分别为图1、图2、图3。

图2 图1图3四、实验步骤1.已知以BUF为首地址的字存储区中存放着8个有符号二进制数,是编写程序将其中大于等于0的数依次送BUF1为首地址的字存储区中,小于0的数依次送以BUF2为首地址的字存储区中。

同时将大于等于0的数的个数送A字变量,将小于0数的个数送B字变量。

1)输入源程序:DATA SEGMENTBUF DW 23,123,-12,-210,45,0,90,-453BUF1 DW 8 DUP(0)BUF2 DW 8 DUP(0)A DW ?B DW ?DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART: MOV AX, DATAMOV DS, AXLEA BX, BUFLEA SI, BUF1LEA DI, BUF2MOV A,0MOV B,0MOV CX,8L0: MOV AX,[BX]CMP AX,0JGE L1MOV [DI],AXADD DI,2INC BJMP NEXTL1: MOV [SI],AXADD SI,2INC ANEXT: ADD BX,2LOOP L0MOV AH, 4CHINT 21HCODE ENDSEND START2)运行程序。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四循环程序设计
一、实验目的
1、学会使用循环指令loop、loopz、loopnz,加深对循环结构的理解。

2、掌握循环程序的设计方法。

二、实验内容
1、编写程序,统计学生成绩不及格的人数。

在内存GRADE开始的位置连续
存放了10个学生成绩,,请编程统计不及格的人数保存在内存COUNT中。

调试运行程序,查看结果。

DATAS SEGMENT
GRADE DB 78,65,40,80,56,90,35,94,50,33 ;学生成绩
COUNT DB ? ;存放不及格的人数
DATAS ENDS
2、编写程序,实现十进制到十六进制的转换。

要求接收键盘输入的十进制
数(范围0~65535)到BX,然后在下一行显示相应的十六进制数。

3、编写程序,要求比较两个字符串STRING1和STRING2所含字符是否相同
(都为25个字符),若相同则显示‘Match.’,否则,显示‘No match!’。

数据段的设置参考程序LS1-1.ASM,请分别用LOOP循环指令和串处理指
令来实现,并调试运行。

三、实验报告要求:
1、说明LOOP指令的执行过程。

答:是循环指令,循环次数由计数寄存器CX指定,至少执行一次循环体,
执行LOOP指令时,CPU自动将CX的值减1
直到CX为0 ,循环结束.
2、画出程序2的流程图。

给程序的关键语句加上注释。

3、总结有哪些方法可以实现循环结构。

答:分别有do-while结构和do-until 结构。

相关文档
最新文档