汇编语言程序设计上机实验

汇编语言程序设计上机实验,第1张

PRINT MACRO PARAM

LEA DX,PARAM

MOV AH,9

INT 21H

ENDM

DSEG SEGMENT

MARKS DB100,87,45,67,32,45,66,98,83,90,85,60,59 成绩

MARKED DB0FFH表示成绩数据结束斗正

M59MSG DB' <60 counter:$'

M59 DB5 DUP(0),0DH,0AH,24H

C59 DW0

M60MSG DB' <90 counter:$'

M60 DB5 DUP(0),0DH,0AH,24H

C60 DW0

M90MSG DB'>=90 counter:$'

M90 DB5 DUP(0),0DH,0AH,24H

C90 DW0

BUFFER DB20,20 DUP(0)

CRLF DB0DH,0AH,24H

MSGERR DB'data error',07,0DH,0AH,24H

DSEG ENDS

CSEG SEGMENT

ASSUMECS:CSEG,DS:DSEG

START: MOV AX,DSEG

MOV DS,AX

LEA SI,MARKS

ML1: MOV AL, [SI]取一个成绩

INC SI

CMP AL,0FFH 是不是已经处理完所有成绩

JZML2

CMP AL,101 判断一下是不是有大于扒派100的数,这里假设最大成绩是100分

JNC ML_ERR

CMP AL,60 下面进行各成绩空此悔段的计数

JCML_L60

CMP AL,90

JCML_L90

INC [C90]

JMP ML1

ML_L60: INC [C59]

JMP ML1

ML_L90: INC [C60]

JMP ML1

ML2: MOV AX,[C59]

LEA SI,M59+5

CALL AX2ASC 将AX中的数转换成ASCII码,以显示

MOV AX,[C60]

LEA SI,M60+5

CALL AX2ASC

MOV AX,[C90]

LEA SI,M90+5

CALL AX2ASC

PRINT M90MSG 显示,如果不希望用宏指令,可以用下列的方式实现

LEA DX,M90MSG

MOV AH,9

INT 21H

PRINT M90

PRINT M60MSG

PRINT M60

PRINT M59MSG

PRINT M59

MOV AX,4C00H返回DOS

INT 21H

ML_ERR: PRINT MSGERR 显示错误信息

MOV AX,4C01H

INT 21H

下面的子程序用于将AX中的数转换成ASCII码

AX2ASC PROC NEAR

ent ax=data si=end of buffer exit si=start of string

PUSH AX

PUSH CX

PUSH DX

MOV CX,10

SUB_L1: MOV DX,0

DIV CX

ADD DL,30H

DEC SI

MOV [SI],DL

ORAX,AX

JNZ SUB_L1

POP DX

POP CX

POP AX

RET

AX2ASC ENDP

CSEG ENDS

END START

以上程序已测试通过。不知道是否满足你的要求

希望能帮到你。

1、实验名称:计算出1000以内10个最大素数之和。

2、实验目的:熟练掌握if、if…else、if…else if语句和witch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构。熟练掌握while语句、do…while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。

3、实验内容:计算并输出1000以内最大的10个素数以及它们的和。

4、要求:在程序内部加必要的注释。 由于偶数不是素数,可以不考虑对偶数的处理。 虽然在1000以内的素数超过10个,但是要对1000以内不够10个素数的情况进行处理。 输出形式为:素数1+素数2+素数3+…+素数10=总和值。

5、算法描述流程:Main函数:判断素数:

6、测试数据:分别输入1000、100、10测试。

7、运行结果:出现问题及解决方法:当素数个数小于10时的处理不够完善,考虑不够周全。学习耐心与细心不足,如scanf(“%d”,&n)中的“&”经常忘记。

8、编程思想不够发散,例如如何判断素数,只能想出2种方式(其中1种为参考教科书上内容);在今后学习桐袜中应更多的动脑,综合运用所学。

9、基本功不够,如清屏clrscr()等函数用的不好,有时同样的问题多次犯,给实验课老师带来很大的麻烦。这说乱轮态明我的知识不够广,有很多有用但不做考试要求的书中内哗源容没有学好,认识程度不够深刻。就算以后C语言这门课程结束后,也应多看相关东西,多上机练习,才能真正从本质上提高自己。

