




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章什么是汇编语言 1 1处理器指令1 2高级语言1 3汇编语言1 4小结 本章主要内容 处理器指令的特点汇编语言的定义如何将汇编语言融入程序设计模型了解汇编语言与高级语言的区别与联系 1 1处理器指令 在操作的最低层 所有计算机处理器都按照制造厂商在处理器芯片内部定义的二进制代码操作数据 这些预置的代码被称为指令码 instructioncode 不同类型的处理器包含不同类型的指令码 但是它们处理指令码程序的方式是类似的 处理器工作模式 处理器芯片先将待处理的数据和决定如何处理这些数据的指令码存储在内存中 CPU按步骤从内存中一步步取出程序中的各条指令 并听从于这些指令从指定内存中取得数据进行处理 再将处理的中间结果及最终结果存放于内存中 CPU也按人们事先编制好的程序指挥输入设备和输出设备工作 这一处理模式 即程序和数据存于内存中 指令顺序执行 是由冯 诺依曼最早提出的 所以现代的大大小小的计算机系统都属于冯 诺依曼体系 1 1 1指令码处理 当计算机处理器芯片运行时 它读取存储在内存中的指令码 以及指令码所需的数据 指令指针 instructionpointer IP 用于帮助处理器了解哪些指令码已经处理过了 以及接下来要处理的是哪条指令码 数据指针 datapointer 用于帮助处理器了解内存中数据区域的起始位置是哪里 每条指令都包含一个或者多个字节的处理器要处理的信息 且必须至少包含一个字节的操作码 operationcode 每个处理器系列都有其自己预定义好的操作码 它们定义所有可用的功能 指令码举例 C745FC01000000操作码C7 代表把值传送到内存位置的指令 内存位置修饰符45FC 定义从EBP寄存器中的值 45 指向内存开始的4字节 FC 最后4字节01000000表示数值1 注意 数值的表示 小尾数表示法 基于Intel的处理器采用小尾数表示法 即最低有效位被先存储 所以00000001在内存中被存储为01000000 这种格式被硬化于CPU内 而且不能改变 通常情况下 程序员不用担心使用哪种格式 然而以下场合下关心它是重要的 当在不同的计算机之间传送二进制数据时 不管是通过文件还是网络传输 在汇编语言程序设计中指定数据和内存位置时 1 1 2指令码格式 IA 32指令码格式由四个主要部分构成 a 可选的指令前缀b 操作码 opcode c 可选的修饰符d 可选的数据元素 操作码 IA 32指令码格式中唯一必须的部分 它定义由处理器执行的基本功能或者任务 长度为1 3字节 指令前缀 可以包含1 4个修改操作码行为的1字节前缀 按照功能的不同 这些前缀可分为四个组 a 锁定前缀和重复前缀b 段覆盖前缀和分支提示前缀c 操作数长度覆盖前缀d 地址长度覆盖前缀 段覆盖前缀定义可以覆盖定义了的段寄存器值的指令 当要求一条指令不按缺省规则使用某个段寄存器时 必须以段覆盖前缀明确指明此段寄存器 分支提示前缀尝试向处理器提供程序在条件跳转语句中最可能的路径的线索 操作数长度覆盖前缀通知处理器 程序将在这个操作码之内切换16位和32位的操作数长度 地址长度覆盖前缀通知处理器 程序将切换16位和32位的内存地址 锁定前缀表示指令将独占地使用共享内存区域 用于多CPU环境中对共享存储器的排他性访问 重复前缀表示重复的功能 常用于字符串 修饰符 用来定义执行功能中涉及到寄存器和内存位置 即寻址方式包含在3个单独的值中 a 寻址方式说明符 ModR M 字节b 比例 索引 基址 SIB 字节c 1 2或者4个的地址移位字节 offset 数据元素 一些指令码从内存位置或者处理器寄存器读取数据 而一些指令码在其本身之内包含数据 1 2高级语言 高级语言 high levellanguage HLL 使程序员可以使用简单的术语创建功能 而不是原始的处理器指令码 特殊的保留关键字用于定义变量 创建循环和处理程序的输入和输出 必须通过某种机制把用高级语言编写的程序代码转换 编译 解释 为处理器能够处理的简单的指令码格式 按照HLL程序在计算机上的运行方式 所有的HLL可以分为三类 a 编译语言 如C C b 解释语言 如Basic c 混和语言即把编译程序的特性和解释程序的通用性和简易性结合在了一起 如Java 1 2 1高级语言的种类 1 2 2高级语言的特性 可移植性 通过简单地在新的平台上进行重新编译 HLL就能够移植到其它操作系统和其它处理器平台上 标准化 HLL具有丰富的标准 每种编译器都被设计为把标准语言结构解释为目标处理器的指令码 以便跨处理器平台产生相同的功能 1 3汇编语言 汇编语言允许程序员直接创建指令码程序汇编语言程序使用助记符表示指令码助记符使程序员可以使用英语样式的词表示各个指令码 汇编器可以很容易地把汇编语言助记符转换为原始指令码 汇编语言程序的构成 操作码助记符数据段命令 1 3 1操作码助记符 汇编器把助记符词汇和指令码功能 比如传送或者添加数据元素 等同对待 例 汇编语言程序员不必了解指令码的每个字节表示什么 他们可以使用更加容易记忆的助记符来表示指令码 不同的汇编器使用不同的助记符表示指令码 操作码助记符例 55push ebpB9E5mov esp ebp83EC08sub 0 x8 espC745FC01000000movl 0 x1 4 ebp 83EC0Csub 0 xc esp6A00push 0 x0E8D1FEFFFFcall8048348 返回 1 3 2定义数据 汇编语言允许程序员定义将存储在内存中的数据项目 使用汇编语言进行程序设计的一个优势是它提供了更大的控制权 来决定在内存中的什么位置存储和如何存储数据 汇编语言中存储和检索数据有两个方法使用内存位置使用堆栈 使用内存位置 定义变量 指向一个内存位置的标记内存字节的数据类型和默认值testvalue long150message ascii thisisatestmessage pi float3 14159 使用堆栈 堆栈是在计算机为应用程序保留的内存范围的结尾位置保留的内存区域经常保留用在程序中的函数之间传递数据元素 也可以使用它临时地存储和检索数据元素 1 3 3命令 不同的命令用于帮助使程序员创建指令码的工作更加容易 命令前面有一个点号 这是命令和标记的不同之处 section 数据段 bss BlockStartedbySymbol 文本段 或称代码段 比较高级语言与汇编语言的特性 高级语言可移植性 通过简单地在新的平台上进行重新编译 高级语言就能够移植到其它操作系统和其它处理器平台上 标准化 高级语言具有丰富的标准 每种编译器都被设计为把标准语言结构解释为目标处理器的指令码 以便跨处理器平台产生相同的功能 汇编语言与机器相关性 汇编语言指令是机器指令的一种符号表示 而不同类型的CPU有不同的机器指令系统 也就有不同的汇编语言 执行的高效率 程序员用汇编语言编写程序时 可对机器内部的各种资源进行合理的安排 让它们始终处于最佳的使用状态 1 4小结 在汇编出最终的程序时 每种汇编器用来表示指令码 数据和专
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届上海市宝山中学化学高二第一学期期中学业质量监测试题含解析
- 2026届辽宁省清原中学化学高一上期末达标检测模拟试题含解析
- 模具制造数字化设计仿真技术在高速模具中的应用分析报告
- 生鲜新零售行业供应链优化与冷链物流企业创新驱动发展报告
- 车间火灾安全知识培训课件
- 2025年官方兽医牧运通考试题库附答案详解(培优a卷)
- 2025年有害生物防制员职业技能等级认定试题及答案
- 2025年第三季度医疗废物管理及中医医疗技术考核试题及答案
- Unit 3 Paying the price 主题词汇专项练习(含答案)高中英语沪教版选择性必修第一册
- 【核心素养】双减作业本跨学科主题学习2建设海洋牧场筑牢“蓝色粮仓”粤教版八年级上册(含答案)
- 主持人妆 男主持人上镜妆
- 安全伴我行-大学生安全教育智慧树知到答案章节测试2023年哈尔滨工程大学
- 100以内加减法口算题500道
- GB/T 2423.18-2021环境试验第2部分:试验方法试验Kb:盐雾,交变(氯化钠溶液)
- 安全文明施工措施费清单五篇
- 浙教版九上科学前三章难题易错题精选题(含答案)
- 医院总务设备科管理制度
- 消杀灭指导价格表
- 高中化学学法指导课件
- 仪表安装规范以及验收
- 农业环境讲义4
评论
0/150
提交评论