ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-10-11 20:02:41  阅读:374  来源: 互联网

标签:存储器 物理地址 汇编语言 80x86 微处理器 地址 寄存器 CPU




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的初值:由程序员赋值


 

 

 

 

 

 

 

 

标签:存储器,物理地址,汇编语言,80x86,微处理器,地址,寄存器,CPU
来源: https://www.cnblogs.com/taking/p/15353686.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有