第二章 汇编语言

本文详细介绍了CPU的基本组成,包括时钟、算术逻辑单元、控制单元和存储单元,以及寄存器的种类和作用。此外,还探讨了x86指令集,包括数据传送、算数运算、逻辑运算、控制转移指令等,以及寻址方式在汇编语言中的应用。
摘要由CSDN通过智能技术生成

第二章 汇编语言

1 CPU简介

中央处理器(Central Processing Unit),结构密集、科技密集、经济密集

CPU的基本组成部件
时钟
  • 时钟是整个计算机运转的节拍器,机器指令的最小执行时间就是一个时钟周期
    • 模拟信号向数字信号的转换过程,就是在始终指导下的一个采样过程(Sampling),时钟的偏移将使数字信号失准
  • CPU的主频即为时钟频率,对CPU的整体性能具有直接影响。
    • CPU的位数也是影响CPU性能的主要因素之一
算术逻辑单元
  • ALU,执行各种算术运算和逻辑运算
  • 随着各类运算任务的增加,出现了专用计算单元如浮点计算单元
控制单元
  • CU是控制单元,是CPU的指挥中心,协调、控制各个指令执行的顺序,主要由下列部件构成
    • 指令寄存器(Instruction Register)
    • 指令译码器(Instruction Decoder)
    • 指令控制器(Operation Controller)
    • 指令指针寄存器(Extended Instruction Pointer)
存储单元
  • 存储单元是CPU种暂时存放数据的地方,包括等待处理数据或数据处理结果等
    • 片上缓存或片内缓存,即On-Chip Cache,访问速度和存储容量均介于内存和存储器之间的告诉存储器件
    • 寄存器组,即Registers,最接近ALU的存储器件,访问速度最快,由于芯片面积和集成度限制,存储容量最小
      • 由于寄存器在芯片中的特殊地位,几乎所有汇编指令的执行均需要寄存器的协助,可以说寄存器是汇编语言的一部分

SEQ处理器结构
  • 取指令(Fetch)
  • 指令解码(Decode)
  • 指令执行(Execute)
  • 内存访问(Memory)
  • 结果回写(Write back)
  • 指令指针寄存器更新(PC update)

现代处理器为了提高执行效率,通常采用流水线结构执行指令(Pipelined implementation)


总线
  • 总线在物理上是若干根用于连接其他芯片的导线
  • 在逻辑上分为地址总线、数据总线、控制总线
    • 地址总线:
      • CPU要将内存中的指令和数据取出,就必须访问内存中的地址,当CPU访问内存中的某个地址时,地址线上就会保持着那个地址值
      • 地址总线能表示多少个不同的数值,这个CPU就能访问多少内存地址
        • 宽度为N的地址总线,它能够寻址的空间为0~2^N-1
    • 数据总线
      • 在CUP和内存中传输指令和数据
    • 控制总线
      • 控制总线是不同控制线的集合,是一个总称
      • 有多少条控制总线,就意味着CPU能够对外界提供多少种控制
      • 控制总线的宽度决定了CPU控制外界设备的能力

原理图

在这里插入图片描述


2 寄存器

什么是寄存器
  • 寄存器(Register)是中央处理器(CPU)内部的组成部分
  • 寄存器是有限存储容量的高速存储部件,它们可用来暂存指令、数据和地址
  • 寄存器是计算机系统结构下存储结构下存储层次的最顶端,也是系统中操作数据的最快速路径

段的概念

物理地址=基础地址(段地址x16)+偏移地址

编程时,将若干地址连续的内存单元看作一个段,一个段的起始地址一定是16的倍数

偏移地址位16位,16位地址的寻址能力是64KB,所以一个段的长度最大为64KB

寄存器分类

IA-32架构提供了16个基本程序执行寄存器,用户系统和应用程序编程

16个寄存器被分为四类

通用寄存器(General-purpose registers)

32位CPU通用寄存器共有8个,可以用于传送和暂存以下数据

  • 逻辑和算术运算的操作数
  • 用于地址计算的操作数
  • 内存指针

通用寄存器分类

  • EAX:累加寄存器,是操作数和结果数据的累加器
  • EBX:基址寄存器,指向DS段(数据段)中数据的指针
  • ECX:计数寄存器,是字符串和循环操作的计数器
  • EDX:数据寄存器,IO指针

以上4个寄存器主要用于算术运算(ADD/SUB/XOR/OR等)指令中,常用来保存常量与变量的值

  • ESI:字符串操作源指针,源变址寄存器
  • EDI:字符串操作目的指针,目的变址寄存器

ESI和EDI与特定的串操作指令(MOVS/LODS/STOS)一起使用,在字符串操作的时候用的比较多

存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式,为通过多种方式访问存储单元提供便利

  • ESP:栈顶指针寄存器,用于存放当前堆栈的栈顶地址,专门用作堆栈指针,不可做为一般通用寄存器使用
  • EBP:栈底指针寄存器(基址指针寄存器),表示栈区域的基地址,永远指向当前函数栈底位置,不可作为一般通用存储器使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值