ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:208.79KB ,
资源ID:23001736      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23001736.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(汇编语言课程设计.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

汇编语言课程设计.docx

1、汇编语言课程设计摘 要通过此次的汇编语言实验,让我熟悉了解了汇编语言的指令系统中一些基本的指令的操作及运用,同时我也对汇编语言程序格式、循环与分支程序设计、子程序结构等的运用有了进一步的了解。我所选的题目为输入一个圆柱体的底面半径和高,求它的表面积和体积以及它最大内接长方体的表面积和体积。在对所选的题目进行分析编程的过程中,首先绘制程序流程图,再按照流程图运用8086CPU提供的指令、伪指令、宏指令及DOS,BIOS功能调用编写程序源代码,同时给出说明注释。最后利用计算机提供的软件调试工具对所编写程序进行调试,记录下整个调试分析的过程与运行结果。 关键词:三角形;汇编语言;流程图;程序源代码;

2、调试 abstaractThrough the assembly language experiment, let me be familiar with some basic instruction of assembly languages instruction system in operation and use. At the same time, I have also been further understood for the assembly language program format, circulation and branch program design, s

3、uch as the use of subroutine structure. My selected subject is to input a radius of cylinders basal plane and the cylinders height, and strive for its surface area and volume as well as its maximum inscribed rectangular parallelepipeds superficial area and volume. On the choice of the programming pr

4、ocess, first of all drawing flowchart of the program, then according to the flow chart provided by 8086CPU instructions, directives, macro and DOS, BIOS function calls compiling the program source code, and giving descriptions of the annotation. Finally,using the software debugging tools the compute

5、rs provided for program debugging,and recording the whole debugging analysiss process and results. Key words: triangle; assembly language; flowchart; program source code; debugging目 录1概述 41.1课程设计的目的 41.2课程设计的要求 41.2.1需要的基本知识与技能 41.2.2尚未掌握的知识点 52程序设计方案及流程图 62.1主程序流程图 62.2总体设计 72.3 详细设计 72.4源程序 83调试分析

6、 83.1进入主界面 83.2 系统菜单界面 93.3程序运行结果界面 104总结 115参考文献 12致谢 13附件 141概述本课程设计要求用所学的汇编语言知识来编写一个完整的程序以实现用汇编语言编辑递归算法画三角形。1.1课程设计的目的掌握一些程序设计的基本方法,要知道主程序,子程序以及推栈段的使用,了解自己所编的程序了解与掌握汇编语言中加法指令、减法指令、乘法指令、除法指令、出栈及入栈指令、跳转指令等的概念和它们的运用。学会汇编语言递归算法的运用。1.2课程设计的要求1.2.1需要的基本知识与技能:具备汇编语言设计、编写、调试和运行程序的方法和技巧。在PC机上运行汇编程序需要经过以下几

7、个阶段:编辑源程序:利用文本编辑工具编辑源程序,生成一个汇编语言的纯文本文件。文件的扩展名为.ASM汇编源程序。用汇编器汇编源程序生成目标代码文件,目标代码文件的扩展名是.OBJ,汇编器还可以生成列表文件和交叉参考文件。汇编器相当于高级语言中的编译器。汇编语言按照汇编语言的语法检查源程序,如果源程序语法有错误,汇编器就不生成目标代码文件,这时,必须重新编辑源程序,修改语法错误。当发现源程序有的行含有不确定因素,汇编器会给出警告信,但按却省处理方法生成目标代码文件。此时,可以重新编辑源程序,消去不确定因素。 连接目标程序:利用连接器连接目标代码程序和库函数代码生成可执行程序文件。一般单个模块的连

8、接可以顺利地生成可执行程序文件。当多个模块连接,或者库函数连接时,如果在目标代码中找不到所需的连接信息,连接器就会发生错误提示信息,而不是生成可执行文件。这时,这就要重新编辑源程序,并汇编程序。调试可执行程序:程序的动态调试是在形成可执行文件后,针对可执行程序进行的。DEBUG是简单的动态调试工具,利用调试工具动态的调试程序,找出程序中的问题,那么就要重新编辑汇编源程序。1.2.2尚未掌握的知识点:有时在程序中定义了较多的宏,或者可以把自己编译中常用的宏定义建立一个独立的文件,这个只包含若干定义宏文件的文件可称为宏库,通常用扩展名MAC或INC来表示。当应用程序中需要用到宏库中的宏定义时,只需

9、要用语句说明。有时汇编语言程序需要连续重复地完成相同或者几乎完全相同的一组代码,这时,可使用重复汇编。汇编程序把重复模块代码重复几次,每次重复把重复块中的哑元用自变量表中的一项取代,下一次取代一次,重复次数由自变量表中的自变量个数来确定。条件汇编中,汇编程序能够根据条件把一段源程序或者把它排去在外,这里用到条件伪操作。条件伪操作可以用在宏定义体内,也可以用在宏定义体外,并且可以嵌套任意次。模块化程序设计方法是按照各部分程序所实现的不同功能把程序划分成为多个模板。各个模板在明确各自的功能和相互间的约定后,就可以编制和调试程序,最后把它们连接起来形成一个大程序,子程序结构是模块化程序设计的基础。子

10、程序相当于高级语言中的过程和函数。在一个程序的不同部分,往往就要用到类似的程序段,这写程序段的功能个结构形式都相同,只是有的变量赋值不同,此时就可以把这些程序写成子程序形式,以便需要时调拥它。2程序设计方案及流程图2.1主程序流程图 图2.1主程序流程图2.2总体设计本课程设计要求编写一个完整的程序以画出一个三角形。该程序要求先显示一些提示信息,然后按提示信息的要求输入三角形的顶点坐标,通过编写计算的程序来画出三角形,同时通过判断得知输入数据是否正确。最终可以利用坐标不同画出不同类型的三角形,将不同的三角形在界面上显示出来。2.3 详细设计这次课程设计的设计思想是在熟练掌握汇编程序的设计方法的

11、基础上, 编写出用坐标画出三角形的代码,具体步骤如下: 首先,选择要输入的模块,进入所选模块;然后,输入所选模块提示输入的数据,按照提示输入完成;最后运行程序画出图形。2.4源程序 见附件3调试分析3.1进入主界面打开系统,进入主界面,显示“Welcom to my program,Im liuyongqin.NO.:109 $”然后使用者可以按数字键2键进入下一界面,按q键退出,此界面整齐美观,界面友好,是使用者更容易接受。主界面显示图如图3.1所示。 图3.1 主界面3.2 系统菜单界面通过对三角形三个顶点坐标分别输入,即(0,0),(300,300),(500,400)所输入的数据如下图

12、3.2所示。图3.2系统菜单界面3.3程序运行结果界面通过对上述程序的运行,我们可以得到一个三角形如下图3.3所示。图3.3程序运行结果界面4总结在编程初期首先遇到的是结构化程序的结构很重要,刚开编的时候没有写流程图和算法,结果程序可读性很差,也很难查错,从中了解到写程序需要一步步来,不能操之过急。 在编程中时常出现逻辑错误。因为这个错误在编译中不会被发现,所以很难找出,要对程序一步一步的检查才行,可以用对子程序稍加修改后单独运行来查错。这体现我经历的程序不够多,需要在这方面加把劲。 此次课程设计中遇到了很多问题,在指导老师的帮助下,加上我自己的努力及同学朋友的全力帮助下,我的这些问题都已得到

13、完满的解决。如怎样通过调试来检查出不容易发现的错误的问题,我通过可是听老师的讲解,课下和同学讨论,最终解决了这个问题。通过这一个学期的汇编语言的学习,我对汇编的认识有了更深理解,切实的提高了我的编程能力。通过这次课程设计的实验,我对学过的知识有了更深层次的运用,能用汇编语言熟练地运用顺序、选择、循环三大结构,进一步掌握了各个指令的功能,特别是转向指令,掌握了子程序的定义及调用。在整个程序的编写中,调试占了很大部分的时间。要想写好汇编语言的程序,必须认真对待代码的每一个细节,这对程序的调试是非常重要的。通过这次实际动手能力的培养,我进一步熟悉了汇编语言的结构和使用方法,基本达到了能独立阅读、编制

14、和调试一定规模的汇编语言程序的水平。在此次设计当中让我认识到开发一项好的软件不是某一个人就能完成的任务。一个团队的小组,一个勤奋的小组非常重要,沟通是解决问题的最好办法。所以小组中的每个成员的能力与协作能力也是至关重要的。同时,不仅是团队内部的交流,更多需要协调好团队之间的交流。其次呢,在实习中我了解到,在开发一个项目时一定要先做好规划,按照软件的开发过程,详细地写好每一个必要的文档。由于开发者能力有限,加上时间仓促,本系统难免会出现一些不足之处,我们深表歉意,如发现还有其它问题,希望老师批评指正。5参考文献1 钱晓捷. 汇编语言程序设计(第四版). 电子工业出版社2 李敬兆. 8086/80

15、88和ARM核汇编语言程序设计.中国科学技术大学出版社,2006 3 平玲娣,潘雪增.计算机组成与设计浙江大学出版社,2004 4 白中英计算机组成原理(第二版) 北京:科学出版社,1998 5 张昆藏计算机系统结构北京:科学出版社,1994 6 李敬兆. 基于ARM核汇编语言程序设计中国科学技术大学出版社,2008合肥 7 王爽. 汇编语言 清华大学出版社, 2009北京 8 吴敏华. DOS基本原理与使用技巧 国防工业出版社,1996北京9 沈美明 温东蝉. IBM-PC汇编语言程序设计(第一版) 清华大学出版社,1998北京 10 Peter Abel IBM-PC汇编语言程序设计(第五

16、版) 人民邮电出版社,2002致 谢经过五天的艰苦努力,我终于完成了用坐标画三角形的全部设计过程,并使该系统达到可实际应用的阶段。软件设计是一个精细漫长的过程。在整个过程中,都需要周密的计划和安排,每一步骤,都需要按照软件工程标准来完成。在设计中,我始终坚持理论指导实践原则,并通过实践来加强理论的学习,通过实习锻炼,我熟悉了软件的一般过程,加强了对实际问题的处理能力。实践证明,在高科技突飞猛进的时代,光靠课堂所学的知识是远远不够的,必须依靠实践去不断的深化认识,尤其是计算机科学,操作性和实践性很强,只有加强实际的动手能力,才能更好的掌握这一现代化工具。 这次学习,无论是从技术上还是对环境的适应

17、能力上讲,对我今后步入社会都打下了一个良好的基础。在学习过程中,我也遇到了一些困难,主要表现了技术和经验的欠缺,但通过努力,终于一一克服了。在编写程序的过程中,我们得到了刘树群老师的精心指导以及孜孜不倦的教诲,在老师的指导下,我们的能力得到了提高,同时养成了科学、严谨的作风和习惯,在此,我们对老师的精心栽培表示衷心的感谢! 感谢我们小组同学对我的帮助和指点。在课设的整个过程中,我的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意。 附件:;MASMPlus 代码模板 - 纯 DOS 程序 .model small WRITE_PIXEL MACRO PAGE1,ROW,COLUMN,

18、COLOR MOV AH,0CH MOV AL,COLOR MOV BH,PAGE1 MOV DX,ROW MOV CX,COLUMN INT 10HENDM READ_PIXEL MACRO PAGE1,ROW,COLUMN MOV AH,0DH MOV BH,PAGE1 MOV DX,ROW MOV CX,COLUMN INT 10HENDM SETMODE MACRO MODE1 MOV AH,0 MOV AL,MODE1 INT 10HENDM .stack 200h.data ;* ;主函数菜单使用的提示字符串 ;* MESS1 DB 0DH,0AH,Welcom to my pro

19、gram,Im liuyongqin.NO.:109 $ MESS2 DB 0DH,0AH,Please input number to chose a program:$ MESS4 DB 0DH,0AH,Press 2 to draw a triangle$ MESS6 DB 0DH,0AH,Your choice: $ MESS7 DB 0DH,0AH,Press 0 to main meue,press q to quit: $ MESS8 DB 0DH,0AH,sorry! Input erroe. $ MESS9 DB 0DH,0AH,Press q to quit $ ;* ;各

20、个子函数公共使用的数据定义部分 ;* COLOR DW 02 BKCOLOR DW 0 ;黑色为0 BUFFER DB 6,?,6 DUP(?) ;输入函数暂存buffer C10 DW 10 ;* ;三角用的数据段定义和提示字符 ;* POINT DB 24,?,24 DUP(?) OL_T DB ? MESS1_T DB 0DH,0AH,Please input the frist point $ MESS2_T DB 0DH,0AH,Please input the second point $ MESS3_T DB 0DH,0AH,Please input the third poin

21、t $ MESS5_T DB 0DH,0AH,X:$ MESS6_T DB 0DH,0AH,Y:$ MESS7_T DB 0DH,0AH,Input error$.codeSTART: mov ax,data mov ds,ax LEA DX,MESS1 MOV AH,9 INT 21H;*;显示主菜单提示字符串;* DISPLAY: LEA DX,MESS2 MOV AH,9 INT 21H MOV AH,9 INT 21H LEA DX,MESS4 MOV AH,9 INT 21H MOV AH,9 INT 21H LEA DX,MESS9 MOV AH,9 INT 21H LEA DX,

22、MESS6 MOV AH,9 INT 21H;*;主菜单选择部分;* INPUT: MOV AH,1 INT 21H CMP AL,1 JB DISPLAY CMP AL,2 JE TRIA CMP AL,q JE OUTPUT JMP DISPLAY TRIA: ;三角子程序的入口部分 CALL TRIA_P JMP OUTPUTOUTPUT: ;退出程序段 MOV AH,9 INT 21H MOV AH,4CH INT 21H ;*;三角绘制子程序;*TRIA_P PROC NEAR PUSH CX CALL INPUT_T MOV AH,0FH INT 10H MOV OL_T,AL ;

23、保存原来屏幕格式,用来恢复的 MOV AX,0A000H ;显存 MOV ES,AX SETMODE 12H ;设置640*480*16图形模式 ? LEA SI,POINT NEXT: MOV AX,0012H INT 10H MOV AL,2 CALL SET_WRITE_MODE MOV AX,BKCOLOR CALL CLEAR ;将背景清成黑色 CALL OUTPUT_T ;调用输出子函数 MOV AH,0 INT 16H MOV AH,0 MOV AL,OL_T INT 10H MOV AH,9 INT 21H MOV AH,1 INT 21H CMP AL,0 JE DISPLA

24、Y CMP AL,q POP CX JE OUTPUT RETTRIA_P ENDP;*;画像素点子程序;*PIXEL PROC PUSH BP ;压栈保护 PUSH BX PUSH CX PUSH DS MOV BP,SP MOV AX,80 MOV BX,WORD PTRBP+12 ;BX=Y MUL BX ;(DX:AX)=80*Y MOV BX,AX MOV AX,WORD PTRBP+14 ;AX-X MOV CL,8 DIV CL ;AL=商(X/8),AH | | MOV CL,AH ;CL=AH | DS |-BP MOV AH,0 ; | CX |-BP+2 ADD BX,A

25、X ;BX(OFFSET)=80*Y+X/8 | BX |-BP+4 MOV AL,80H ; | BP |-BP+6 SHR AL,CL ;AL(MASK)CL) |返回地址|-BP+8 PUSH AX ; | COLOR |-BP+10 MOV DX,3CEH ; | Y |-BP+12 MOV AL,8 ; | X |-BP+14 OUT DX,AL ; | | MOV DX,3CFH ; PIXEL堆栈结构 POP AX OUT DX,AL MOV AL,ES:BX MOV AX,WORD PTRBP+10 ;AX=COLOR MOV BYTE PTR ES:BX,AL POP DS

26、POP CX POP BX POP BP RET 6 PIXEL ENDP ;*;清屏函数 ;*CLEAR PROC NEAR MOV BX,0 CLR1: MOV ES:BX,AL ;ES中放的是显存的地址 INC BX CMP BX,9600H ;80*480 JNB CLR2 JMP CLR1 CLR2: RET CLEAR ENDP ;*;设置写模式的函数 ;*SET_WRITE_MODE PROC NEAR PUSH AX MOV DX,3CEH MOV AL,5 OUT DX,AL MOV DX,3CFH POP AX OUT DX,AL MOV DX,3CEH MOV AL,8 OUT DX,AL MOV DX,3CFH MOV AL,0FFH OUT DX,AL RET SET_WRITE_MODE ENDP;*;输入子函数READ将数字转化为二进制存入AX中;*READ PROC NEAR PUSH CX LEA DX,BUFFER MOV AH,0AH INT 21H MOV AX,0 MO

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1