第二章 80x86微处理器简介

2.第二章 80x86微处理器简介

本章小结

在这里插入图片描述

本章需要记住的两个很重要的知识点

物理地址(PA)=段地址(DS/CS)*16+偏移地址

6种状态标志,并且会判断

2.1 Intel微处理器

80x86

  • 泛指基于英特尔框架的各款x86微处理器
  • 后期还有Intel Xeon(至强)、Intel Core(酷睿)
  • 最大特点:保持与先前处理器的兼容
8086内部结构

功能分类:

  • 运算器:负责所有的算术逻辑运算
  • 控制器:负责微型系统的所有控制功能

结构分类:

  • 执行单元

    ​ 部件:指令译码部件算术逻辑单元通用寄存器组

    ​ 功能:负责指令译码和执行

  • 总线接口单元

    ​ 部件:指令队列缓冲器总线控制逻辑专用寄存器地址产生器

​ 功能:负责CPU和外部联络

在这里插入图片描述

80386内部结构

在这里插入图片描述

CPU访存过程

访存过程

  1. CPU通过**控制总线**,发出访存信号,通知主存准备数据读写

  2. CPU通过**地址总线**,发出存储单元的地址

    ​ 主存储器接收到地址后,译码,寻址正确的存储单元

  3. CPU通过**控制总线**,发出读写的指令

    ​ 主存储器将准备执行读写操作

  4. CPU通过**数据总线**,读出或写入的数据

在这里插入图片描述

2.2 寄存器组

寄存器

什么是寄存器?:寄存器是CPU内部有若干触发器逻辑电路组成,用来暂存二进制指令数据地址的部件

寄存器的功能有什么?

  • 将寄存器内的数据执行算术或逻辑运算
  • 寄存器内的数据可以用来指向内存的某个位置,即寻址
  • 读写数据

寄存器的特点有什么?

  • 寄存器之间的数据传送速度很快
  • 使用灵活(例如:暂存运算的中间数据)、控制方便(如:IP)
寄存器分类

寄存器的分类

  • 通用寄存器:传送和暂存数据;参与算术逻辑运算并保存结果

  • 段寄存器:保存段地址,用于寻址时构成物理地址

  • 专用寄存器

    • 指令指针寄存器:保存将要去除指令的有效地址
    • 状态标志寄存器:反应处理器的状态和运算结果的某些特征
  • 控制寄存器:

  • 系统地址寄存器

  • 调试寄存器

  • 测试寄存器

在这里插入图片描述

在这里插入图片描述

通用寄存器

通用寄存器

  • 存储数据参与算术逻辑运算给出存储器单元的地址
  • image-20221030100040082

在这里插入图片描述
在这里插入图片描述

通用寄存器之数据寄存器

数据寄存器

  • 8086CPU可以直接访问这些数据寄存器的低8位

在这里插入图片描述

数据寄存器命名规则

在这里插入图片描述

通用寄存器之变址寄存器

变址寄存器SI DI

  • 常作为指针,存放存储单元的有效地址,也可暂存数据

特殊用法

  • SI DI中保存的地址信息会随指令的执行而改变
  • SI 串操作中存放源串地址,默认**DS段**
  • DI 串操作中存放目的串地址,默认**ES段**
  • 注意:该特殊用法只在字符串操作中有效
通用寄存器之堆栈指针寄存器

在这里插入图片描述

通用寄存器例子

在这里插入图片描述

在这里插入图片描述

对低位操作,不影响高位;对高位操作,不影响低位

段寄存器

段寄存器

  • 用来存放段首地址段选择符的16位寄存器

  • 一段汇编语言程序中至少有一个逻辑段——代码段,用于存放代码

    在这里插入图片描述

段寄存器之代码段

代码段

  • 存放要执行的指令序列

  • 段首地址用代码段寄存器CS来保存

  • 指令指针寄存器IP只是本段中的地址

    • 将要执行的下条指令的有效地址
  • CPU用 CS : IP 形成存储单元的物理地址(实际地址PA)

下面插入一个很重要的知识点:

物理地址(PA)=段地址(DS/CS)*16+偏移地址

当操作数是存放在存储器中时,存储器的存储单元物理地址有两部分组成。一部分是偏移地址;一部分是段地址。在8086/8088的各种寻址方式中,寻找存储单元所需的偏移地址可由各种成分组成,称为有效地址,用EA表示。可以通过存储器寻址方式获得有效地址.

  • 有效地址可以由几部分组成:基址寄存器内容、变址寄存器内容、比例因子和位移量。

  • 段地址:电脑内的存储器地址可被分为若干逻辑段。每个逻辑段的起始地址称为段地址。

