大学计算机专业-汇编语言.ppt

上传人:tia****nde 文档编号:8798131 上传时间:2020-04-01 格式:PPT 页数:26 大小:313.31KB
返回 下载 相关 举报
大学计算机专业-汇编语言.ppt_第1页
第1页 / 共26页
大学计算机专业-汇编语言.ppt_第2页
第2页 / 共26页
大学计算机专业-汇编语言.ppt_第3页
第3页 / 共26页
点击查看更多>>
资源描述
第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小结 在汇编出最终的程序时 每种汇编器用来表示指令码 数据和专门命令的格式都稍有不同 使用汇编语言进行程序设计的第一个步骤是决定你需要使用哪种汇编器 并且了解它使用什么格式 使用汇编语言的目的是使编码工作尽可能地靠近原始处理器指令码 汇编语言程序设计使程序员可以使用指令码进行编程 但是使用简单的助记符引用这些指令码 汇编语言汇编器没有被标准化 并且汇编语言有很多不同的格式
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!