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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

作业汇编课程设计.docx

1、作业汇编课程设计汇编语言程序设计前言 汇编语言程序设计汇编大多是指汇编语言,汇编程序。把汇编语言翻译成机器语言的过程称为汇编。在汇编语言中,用助符(Memon)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。用汇言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起 翻 译作用的程序叫汇编程序,汇编程序是系统软件中语言处理的系统软件。 汇编语言(Assembly Language)是面向机器的程序设计语言。汇编语言比机器语言易于读写、易于调 试和修改,同时也具有

2、器语言执行速度快,内存空间少等优点,但在编写复杂程序时具有明显的局限性,汇编语言依赖于具体的机型,不能通用,也不能在不同机型之间移植。是能完成一定任务的机器指令的集合。 常说汇编语言过时,是 低 级 语 言,并不 是 说 汇 编 语 言 要 被 弃 之,相 反,汇编语言仍然是程 序 员 必 须 了 解 的 语 言,在 某 些 行 业 与 领 域,汇 编 是 必 不 可 少 的,非 它 不 可 适 用 。只 是,现 在计算机最大的领域IT软 件 ,也 是 我 们 常 说 的 Windows编 程,在 熟 练 的 程 序 员 手 里,使 用汇编语言编写的程序,运行效率与性能比其它语言写的程序是成倍

3、的优秀,但是代价是需要更长的时间来优化,如果对计算机原理及编程基础不扎实,实在是得不偿失,对比现在的软件开发,已经是市场化的软件行业,加上高级语言的优秀与跨平台,一个公司不可以让一个团队使用汇编语言来编写所有的东西,花上几倍甚至几十倍的时间,不如使用其它语言来完成,只要最终结果不比汇编语言编写的差太多,就能抢先一步完成,这是市场经济下的必然结果。 但是,至今为止,还没有程序员敢断定汇编语言是不需要学的,一个不懂汇编语言的程序员,只是三流的程序员,这是大部分人的共识,同时,技术汇编语言(Assembly Language)是面向机器的程序设计语言精湛的汇编程序员,已经脱离软件开发,挤身于工业电子

4、编程中,一个电子工程师,主要开发语言就是汇编,c语言使用只占极少部分,而电子开发工程师是千金难求,在一些工业公司,一个核心的电子工程师比其它任何职员待遇都高,对比起来,一般电子工程师待遇是程序员的十倍以上。这种情况是因为现在学习汇编的人虽然也不少,但 是 真 正 能 学 到 精 通 的 却不 多,它 难 学,难 用,适 用 范 围 小 ,虽 然 简 单,但 是 过 于 灵 活 ,学习过高级语言的人去学习汇编比一开始学汇编的人难得多,但是学过汇编的人学习高级语言却很容易,简从繁易,繁从简难。 总之,汇编语言是程序员的必修语言。目录 CONTENTS 汇编语言处理数据 前言一、提出需求 . 6 1

5、.1 汇编语言简介 . 6 1.2 设计开发平台 . 6 1.3 需求分析 . 7二、详细设计 . 7 2.1 分析 . 2 2.1.1 数据输入模块 . 8 2.1.2比较排序模块 . 9 2.1.3数据输出模块. 10 2.2 调试中的问题及解决方法. 11 2.3执行过程 . 12总结 . 14附 录:程序代码 . 15参考资料:. 20 一提出需求1、提出设计要求 课题名称:用汇编语言处理数据 课题功能:随机从键盘输入经排序后,按照从升序的顺序 显示出来。(注:输入数据个数范围可视具体情况更改)2、需要用到的知识点 掌握80X86汇编指令及中断的使用方法; 掌握DOS系统功能调用; 掌

6、握基本的数据处理方法(输入、输出、排序)1.1 汇编语言简介汇编语言(Assembly Language)是面向机器的程序设计语言,采用助记符来编写程序,比用机器语言的二进制代码编程要方便些,在一定程度上简化了编程过程。使用汇编语言能面向机器并较好地发挥机器的特性,比机器语言易于读写、易于调试和修改,同时也具有机器语言执行速度快,占内存空间少等优点,因而可以得到质量较高的程序。1.2 设计开发平台汇编语言集成编译器(Visual Assembly 1.2版)是运行在DOS环境下,提供了编辑、编译、运行、调试汇编语言程序的集成环境。目前支持MASM、TASM、MCS51三种编译器。第一次使用时,

7、要在选项菜单中选择您所使用的编译器类型及其目录所在。masm为MASM类型的编译器,其中:masm.exe为编译器,link.exe为连接器; tasm为TASM类型的编译器,其中:tasm.exe为编译器,tlink.exe为连接器; mcs51为MCS51类型的编译器,用于MCS51单片机汇编语言的编译,其中:asm51.exe为编译器,OH.exe为目标文件转十六进制文件(连接器选项选择此文件)。本次设计使用的是MASM类型的编译器。1.3 需求分析 本程序是通过汇编语言实现数据的排序及输入、输出的处理,适用于多数据排序的处理,程序结构包含三部分:数据输入、数据排序、数据输出。设计思路是

