大学计算机专业——汇编语言.ppt_第1页
大学计算机专业——汇编语言.ppt_第2页
大学计算机专业——汇编语言.ppt_第3页
大学计算机专业——汇编语言.ppt_第4页
大学计算机专业——汇编语言.ppt_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章 什么是汇编语言,1.1 处理器指令 1.2 高级语言 1.3 汇编语言 1.4 小结,本章主要内容,处理器指令的特点 汇编语言的定义 如何将汇编语言融入程序设计模型 了解汇编语言与高级语言的区别与联系,1.1处理器指令,在操作的最低层,所有计算机处理器都按照制造厂商在处理器芯片内部定义的二进制代码操作数据。这些预置的代码被称为指令码(instruction code)。 不同类型的处理器包含不同类型的指令码,但是它们处理指令码程序的方式是类似的。,处理器工作模式,处理器芯片先将待处理的数据和决定如何处理这些数据的指令码存储在内存中,CPU按步骤从内存中一步步取出程序中的各条指令,并听从于这些指令从指定内存中取得数据进行处理, 再将处理的中间结果及最终结果存放于内存中。 CPU也按人们事先编制好的程序指挥输入设备和输出设备工作。这一处理模式(即程序和数据存于内存中、指令顺序执行)是由冯诺依曼最早提出的,所以现代的大大小小的计算机系统都属于冯诺依曼体系。,1.1.1指令码处理,当计算机处理器芯片运行时,它读取存储在内存中的指令码,以及指令码所需的数据。 指令指针(instruction pointer, IP)用于帮助处理器了解哪些指令码已经处理过了,以及接下来要处理的是哪条指令码。 数据指针(data pointer)用于帮助处理器了解内存中数据区域的起始位置是哪里。 每条指令都包含一个或者多个字节的处理器要处理的信息,且必须至少包含一个字节的操作码(operation code)。每个处理器系列都有其自己预定义好的操作码,它们定义所有可用的功能。,指令码举例,C7 45 FC 01 00 00 00 操作码C7,代表把值传送到内存位置的指令。 内存位置修饰符45 FC,定义从EBP寄存器中的值(45)指向内存开始的4字节(FC)。 最后4字节01 00 00 00表示数值1。,注意!数值的表示,小尾数表示法,基于Intel的处理器采用小尾数表示法,即最低有效位被先存储。所以00000001在内存中被存储为01000000。这种格式被硬化于CPU内,而且不能改变。通常情况下,程序员不用担心使用哪种格式;然而以下场合下关心它是重要的: 当在不同的计算机之间传送二进制数据时(不管是通过文件还是网络传输)。 在汇编语言程序设计中指定数据和内存位置时,1.1.2指令码格式,IA-32指令码格式由四个主要部分构成: a. 可选的指令前缀 b. 操作码(opcode) c. 可选的修饰符 d. 可选的数据元素,操作码,IA-32指令码格式中唯一必须的部分,它定义由处理器执行的基本功能或者任务,长度为13字节。,指令前缀,可以包含14个修改操作码行为的1字节前缀。按照功能的不同,这些前缀可分为四个组: a. 锁定前缀和重复前缀 b. 段覆盖前缀和分支提示前缀 c. 操作数长度覆盖前缀 d. 地址长度覆盖前缀,段覆盖前缀定义可以覆盖定义了的段寄存器值的指令。当要求一条指令不按缺省规则使用某个段寄存器时,必须以段覆盖前缀明确指明此段寄存器。分支提示前缀 尝试向处理器提供程序在条件跳转语句中最可能的路径的线索。,操作数长度覆盖前缀通知处理器,程序将在这个操作码之内切换16位和32位的操作数长度。地址长度覆盖前缀通知处理器,程序将切换16位和32位的内存地址。,锁定前缀表示指令将独占地使用共享内存区域,用于多CPU环境中对共享存储器的排他性访问。重复前缀表示重复的功能,常用于字符串,修饰符,用来定义执行功能中涉及到寄存器和内存位置,即寻址方式 包含在3个单独的值中: a. 寻址方式说明符(ModR/M)字节 b. 比例-索引-基址(SIB)字节 c. 1、2或者4个的地址移位字节(offset),数据元素,一些指令码从内存位置或者处理器寄存器读取数据,而一些指令码在其本身之内包含数据。,1.2高级语言,高级语言(high-level language,HLL)使程序员可以使用简单的术语创建功能,而不是原始的处理器指令码。 特殊的保留关键字用于定义变量、创建循环和处理程序的输入和输出。 必须通过某种机制把用高级语言编写的程序代码转换(编译/解释)为处理器能够处理的简单的指令码格式。,按照HLL程序在计算机上的运行方式,所有的HLL可以分为三类: a.编译语言(如C,C+) b.解释语言(如Basic) c.混和语言 即把编译程序的特性和解释程序的通用性和简易性结合在了一起(如Java)。,1.2.1 高级语言的种类,1.2.2 高级语言的特性,可移植性通过简单地在新的平台上进行重新编译,HLL就能够移植到其它操作系统和其它处理器平台上。 标准化HLL具有丰富的标准。每种编译器都被设计为把标准语言结构解释为目标处理器的指令码,以便跨处理器平台产生相同的功能。,1.3汇编语言,汇编语言允许程序员直接创建指令码程序 汇编语言程序使用助记符表示指令码 助记符使程序员可以使用英语样式的词表示各个指令码。汇编器可以很容易地把汇编语言助记符转换为原始指令码,汇编语言程序的构成,操作码助记符 数据段 命令,1.3.1操作码助记符,汇编器把助记符词汇和指令码功能(比如传送或者添加数据元素)等同对待,例: 汇编语言程序员不必了解指令码的每个字节表示什么,他们可以使用更加容易记忆的助记符来表示指令码。 不同的汇编器使用不同的助记符表示指令码,操作码助记符例,55 push %ebp B9 E5 mov %esp,%ebp 83 EC 08 sub $0x8,%esp C7 45 FC 01 00 00 00 movl $0x1,-4(%ebp) 83 EC 0C sub $0xc,%esp 6A 00 push $0x0 E8 D1 FE FF FF call 8048348,返回,1.3.2 定义数据,汇编语言允许程序员定义将存储在内存中的数据项目。 使用汇编语言进行程序设计的一个优势是它提供了更大的控制权,来决定在内存中的什么位置存储和如何存储数据。 汇编语言中存储和检索数据有两个方法 使用内存位置 使用堆栈,使用内存位置(定义变量),指向一个内存位置的标记 内存字节的数据类型和默认值 testvalue: .long 150 message: .ascii “this is a test message.” pi: .float 3.14159,使用堆栈,堆栈是在计算机为应用程序保留的内存范围的结尾位置保留的内存区域 经常保留用在程序中的函数之间传递数据元素,也可以使用它临时地存储和检索数据元素。,1.3.3 命令,不同的命令用于帮助使程序员创建指令码的工作更加容易。 命令前面有一个点号,这是命令和标记的不同之处。 .section .数据段 .bss(Block Started by Symbol) .文本段(或称代码段)。,比较高级语言与汇编语言的特性,高级语言 可移植性通过简单地在新的平台上进行重新编译,高级语言就能够移植到其它操作系统和其它处理器平台上。 标准化高级语言具有丰富的标准。每种编译器都被设计为把标准语言结构解释为目标处理器的指令码,以便跨处理器平台产生相同的功能。 汇编语言 与机器相关性汇编语言指令是机器指令的一种符号表示,而不同类型的CPU有不同的机器指令系统,也就有不同的汇编语言。 执行的高效率程序员用汇编语言编写程序时,可对机器内部的各种资源进行合理的安排,让它们始终处于最佳的使用状态。,1.4 小结,在汇编出最终的程序时,每种汇编器用来表示指令码、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论