可以参考这个理解一下这个公式【汇编】“物理地址=段地址*16+偏移地址”的本质含义 - 知乎 (zhihu.com)

逻辑地址:逻辑地址是用户编程时使用的地址,分为段地址和偏移地址两部分

段寄存器之数据段

数据段DS

  • 用来存放程序运行时所需的数据
  • 段首地址用DS来保存
  • CPU利用DS(段地址):EA(有效地址)形成存储单元的物理地址
段寄存器之堆栈段

堆栈段

在这里插入图片描述

段寄存器之附加段

附加段

在这里插入图片描述

段寄存器之FS、GS

在这里插入图片描述

段寄存器之默认选择规定

在这里插入图片描述

专用寄存器

指令指针寄存器EIP

  • 保存将要执行指令的有效地址
  • 该寄存器的内容是不允许被人更改,通过指令的执行自动改变

状态标志寄存器EFLAGS

在这里插入图片描述

指令指针寄存器EIP

在这里插入图片描述

标志寄存器

状态标志寄存器

在这里插入图片描述

状态标志

状态标志CF(进位标志) PF(奇偶标志) AF(辅助进位标志) ZF(零标志) SF(符号标志) OF(溢出标志)

在这里插入图片描述

这里多说一句:溢出指的是对于8位符号数,运算结果超出了-128 ~ +127;或者对于16位符号数来说,运算结果超出了-32768 ~ +32767

零标志ZF(Zero Flag)

在这里插入图片描述

下面看一个例题

在这里插入图片描述

符号标志SF(Sign Flag)

在这里插入图片描述

注意:

先把十六进制转换成二进制,进行运算,如果结果超出参与运算数的位数,把最高位去掉,看最高位后面的那一位来判断

1位负,0为正

奇偶标志PF(Parity Flag)

在这里插入图片描述

这里一个数字代表1位(bit)

32位计算机:1字=32位=4字节,

64位计算机:1字(Word)=8字节(byte)=64位(bit)

汇编伪指令 db(字节) dw(字) dd(双字)

1dd = 2dw = 4db

一定要区分这两个概念

辅助进位标志AF(Auxiliary Carry Flag)

在这里插入图片描述

一定是低4位,只要低四位的任何一个位上有进位,AF就为1

进位标志CF(Carry Flag)

在这里插入图片描述

再次提醒:一定是最高位运算有进位,其他位没有关系,即便它后一个给最高位有一个进位,那也不是最高位自己的进位

溢出标志位OF(Overflow Flag)

在这里插入图片描述

溢出的判断

最高位0 + 0 = 1 1 + 1 = 0

机器数的表示范围:

  • 8位机器数:-128 ~ +127
  • 16位的表达范围:-32768 ~ +32767

在这里插入图片描述

状态标志寄存器的例题

在这里插入图片描述

这里可以参考这个链接,有十六进制:十六进制相加减时,标志位怎么判断的问题_呓语dd的博客-CSDN博客_标志位怎么判断

2.3 工作模式

工作模式

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

实地址模式

在这里插入图片描述

只能访问最低端1MB字节的物理地址空间,00000H ~ FFFFFH

保护模式

在这里插入图片描述

在这里插入图片描述

虚拟8086模式

在这里插入图片描述

2.4 存储器组织

标准结构

基本存储单元:

  • 8个连续的位构成,用于存储一个字节的数据,,基本存储单元也被称为字节存储单元

存储器:

  • 由一系列存储单元线性的构成,每一个基本存储单元有一个唯一的地址:物理地址

存储器功能

  • 存储数据和程序

  • 地址总线对存储器进行寻址,数据总线对存储器内容进行读写

物理地址(实际地址)

在这里插入图片描述

存储器分段

在这里插入图片描述

每个逻辑段的容量最大可达64KB,各个逻辑段之间可以是重叠的

!!!

在这里插入图片描述

地址类型

物理地址、段首地址、有效地址、逻辑地址

在这里插入图片描述

物理地址(实际地址)和逻辑地址

在这里插入图片描述

下面看一道例题

在这里插入图片描述

默认段地址

在这里插入图片描述

存储器数据的存取方式

高高低低原则

  • 低地址单元存放低字节数据,高地址单元存放高字节数据
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值