8、先用一段程序实现成绩的录入,并暂存在数据表中,再将数据调出进行从大到小的比较,最后用DOS功能调用将完成排序的数据输出显示。二.详细设计2.1 分析程序结构分为三个功能模块:数据输入、数据排序、数据输出。数据输入模块:用DOS调用的1号功能实现输入并显示。因输入数据是以ASCII码形式存放,所以还要对输入数据进行处理,用AND指令将ASCII码转换为压缩BCD码。并将所有输入数据连续放入存储单元中,为后面的数据处理做准备。数据排序模块:将存储单元的数据按照从大到小的顺序排序。用冒泡法将数据表中的第一个数依次与后面的数两两相比,若小于则将两数的地址互换,直到无地址交换为止。其中需设置一标志来判断

9、比较是否结束,因N个数据排序理论上需进行(N-1)(N-1)次比较,但实际上不用比较这么多次,所以当标志位的值没有发生变化时,即完成排序。输出显示模块:用DOS调用的2号功能实现输出显示,因该功能是显示字符,所以这部分也涉及数据转换,即将压缩BCD码转换成ASCII码,并判断数据是否输出完整,再显示。完整流程图如图21所示。2.1.1 数据输入模块 用户在输入信息的提示下,从键盘随机输入后,按照从升序的顺序显示出来。因输入数据是ASCII码,所以还要实现数据转换,即将ASCII码转换为压缩BCD码。设一标志判断数据是否输入完成,一边输入一边将当前数据保存到指定存储区。数据输入流程图如图22所示

10、。 是 否 图2-2 数据输入部分2.1.2比较排序模块 设置数据交换标志为0,依次从存储单元中取数据,比较后判断是否需要进行位置交换,直到完成对所有数据的比较,则比较结束。数据排序流程图如图23所示。 是 否 小 大 是 否图2-3 数据排序 2.1.3数据输出模块 在存储单元中的数据是以压缩BCD码形式存放的,要将其显示出来,需要把它们转换为ASCII码,再调用DOS的2号功能,所以在进行显示前要完成数据转换;因输入数据个数不固定,是随机的,故还需判断数据是否已完全输出,再显示。数据输出流程图如图24所示。 N Y 2.2 调试中的问题及解决方法 如图2-5中文输入注释报错 1、在集成环境

11、下运行程序,编译器出现了图2-5的提示:系统提示未初始化寄存器,但检查程序无误。进入DOS环境编译,我们可以 图2-6中发现程序代码后的“;”根本不存在,这是因为我们在中文方式下输入了“;”,将“;”在英文环境下录入程序即可正常执行。 如图2-6中文输入注释报错 2、 在集成环境下运行程序,编译器出现了图2-6的提示:系统提示data: 块嵌套不匹配,一般是由于前后段名不相同、前后子程序不相同、需要配对出现的指令不一致等会出现该错误2.3执行过程1、打开汇编软件,输入该程序的源代码,进行编译,出现如图2-7.图2-72、运行该源代码,出现如图2-8.图2-83、在DOS状态下输入该程序生成的可

12、执行文件名出现图2-9的提示信息:图2-94、随机从键盘输入经排序后,按照从升序的顺序显示出现如图2-10.图2-10 总结经过大量的查找资料和老师的不断指点,我的课程设计成功完成,在这个过程中,我了解了汇编语言的功能,同时明白了其的工作原理并实现了其功能。 短短的四周毕业设计是我们对大学两年的计算机知识的整体总结,也是理论与实践的结合。在我们现有的理论知识下结合校园的实验设备成功地完成了这次毕业设计。期间让我收获颇多。在知识技能方面我对面向机器的汇编语言的编写的再次认识与学习,加深专业基础。俗话说:“高楼基地起”,可见汇编语言的重要性。这次课程设计对我来说,要想成功地完成任务不是一件容易的事

13、。我非常清楚我自己所学的8086汇编知识远远不足。在这次设计中困难重重,翻阅相关资料,复习以往教科书,网上搜找相关的信息和老师的细心讲解是必不可少的。在这次设计中,让我学到了新知识,也增长了见识,让我对我所学的知识有所巩固和提高,并且让我对汇编语言有了更深的了解。在今后的日子里,我仍要不断地充实自己,希望在我所学的专业有所作为。 这次的课程设计在我与同学的共同努力下成功完成的。这里少不了教授我们的老师,是他授我们以渔,在认真负责的周老师带领下,同学们的团结互助。我看到了团结的力量,团结的成效,让我学到了重要的一堂社会课。脚踏实地、认真严谨、实事求是是学习应该有的态度,不怕困难、坚持不懈、吃苦耐

