Java教程

汇编语言学习笔记(2)——80x86微处理器

本文主要是介绍汇编语言学习笔记(2)——80x86微处理器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!


1、常见术语

  • 位和字节
    • 位(bit)是计算机所能表示的最小最基本的数据单位,它指的是取值只能为0或1的一个二进制数值位。
    • 字节(byte)由8个位二进制位组成,通常用作计算存储容量的单位。
    • 1T = 210G = 220M = 230K = 240
  • 字长(数据宽度):字长是微处理器一次可以直接处理的二进制数码的位数,它通常取 决于微处理器内部通用寄存器的位数和数据总线的宽度。微处理 器的字长有4位、8位、16位、32位和64位等等。
  • 寻址能力:指CPU能直接存取数据的内存地址范围,它是由CPU的地址总线的数目决定的。
  • 主频:也叫时钟频率,用来表示微处理器的运行速度,主频越高表明微处理器运行速度越快,主频单位是MHz
  • MIPS(Millions of Instruction Per Second,每秒能执行百万条指令):用来表示微处理器的性能
  • 微处理器的集成度:指微处理器芯片上集成的晶体管密度


2、32位微处理器内部结构

  • 微处理器的功能和主要功能模块:
    • 微处理器的功能:从存储器中取出构成程序的 一条指令,分析并执行这些指令,从而完成程序 设定的任务
    • 基本功能模块:
      • 总线接口单元 BIU:寄存器组
      • 执行单元EU :运算器,控制器,寄存器组
  • 80X86内部寄存器:基本结构寄存器、浮点寄存器、系统级寄存器、调试测试寄存器
  • 基本结构寄存器:
    • 通用寄存器:

 

      • 作用:用于存放操作数以及运算的中间结果等信息,在指令中广泛使用。
      • 汇编助记符:
        • 32位寄存器的汇编助记符为EAX~EDX、ESI、EDI、EBP
        • 16位寄存器的汇编助记符为AX~DX、SI、DI、BP
        • 8位寄存器的汇编助记符为AH、AL、BH、BL、CH、CL、DH、DL
      • AH、AL是AX的高/低8位,AX又是EAX的低16位。
      • 例:EAX = 12345678H,则AX = 5678H,AH = 56H, AL = 78H
    • 段寄存器:

 

      • 作用:存放逻辑段的段地址,用于存储器单元物理地址的形成。
    • 指针寄存器:

      • 指令指针寄存器:32位称为EIP、第六位称为IP
      • 作用:存放指令所在单元的偏移地址
    • 标志寄存器(EFLAGS):

 

      • EFLAGS为32位寄存器,其中FLAGS为16位寄存器(D15~D0)
      • 作用:
        • 存放状态标志。状态标志用于记录CPU运行结果状态
        • 设置控制标志。控制标志用于控制CPU的某种操作
      • 状态标志:表示前面的操作执行后,算术 逻辑部件处在怎样一种状态,这种状态会 像某种先决条件一样影响后面的操作。有 SF、ZF、PF、CF、AF和OF
      • 控制标志:每个控制标志都对某一种特定 的功能起控制作用。指令系统中有专门的 指令用于控制标志的设置和清除。有DF、 IF、 TF


3、32位微处理器外部引脚

  • 数据线及控制信号
    • 数据线:D63~D0共64位
  • 地址线及控制信号
    • A31~A3:高30位地址线
    • BE7~BE0:字节允许信号(存储体选中信号),外围电路对BE7~BE0译码以产生A2~A0信号
  • 系统控制信号
    • 时钟输入CLK
    • 可屏蔽中断请求INTR
    • 非屏蔽中断请求NMI
    • 系统复位信号RESET
    • 系统复位后,程序运行的地址为:FFFFFFF0H
    • 实模式CS:F000H,IP:0FFF0H
    • 系统时钟:微处理器内部与外部操作的同步时基信号,由时钟(CLK)输入信号提供。

    • 时钟信号:时钟输入信号的周期,也表示为T状态。
  • 总线周期定义信号(输出)
    • 总线周期:一段时间CPU通过总线与存储器、I/O交换一个数据所需要的时间称为总线周期
    • M/IO非: = 1,表明该总线周期,CPU与存储器交换信息; = 0,表明该总线周期,CPU与I/O接口交换信息
    • W/R非: = 1,表明该总线周期,CPU进行写操作; = 0,表明该总线周期,CPU进行读操作
    • D/C非: = 1,表明该总线周期,传输的是数据; = 0,表明该总线周期,传输的是指令代码

    



 