10、物理实验报告 ·化学实验报告 ·生物实验报告 ·实验报告格式 ·实验报告模板

11、知识不够广泛,如VC++6.0等程序,自己试了好一阵也不会用;说明我电脑水平还是不够,自学能力不够。已会的东西掌握的还是不够好。

12、实验心得:通过本次C语言上机实验,我对这个介于人类与非人类之间的计算机编程语言有了一定的体验。其间开心过、郁闷过、无奈过、彷徨过……随着实验的胜利成功与实验报告的胜利完成,有点微微的自豪感使人难忘。感谢高克宁老师的高标准、严要求,感谢实验课上小老师们的耐心指点,也感谢我在实验中经历过的点点滴滴……伴随着学习的深入,我发现高深的东西还有很多很多,等待着我自己去挖掘。对C语言,我会更加努力。

汇编语言程序设计的基本步骤了解了汇编语言指令的功能和用法,了解了汇编语言程序的编写格式,就可以编制完整的汇编语言程序了。一个程序通常具有顺序、分支、循环和子程序4种结构形式。顺序程序结构就是指完全按顺序逐条执行的指令序列。在程序设计过程中,顺序结构大量存在,屡见不鲜。但一个完整的程序只是逐条去蠢御执行指令,这非常少见。常见的程序结构,是上述4种结构的混合体。一般来说,编制一个汇编语言程序的步骤如下:(1) 分析题意,确定算法或算法思想。算法是指解决问题的方法和步骤。比如现有的一些计算方法和日常生活中解决问题的逻辑思维推理方法等。(2) 根据算法画出流程图,简单的情况也可不画。画出描述算法的流程图,可以首先从图上检验算法的正确性,减少出错的可能,使得动手编写程序时的思路更加清晰。(3) 分配存储空间和工作单元,合理地使用寄存器。分配存储空间和工作单元,是指存储空间的分段和数据定义。另外,由于寄存器的数量有限,编写程序时经常会感到寄存器不够用。因此,对于字节数据,要尽量使用8位寄存器。而采用适当的寻址方式,也会达到节省寄存器的目的。(4) 根据流程图编写程序。这是编制汇编语言程序最为重要的一步。算法里规定的功能,是要通过一条条指令描述出来的。为了提高编程能力,对于初学者,一是要多阅读现有的程序,以学习别人的编程经验;而更为重要的是,必须多亲自动手编写,不要怕失败,只有通过无数次失败,才能从中积累自己的编程经验。(5) 上机调试运行程序。通过汇编的源程序,只能说明它里面不存在语法错误。但是它是否能达到算法所要求的预期效果,还必须经过上机调试,用一些实验数据来测试,才能够真正地得出结论。可以这么说,即使是一个非常有经验的程序员,也没有百分之百的把握说他编写的程序一次就成功。 用流程图表示算法 流程图用一些图形框来代表各种 *** 作。用图形表示算法,直观形象,可以用来帮助人们对算法的理解。下图给出了一些常用的流程图符号。

上图中的判断框(菱形)用来对一个给定的条件作出判断,以决定如何执行其后的 *** 作。它有一个入口,两个出口,如下图(a)所示。

连接点(圆圈)是用来将画在不同地方的流程线连接起来。例如在下图(b)里,有两个圈里写着数字1的圆圈,它表示是从左边的1出来,进到右边图的1里(这由流程线的方向给出)。可以看出,这两个点其实就是同一个点,只是由于画不下而分开来画的。用连接点,可以避免流程带慧岩图中的流程线相互交叉或过长,从而使流程图清晰。

注释框不是流程图中必需的部分。在流程图中使用它,是碧晌为了对流程图中的某些框的 *** 作做一些必要的说明,以便使人们能够更好地通过流程图来理解算法。

处理框反映做些什么样的 *** 作,如把某个单元的内容送入某个寄存器,从某个存储单元取出数据等。它是流程图里最为本质的、出现最多的图形框。

输入/输出框反映程序的输入和输出情况。计算机程序无外乎接收数据,进行处理,然后加以输出,所以输入/输出框是必不可少的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12480826.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存