14、劳是我国优良传统美德,这一次意志的磨练,是对我实际能力的一次提升,也会对我未来的学习和工作有很大的帮助。 在本次设计中,衷心的感谢我们的周老师,在我们设计过程中遇到的种种困难,全靠周老师的悉心指导和建议给了我们极大的帮助和支持,使我们受益匪浅,使得我们的动手能力和技能都有了很大的提高。所以,衷心的感谢周老师。附 录:程序代码 ;按ASCII编码由小到大排序从键盘上输入的字符串,然后输出;(输入以回车键结束);解:排序用冒泡法,按无符号数,从小到大;name string_sort;定义等价符unfinished equ 0FFFFh;标记排序任务没完成FINISHED equ 0 ;标记排序任

15、务完成了;-stack segment para stack STACK db 16 dup(MYSTACK ) ; 16*8 字节stack ends;-datas segment buffer db 51 ;可以输入50个有效字符 count db 0 chars db 52 dup (0) crlf db 0dh,0ah, huan ying shi yong,0dh,0ah,0dh,0ah,$ crlg db 0dh,0ah,0dh,0ah, sheng xu shu ru jie guo,0dh,0ah,0dh,0ah,$datas ends;-codes segment assum

16、e cs:codes,ds:datas,es:datas,ss:stackstart: mov ax,datas mov ds,ax lea dx,crlf mov ah,9 int 21h mov es,ax ;从键盘接收一个串(回车结束) mov dx,offset buffer ;指定字符串存放的首地址 mov ah,0ah ;buffered keyboard input func int 21h ;call DOS ;排序(冒泡法) mov bx,UNFINISHED ;bx用来标记大循环 xor cx,cx ;下面只使用cl,清高四位为0 mov cl,count ;取实际输入的字

17、符数 cmp cl,1 ;检查输入的字符数 jbe sort_finished ;如果输入的字符数少于2个,就不需要排序Next_Round: cmp bx,FINISHED ;排序任务完成了吗? je sort_finished ;完成了就跳出 mov bx,FINISHED ;先标记排序任务已完成 mov cl,count ;取实际输入的字符数 dec cl ;换算成比对的次数(比字符数要少1) xor si,si ;着si为输出串的下标,初值为0GetNext: mov al,charssi ;从charssi读一个数进al cmp al,charssi+1 ;al与下一个chars元素

18、对比 jbe less ;如果小于或等于就跳转(这里要使用无符号数判断) xchg charssi+1,al ;否则,就交换 mov charssi,al ;用al中的新值回填原地址 mov bx,UNFINISHED ;标记要从头进入下一轮扫描less: inc si ;调整数组下标变元 loop GetNext ;再取下一个字符 jmp Next_Round ;进入下一个轮回sort_finished: ;输出新行 mov ah,9 mov dx,offset crlg int 21h ;显示排过序的串 xor si,si ;着si为输出串的下标,初值为0showNext: mov dl,

19、charssi ;从输出串中提取一个字符 cmp dl,0 ;检查是不是结束符 je finish ;是就结束 mov ah,02 ;否则输出到屏幕 int 21h inc si ;指向下一个字符 jmp showNext ;进入显示下一个字符的轮回finish: ;退出 mov ax,4c00h int 21hcodes ends end start;剧终总结在本次课程设计让我充分了解了汇编语言在实际软件开发中的作用和地位。在这次课程设计过程中让我把课堂学到的知识得到了充分运用,但这并不能完整的编写出程序,想要把程序做好,必须要通过各种途径掌握更多更好的知识,并且最重要的是要将获得的知识运用

20、到实际编程中,要学以致用。本次课程设计是自由选题,我可以充分根据我的兴趣和长处选择题目。 当我在编程中遇到很多问题和麻烦时,我就在网上和图书馆还有班上同学中寻求帮助,没有不可克服的困难,我都在最后将他们解决了。本次课程设计提高了我对汇编的认识,加深了理解,弥补了不少学习理论知识时的不足,相信在以后的继续学习中,我会不断地提高我的编程能力。参考资料:【1】 龚荣武,陈坚,蔡英 微机原理与接口技术. 北京:北京大学出版社,2005【2】 荆淑霞,王晓,何丽君 微机原理与汇编语言程序设计 北京:中国水利水电出版社,2005【3】 倪继烈,刘新民 微机原理与接口技术.北京,四川:高等教育出版社,电子科

21、技大学出版社,2004【4】 张伟,张杰 单片机原理及应用.北京:机械工业出版社,2005【5】 钱晓捷,陈涛 型计算机原理及接口技术. 北京:械工业出版社,1999【6】 钱晓捷,陈涛 16/32位微机原理、汇编语言及接口技术. 北京:机械工业出版社2001【7】 钱晓捷 汇编语言程序设计. 北京:电子工业出版社,2000【8】 李文英,刘星,宋蕴新,李勤 微机原理与接口技术. 北京:电子工业出版社,2001【9】 雷丽文,朱晓华,蔡征宇,缪均达 微机原理与接口技术. 北京:电子工业出版社,1998【10】 邹广慧等 汇编语言程序设计.北京:机械工业出版社,2001【11】 沈美明,温冬婵.80X86汇编语言程序设计 北京:清华大学出版社,2001

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

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