4、32为微处理器的地址空间和工作模式

  • 地址空间:存储空间和I/O空间
  • 存储空间
    • 物理空间:存续的运行空间,即主存空间。486有32条地址线,内存最大为4GB。这4GB称为物理存储器,每个单元的地址称为物理地址,其范围为:00000000H~FFFFFFFFH,为物理存储空间
    • 虚拟空间:又称编程空间。虚拟存储器是一项硬件和软件结合的技术。存储器管理部件把主存和赋存看坐是一个整体,即虚拟存储器。486允许虚拟存储器容量最大为246 = 64T,即程序员可在此地址范围内编程,程序可大大超过物理空间。运行时,操作系统从虚拟空间取一部分程序载入物理存储器运行。当程序运行需要调用的程序和要访问的数据不在物理存储器时,操作系统再把那一部分调入物理存储器,其数据交换极快。
    • 线性空间

    • 当程序从虚拟空间调入物理空间时,要进行地址转换。分段部件首先把虚拟地址转换成线性地址
    • 若不分页,则线性地址就是物理地址;若分页,则分页部件把线性地址转换为物理地址
    • 实模式下:存储空间仅分段,不分页
    • 保护模式下,存储空间先分段,再分页
  • I/O空间
    • 486利用低16位地址线访问I/O端口,所以I/O短空最多有64K,I/O地址空间为0000H~FFFFH
    • I/O地址空间不分段
    • I/O地址空间与存储空间不重叠(M/IO非)
    • 从PC/XT~Pentium,基于Intel微处理器的系统机,实际只使用低10位地址线,寻址1024个I/O端口
  • 32位微处理器的工作模式
    • 实地址模式(实模式)
      • 特点:
      1. 加电、复位之后,486自动工作在实模式,系统在DOS管理下
      2. 在实模式下,486只能访问第一个1M内存(00000H~FFFFFH)
      3. 存储管理部件对存储器只进行分段管理,没有分页功能,每一逻辑段的最大容量位64K
      4. 在实模式下,段寄存器中存放段基址
    • 保护虚拟地址模式(保护模式)
      • 特点
      1. 在保护模式下,486支持多任务操作系统
      2. 486可以访问4G物理存储空间
      3. 存储管理部件中,对存储器采用分段和分页管理。在保护模式下,段寄存器存放的不是段基址而是段选择符
      • 关于保护机制:486有一套复杂的保护机制,系统定义了4个“特权级”。操作系统的核心特权级最高,应用程序的特权级最低。并规定,高级别的程序可以访问同级或低级的数据段,反之则不行,应用程序只能访问自身的数据段

 

    • 虚拟8086模式
      • 虚拟8086模式是保护模式下的一种特殊工作模式,可运行实模式程序
      • 在操作系统管理下,486可以分时地运行多个实模式
  • 实模式下20位物理地址的行成
    • 物理空间对应的物理地址,指1MB存贮区域中的某一单元地址,地址信息是20位的二进制代码,以16进制表示00000H~FFFFFH中的一个单元,CPU访问存储器使用物理地址,在地址总线上送出的是20位物理地址
    • 虚拟空间对应的逻辑地址,程序员编写程序使用逻辑地址,程序是分段的,逻辑地址由段基址和偏移地址组成,书写成:段基址:偏移地址
    • 逻辑地址到物理地址的转换由CPU完成
  • 存储器的分段管理,物理地址、逻辑地址的形成
    • 我们把1M字节的存储器 分为任意数量的逻辑段, 其中每一段长度为64K 个字节。段的起 始地址的高16位地址称为该段的段基址。段内再由 16位二进制数寻址,段内寻址的16位二进制数地址 是存贮单元到段起始地址的距离,称为偏移地址(偏移量)。段基址和偏移地址一起构成逻辑地址。
    • 存贮器中的每个存贮单元都可以用两个形式的地址来表示: 物理地址和逻辑地址。物理地址是指1MB存贮区域中的某一 单元地址,地址信息是20位的二进制代码,以16进制表示是 00000H~FFFFFH中的一个单元,CPU访问存贮器时,地址总线上送出的是物理地址。编制程序,则采用逻辑地址。逻辑地 址由段基址和偏移量组成。

 

    • 在一个逻辑段中,各单元的段基址是相同的
    • 偏移地址是该单元相对于段首的地址偏移量
    • 实模式下20位物理地址的形成过程

  • 各逻辑段物理地址的形成(以16位寻址为例)
    • 在实模式下,段寄存器存放相应逻辑段的段基址

 

    • 代码段:CS*24+IP=指令单元的物理地址,一条指令的一个字节取出后,IP自动加1,指向 下一字节。
    • 堆栈段:SS*24+SP=栈顶单元的物理地址
    • 数据段:DS*24+偏移地址=数据单元的物理地址
  • 段寄存器的初值
    • CS、IP的初值:由操作系统赋值
    • SS、SP的初值:①由程序员赋值;②由操作系统自动赋值
    • DS/ES/FS/GS的初值:由程序员赋值
    • BX/SI/DI/BP的初值:由程序员赋值


 

 

 

 

 

 

 

 

这篇关于汇编语言学习笔记(2)——80x86微处理器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!