已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西 南 林 业 大 学 汇编语言程序设计期末论文汇编语言程序设计期末论文 题题 目 目 汇编语言程序设计课程论文 学学 院 院 理学院 专专 业 业 信息与计算科学 11 级 姓姓 名 名 xxx 学学 号 号 xxxx 教师姓名 教师姓名 xxxx 二 一三 年 十二 月 0 汇编语言程序设计课程论文 摘摘 要 要 汇编语言是一种功能很强的程序设计语言 也是利用计算机所有 硬件特性并能直接控制硬件的语言 汇编语言 作为一门语言 对应于 高级语言的编译器 需要一个汇编器来把汇编语言原文件汇编成机器可 执行的代码 高级的汇编器如 MASM TASM 等等为我们写汇编程序提供 了很多类似于高级语言的特征 比如结构化 抽象等 在这样的环境中 编写的汇编程序 有很大一部分是面向汇编器的伪指令 已经类同于高 级语言 现在的汇编环境已经如此高级 即使全部用汇编语言来编写 windows 的应用程序也是可行的 但这不是汇编语言的长处 汇编语言 的长处在于编写高效且需要对机器硬件精确控制的程序 与我们学过的 C 语言相比 C 语言是一种结构化的高级语言 执行 效率远没有汇编语言高 很多情况下 使用 C 语言编写会出现 ROM 空间 不足 堆栈溢出等问题 而对于汇编语言 一条指令就对应一个机器码 每一步怎么执行都很清楚明了 并且程序大小和堆栈调用情况都容易控 制 调试起来也比较方便 关键词 关键词 编汇 应用 程序 存储器 低级 CPU 汇编语言比机器语言易于读写 易于调试和修改 同时也具有机器语言执行 1 速度快 占内存空间少等优点 但在编写复杂程序时具有明显的局限性 汇编语言 依赖于具体的机型 不能通用 也不能在不同机型之间移植 是能完成一定任务的 机器指令的集合 常说汇编语言过时 是低级语言 并不是说汇编语言要被弃之 相反 汇编语言仍然是程序员必须了解的语言 在某些行业与领域 汇编是必不可 少的 非它不可适用 只是 现在计算机最大的领域为 IT 软件 也是我们常说的 Windows 编程 在熟练的程序员手里 使用汇编语言编写的程序 运行效率与性能 比其它语言写的程序是成倍的优秀 但是代价是需要更长的时间来优化 如果对计 算机原理及编程基础不扎实 实在是得不偿失 对比现在的软件开发 已经是市场 化的软件行业 加上高级语言的优秀与跨平台 一个公司不可以让一个团队使用汇 编语言来编写所有的东西 花上几倍甚至几十倍的时间 不如使用其它语言来完成 只要最终结果不比汇编语言编写的差太多 就能抢先一步完成 这是市场经济下的 必然结果 但是 至今为止 还没有程序员敢断定汇编语言是不需要学的 一个不懂汇编 语言的程序员 只是三流的程序员 这是大部分人的共识 同时 技术汇编语言 Assembly Language 是面向机器的程序设计语言精湛的汇编程序员 已经脱离软件 开发 挤身于工业电子编程中 一个电子工程师 主要开发语言就是汇编 c 语言 使用只占极少部分 而电子开发工程师是千金难求 在一些工业公司 一个核心的 电子工程师比其它任何职员待遇都高 对比起来 一般电子工程师待遇是程序员的 十倍以上 这种情况是因为现在学习汇编的人虽然也不少 但是真正能学到精通的 却不多 它难学 难用 适用范围小 虽然简单 但是过于灵活 学习过高级语言 的人去学习汇编比一开始学汇编的人难得多 但是学过汇编的人学习高级语言却很 容易 简从繁易 繁从简难 总之 汇编语言是程序员的必修语言 目前国内最好的汇编网站是 AoGo 汇编小站 其站长 aogo 就是一个在工 业方面有所成就的工程师 有意者可多参考 其次就是罗云彬的汇编站点 这个大 概是国内建站时间最长的汇编站点 其编写的 Windows 下汇编语言程序设计 一 书 是站长十几年的经验的集合 不妨看看 熟悉指令 可以尝试破解 加强兴趣 参考看雪学院 国内最好的破解组织 其中看雪与众高手打造的破解书 加密 解密 完全方案 非常有名 汇编语言是一种低级的程序语言可直接控制硬件 汇编语言 是计算机最底层的语言 现在一般都用在硬件层 对硬件直接控制 其他的都用高 2 级的语言编写了 因为汇编写程序容易出错 而且太过于复杂和长啦 虽然引入了 其他的有类似高级语言的一些伪指令但是相比高级语言可以解决的问题都不用汇编 啦 好像现在的计算机已经增加了对 C 还是什么语言 反正就是高级语言 的支 持啦 就是开集的引导程序已经不用汇编啦 好像只有为苹果 apple 系统制作的机 子有 微软不知道为什么还没 不过不是技术问题 据说有其他目的 作为最基本的编程语言之一 汇编语言虽然应用的范围不算很广 但重要性 却勿庸置疑 因为它能够完成许多其它语言所无法完成的功能 就拿 Linux 内核来 讲 虽然绝大部分代码是用 C 语言编写的 但仍然不可避免地在某些关键地方使 用了汇编代码 其中主要是在 Linux 的启动部分 由于这部分代码与硬件的关系非 常密切 即使是 C 语言也会有些力不从心 而汇编语言则能够很好扬长避短 最 大限度地发挥硬件的性能 按 CPU 不同的话基本每一种 CPU 都对应一种汇编 比如 Intel 出的 CPU 可以算 一个系列的 这些 CPU 在推出新版 CPU 的时候会基本保持向下兼容 就是原来低级 CPU 的指令在高级的 CPU 上也是一样的 所以说可以算作一类 另外还有单片机的汇 编 单片机的指令和 PC 上 CPU 的指令是有出入的 所以另作一类按操作系统不同的 话可以分为 windows 下汇编 DOS 汇编等 虽然可能在相同的 CPU 上运行不同的操作 系统 比如 windows 下的 dos 窗口 但不同的操作系统的程序设计是不一样的 比如在 DOS 下你不可能去调用 windows 的 API 在 windows 下也不可能去调用 DOS 的 int 21H 中断 另外某些单片机也有操作系统 大多数情况下 Linux 程序员不需要使用 汇编语言 因为即便是硬件驱动这样的底层程序在 Linux 操作系统中也可以用完全 用 C 语言来实现 再加上 GCC 这一优秀的编译器目前已经能够对最终生成的代 码进行很好的优化 的确有足够的理由让我们可以暂时将汇编语言抛在一边了 但 实现情况是 Linux 程序员有时还是需要使用汇编 或者不得不使用汇编 理由很简 单 精简 高效和 libc 无关性 假设要移植 Linux 到某一特定的嵌入式硬件环境 下 首先必然面临如何减少系统大小 提高执行效率等问题 此时或许只有汇编语 言能帮上忙了 汇编语言直接同计算机的底层软件甚至硬件进行交互 它具有如下一些优点 1 能够直接访问与硬件相关的存储器或 I O 端口 3 2 能够不受编译器的限制 对生成的二进制代码进行完全的控制 3 能够对关键代码进行更准确的控制 避免因线程共同访问或者硬件设备共享引起 的死锁 4 能够根据特定的应用对代码做最佳的优化 提高运行速度 5 能够最大限度地发挥硬件的功能 同时还应该认识到 汇编语言是一种层次非常低的语言 它仅仅高于直接手工编写 二进制的机器指令码 因此不可避免地存在一些缺点 1 编写的代码非常难懂 不好维护 2 很容易产生 bug 难于调试 3 只能针对特定的体系结构和处理器进行优化 4 开发效率很低 时间长且单调 汇编当然可以写网络程序啦 高级语言可以做的汇编可以做 高级语言不可以 做的汇编也可以做 IP 探测的软件一般都不用汇编 毕竟高级语言可以解决 但是 汇编写出来的没有高级语言自身的一些限制 如安全性 可能对权限有限制 汇编 可以应用于单片机 因为他们简单种类繁多 没有操作系统 开发代价大 而且不 划算 故用汇编 不过其他的涉及电子的基本上都可以用汇编一方面 汇编语言指 令是用一些具有相应含义的助忆符来表达的 所以 它要比机器语言容易掌握和运 用 但另一方面 它要直接使用 CPU 的资源 相对高级程序设计语言来说 它又显 得难掌握 汇编语言程序归纳起来大概有以下几个主要特性 1 与机器相关性 汇编语言指令是机器指令的一种符号表示 而不同类型的 CPU 有不同的机器 指令系统 也就有不同的汇编语言 所以 汇编语言程序与机器有着密切的关系 由于汇编语言程序与机器的相关性 所以 除了同系列 不同型号 CPU 之间的汇编 语言程序有一定程度的可移植性之外 其它不同类型 如 小型机和微机等 CPU 之 间的汇编语言程序是无法移植的 也就是说 汇编语言程序的通用性和可移植性要 比高级语言程序低 4 2 执行的高效率 正因为汇编语言有 与机器相关性 的特性 程序员用汇编语言编写程序时 可充分发挥自己的聪明才智 对机器内部的各种资源进行合理的安排 让它们始终 处于最佳的使用状态 这样做的最终效果就是 程序的执行代码短 执行速度快 现在 高级语言的编译程序在进行寄存器分配和目标代码生成时 也都有一定程度 的优化 在后续课程 编译原理 的有关章节会有详细介绍 但由于所使用的 优 化策略 要适应各种不同的情况 所以 这些优化策略只能在宏观上 不可能在微 观上 细节上进行优化 而用汇编语言编写程序几乎是程序员直接在写执行代码 程序员可以在程序的每个具体细节上进行优化 这也是汇编语言程序执行高效率的 原因之一 3 编写程序的复杂性 汇编语言是一种面向机器的语言 其汇编指令与机器指令基本上一一对应 所 以 汇编指令也同机器指令一样具有功能单一 具体的特点 要想完成某件工作 如 计算 A B C 等 就必须安排 CPU 的每步工作 如 先计算 A B 再把 C 加到前 者的结果上 另外 在编写汇编语言程序时 还要考虑机器资源的限制 汇编指令 的细节和限制等等 由于汇编语言程序要安排运算的每一个细节 这就使得编写汇 编语言程序比较繁琐 复杂 一个简单的计算公式或计算方法 也要用一系列汇编 指令一步一步来实现 4 调试的复杂性 在通常情况下 调试汇编语言程序要比调试高级语言程序困难 其主要原因有 四点 汇编语言指令涉及到机器资源的细节 在调试过程中 要清楚每个资源的变 化情况 程序员在编写汇编语言程序时 为了提高资源的利用率 可以使用各种实 现技巧 而这些技巧完全有可能破坏程序的可读性 这样 在调试过程中 除了要 知道每条指令的执行功能 还要清楚它在整个解题过程中的作用 高级语言程序几 乎不显式地使用 转移语句 但汇编语言程序要用到大量的 各类转移指令 这些 跳转指令大大地增加了调试程序的难度 如果在汇编语言程序中也强调不使用 转 移指令 那么 汇编语言程序就会变成功能单调的顺序程序 这显然是不现实的 调试工具落后 高级语言程序可以在源程序级进行符号跟踪 而汇编语言程序只能 5 跟踪机器指令 不过 现在这方面也有所改善 CV CodeView TD Turbo Debug 等软件也可在源程序级进行符号跟踪了 综上所说 汇编语言的特点明显 其诱人的优点直接导致其严重的缺点 其 与机器相关 和 执行的高效率 导致其可移植性差和调试难 所以 我们在选 用汇编语言时要根据实际的应用环境 尽可能避免其缺点对整个应用系统的影响 下面简单列举几个领域以示说明 但不要把它们绝对化 1 适用的领域 1 要求执行效率高 反应快的领域 如 操作系统内核 工业控制 实时系统 等 2 系统性能的瓶颈 或频繁被使用子程序或程序段 3 与硬件资源密切相关的软件开发 如 设备驱动程序等 4 受存储容量限制的应用领域 如 家用电器的计算机控制功能等 5 没有适当的高级语言开发环境 2 不宜使用的领域 1 大型软件的整体开发 2 没有特殊要求的一般应用系统的开发等 总结 总结 当前流行的汇编语言的开发工具是 Masm 6 0 这套开发工具对于熟练的汇 编语言开发人员来说是比较好用的 是一个集编辑 编译 masm 连接 link 调 试 debug 于一体的开发工具 但它并没有提供可视化分开发工具 一切代码均要程 序员自己编写 不利于像我们这样的初学者学习汇编语言 并且是一个 DOS 下的开 发工具
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年选调生招录笔试定向选调时政热点解读高频错题及解析
- 克拉玛依2025年克拉玛依市纪委监委市司法局所属事业单位招聘8人笔试历年典型考点题库附带答案详解
- 2026年体育彩票游戏规则与玩法知识试题含答案
- 云南2025年云南省医疗保障局招聘3人笔试历年难易错考点试卷带答案解析
- 丽水2025年浙江丽水青田县卫健系统招聘编外聘用人员11人(二)笔试历年典型考点题库附带答案详解
- 中央2025年水利部有关直属单位招聘应届生笔试历年常考点试题专练附带答案详解
- 上海市2025上海市特种设备监督检验技术研究院招聘9人笔试历年参考题库典型考点附带答案详解(3卷合一)
- 医院抗菌药物使用管理制度
- 办公室值班交接班制度
- 2026年科技局面试核心题及解析科技行业招聘面试实战
- 宠物行为问题诊断与解决
- 肺结核诊疗指南(2025版)
- 康复医疗服务的质量与运营效率平衡方案
- 2.4《不同的天气》课件 2025-2026学年科学二年级上册教科版
- 第一学期政治组教研工作总结
- 1春《寒假新启航五年级》参考答案
- 猪肉配送投标方案(完整技术标)
- GM公司过程控制计划审核表
- GB/T 6185.2-20162型全金属六角锁紧螺母细牙
- GB/T 26218.1-2010污秽条件下使用的高压绝缘子的选择和尺寸确定第1部分:定义、信息和一般原则
- GB/T 18934-2003中国古典建筑色彩
评论
0/150
提交评论