DJ11 8086系列处理器(第二节课)

news2024/9/23 1:19:09

目录

一、8088CPU的系统总线

1. 最小模式

2. 最大模式

二、8086/8088 CPU 的功能结构

1.  8086/8088 CPU 的内部结构

2.  8086/8088 CPU 的内部寄存器

1)通用寄存器

2)段寄存器

3)控制寄存器

三、8086/8088 CPU 的存储器组织

1. 物理地址

2. 逻辑地址

3. 8086/8088 堆栈的组织


一、8088CPU的系统总线

1. 最小模式


 

8282 是一个三态地址锁存器:

2. 最大模式

 8286 是一个双向三态缓冲器:

二、8086/8088 CPU 的功能结构

1.  8086/8088 CPU 的内部结构

8086/8088 内部由两部分组成:

  • 执行单元(EU)
  • 总线接口单元(BIU)

8088 处理器内部结构图:

① 执行单元EU

主要功能:分析指令、执行指令、暂存中间运算结果、保留结果的特征。

EU 在工作时不断地从指令队列中取出指令代码,对其译码后产生完成指令所需要的控制信号(微命令)。数据在 ALU 中进行运算,运算结果的特征保留在标志寄存器 FLAGS 中。

② 总线接口单元 BIU

主要功能:负责 CPU 与存储器、I/O接口之间的信息传送。

8086/8088 CPU 中的寄存器均为 16 位,CPU 外部地址线位宽为 20 位。BIU 中使用地址加法器产生 20 位的物理地址,可以寻址的存储单元个数为 1M。

8088 的指令队列长度为 4 字节,8086 的指令队列长度为 6 字节。

2.  8086/8088 CPU 的内部寄存器

 8086/8088 CPU 的内部共有 14 个 16 位寄存器,包括:

  • 通用寄存器(8个)
  • 段寄存器(4个)
  • 控制寄存器(2个)

1)通用寄存器

通用寄存器包括:

  • 数据寄存器(4个)
  • 地址指针寄存器(2个)
  • 变址寄存器(2个)

(1)数据寄存器:AX、BX、CX、DX

功能:常用于存放操作数或运算结果。 

每个数据类寄存器分别可以作为两个独立的 8 位寄存器使用,从而可以方便地实现 8 位或 16 位的数据处理。

(2)地址指针寄存器:SP、BP

功能:

  • 存放操作数;
  • 作为地址指针,存放内存单元的偏移地址。

①SP:在堆栈操作中用来存放栈顶单元的偏移地址,永远指向堆栈的栈顶。

②BP:默认用于存放当前堆栈内某个单元的偏移地址,即可以对堆栈内任意单元的数据进行操作。

(3)变址寄存器:SI、DI

功能:

  • 存放操作数;
  • 作为地址指针;
  • 分别固定应用于数据的串操作指令中,提供串操作数的索引地址。


数据寄存器的特殊用途:

①AX:累加器,乘除运算中的隐含操作数以及中间结果;I/O指令中也使用AX/AL进行数据传送。

②BX:基址寄存器,常用于存放被访问内存单元数据块的基地址,默认为 DS 数据段。

③CX:计数寄存器,在循环和串操作指令中用作计数器。

④DX:数据寄存器,用于存放I/O指令中的 16 位端口地址;存放 32 位乘除运算中的高 16 位(低 16 位于 AX 中),以及 32 位除法结果中的余数。


2)段寄存器

  • CS:代码段寄存器,当前代码段的段地址。
  • DS:数据段寄存器 ,当前数据段的段地址。
  • SS:堆栈段寄存器, 当前堆栈段的段地址。
  • ES:附加数据段寄存器,当前附加数据段的段地址。

段寄存器用于存放段基址,即段起始地址的高 16 位。

3)控制寄存器

(1)指令指针寄存器 IP

功能:用于存放预取指令的偏移地址。

CPU 取指令时总是以 以 CS 为段基址,IP 为段内偏移地址 。当 CPU 从 CS 段中偏移地址为 (IP) 的存储单元中取出 指令代码的一个字节 后,IP 自动加1,指向指令代码的下一个字节。用户程序不能直接访问IP寄存器。

(2)标志寄存器或程序状态字(PSW)FLAGS

① 算术或逻辑运算结果的特征位

CF(Carry Flag):进位标志位。

        加/减法运算时,若最高位有进/借位则 CF=1 。

PF(Parity Flag):奇偶标志位。

        运算结果的低 8 位中 1 的个数为偶数时 PF=1,为奇数时 PF=0 。

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

        加/减运算中,低位从 Bit0 开始。若 Bit3 向 Bit4 有进/借位,则 AF=1 。 

ZF(Zero Flag):零标志位。

        当运算结果为零时 ZF=1 。

SF(Sign Flag):符号标志位。

        当运算结果的最高位为 1 时 SF=1 。

        因为没有考虑运算结果是无符号数还是有符号数,所以 SF 只是告诉我们它可能是个负数。至于它具体是不是负数,还需要我们自己去判断。

OF(Overflow Flag):溢出标志位。

        当算术运算的结果超出了带符号数的表示范围时 OF=1 。

考虑两个 32 位数的加法运算。由于 8086/8088 寄存器位宽为 16 位,因此我们只能让低 16 位、高 16 位分别进行相加。其中,高 16 位要考虑由低 16 位传入的进位。

举例:

低 16 位进行运算时,有效数值部分无进位,符号位有进位。如果视作有符号数,那么就是发生了溢出,OF=1 。但实际上我们并没有计算完毕,这只是中间结果而不是最终结果,因此不能当作溢出处理。

因此在实际运算中,我们把低 16 位看作无符号数,把高 16 位看作有符号数。根据高 16 位的运算结果来判断实际运算结果是否溢出。


例、1011 0110 + 1111 0100 。


② 控制标志位

TF(Trap Flag):陷阱标志位,又称跟踪标志位。

        TF=1 时,使 CPU 处于单步执行指令的工作方式。

IF(Interrupt Flag):中断允许标志位。

        IF=1 使 CPU 可以响应可屏蔽中断请求。

DF(Direction Flag):方向标志位。

        在数据串操作时确定操作的方向。

        DF=1,地址指针按自减方式进行;DF=0,地址指针按自增方式进行。

 

三、8086/8088 CPU 的存储器组织

1. 物理地址

是指每个内存单元在整个内存空间中具有的唯一的地址。

8086/8088 CPU 有 20 根地址线,它可以产生 20 位的地址码,寻址范围为 1M。

同时,存储器按照字节进行编址,因此存储器最大容量为 1MB。

因为数据总线是 8 位,所以只能按照字节编址。

在源程序中常用 5 位十六进制数或一个符号来表示一个存储单元的地址。

(重点)

1、任何两个相邻字节单元就构成一个字单元;

2、字单元的地址为两个字节单元的低地址;

3、字数据的存放规则:低 8 位放在较低地址字节单元中,高 8 位放在较高地址字节单元中。

例如:将数据 3456H 放在地址为 09235H 的存储单元中的存储分配。

(计算)

示例:

段地址 = 段基地址 = 段基址

2. 逻辑地址

8086/8088 的存储器段结构的特点:

1、每个段最大长度为 64K(65536)个字节单元组成。

2、每个段的起始地址(段首地址)必须是一个小节的首址。

因为段首地址的低 4 位必为 0000 。

小节(Paragraph)的概念:

从 0 地址开始,每 16 个字节单元称为一个小节。1MB 内存可以划分为 64K 个小节。 

段寄存器 CS、DS、ES、SS 均为 16 位,段地址为 16 位,因此分别可以代表 64K 个段。

段内偏移地址为 16 位,因此每个段里面可以有 64K 个存储单元。


逻辑地址通常写成:XXXXH:YYYYH

  • XXXXH —— 段地址
  • YYYYH —— 段内偏移地址

物理地址 = 段地址 × 16 + 段内偏移地址

例、设某操作数存放在数据段,DS = 250AH,数据所在单元的偏移地址 = 0204H。则该操作数所在单元的物理地址为:

250AH × 16 + 0204H = 252A4H


3、逻辑段在物理存储器中可以是邻接的、间隔的、部分重叠的和完全重叠的等 4 种情况。

说明:一个物理地址可以由多个逻辑地址来表示。

例、同一个物理地址 002D3H 被两个逻辑段中的逻辑地址映射的情况。

4、在任一时刻,一个程序只能访问 4 个当前段中的内容。

4 个当前段分别是代码段、数据段、堆栈段和附加段,它们分别由 4 个段寄存器 CS、DS、SS 和 ES 提供当前段的段地址。

3. 8086/8088 堆栈的组织

在 8086/8088 微机中堆栈是由堆栈段寄存器 SS 指示的一段存储区。

按字节编址,按字存取;长度用字节数表示,长度必为偶数。

特点:

1、数据在堆栈中以字为存取单位,低 8 位放在较低地址单元,高 8 位放在较高地址单元;

以字为存取单位:如果我们分配 91 个单元,那么编译器会自动修正为 92 个单位。

2、SP 的初始化值就是堆栈的长度。由于 SP 是 16 位寄存器,因此堆栈长度小于 64KB。

16 位的表示范围为 0 ~ 65535,若我们分配 65535 个单元,自动修正值不能取到 65536,故只能取为 65534。因此,堆栈的长度小于 64KB。

3、SP 始终表示堆栈段首地址与栈顶之间的距离(字节数)。

  • 当 SP 为最大值/初始值时,表示堆栈为空;
  • 当 SP 为 0 时,表示堆栈全满。

4、当用户程序中要求的堆栈长度超过一个堆栈段的最大长度 64KB 时,可以设置多个堆栈段。

在不同堆栈之间进行切换时,记得要修改 SS 段寄存器内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/12572.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

超级账本Fabric的世界状态操作与账本操作

在 Hyperledger Fabric 中,账本由两个不同但相关的部分组成 - 世界状态和区块链。 世界状态: 一个数据库,其中存储了一组帐本状态的当前值的缓存。世界状态使程序可以轻松地直接访问状态的当前值,而不必通过遍历整个交易日志来计…

PROTAC与抗体偶联药物的结合

PROTAC 的靶点真核生物的蛋白降解途径主要分为溶酶体途径、泛素蛋白酶体途径、胞液蛋白酶水解途径和线粒体蛋白酶途径等四种 (图1)。其中,PROTAC 所依赖的蛋白酶体途径主要针对细胞周期蛋白、转录因子、细胞表面受体以及胞内变性蛋白等进行降解。 图 1. 不同蛋白降…

《安富莱嵌入式周报》第291期:分分钟设计数字芯片,单片机版JS,神经网络DSP,microPLC,FatFS升级至V0.15,微软Arm64 VS正式版发布

往期周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版: https://www.bilibili.com/video/BV1Dd4y1b74x 《安富莱嵌入式周报》第291期:分分…

分享几个小技巧教你图片怎么加边框

大家平时出去玩的时候,肯定没少拍摄照片吧?那你们都是怎么对图片进行修饰的呢?我比较喜欢给图片加上一些边框线条,这样子的图片会比较有意境,能凸显我想要表达的意思。那么大家知道怎么在图片里加边框吗?今…

【Vue.js设计与实现】第4章 响应系统的作用与实现

前言: 本文是我看的Vue.js设计与实现这本书第二篇 响应系统 的第4章 响应系统的作用与实现的一些总结与收获。 第4章从宏观视角讲述了Vue.js 3.0中响应系统的实现机制。从副作用函数开始,逐步实现一个完善的响应系统,还讲述了计算属性和watch…

java计算机毕业设计基于安卓Android的在线心理咨询与健康App

项目介绍 本文介绍了心理咨询与健康App软件开发建设的意义和国内外发展现状,然后详细描述了所开发手机APP的可行性分析,并分析了手机APP所要实现的功能。因为心里咨询设施较多,而且人口密集,不能更好的管理健康问题,造成需要时人员不必要的身心伤害,所以采用比较方便的、容易便…

Linux基本指令(下)

Linux基本指令(下)前言cat指令more命令less命令head命令tail命令wc指令date指令cal指令find指令grep指令top命令alias命令zip/unzip命令前言 上一篇Linux基本指令主要讲解了关于文件操作方面的指令,接下来这一片Linux基本指令主要讲解一下关…

聊聊推荐系统的评测(下)

这是鼎叔的第三十九篇原创文章。 行业大牛和刚毕业的小白,都可以进来聊聊。 欢迎关注本人专栏和微信公众号《敏捷测试转型》,大量原创思考文章陆续推出。 上篇请查阅:聊聊推荐系统的评测(上) 下篇,我们…

基于SSM的旅游景点购票管理系统

1、项目介绍 基于SSM的旅游景点购票管理系统拥有两种角色,管理员和用户 管理员:用户管理、景点管理、购票管理、酒店管理、客房管理、客房预订管理、轮播图管理等 用户:登录注册、景区购票、评论、预订客房、收藏、发布攻略等 2、项目技术…

App推广渠道追踪技术更新及应用

如今App推广渠道追踪对App厂商来说非常重要,因为App厂商需要通过渠道追踪来寻找成本最低的和价值最高的获客渠道。 但是现在线上渠道的选择五花八门,比如各种新闻门户网站、字节系平台、腾讯系平台等,那么到底该花多少钱去获取用户&#xff…

本地浏览器打开远程服务器上的Jupyter Notebook

文章目录一、配置过程二、其他需求后台运行Jupyter端口映射实验环境及需求:远程服务器配置了 Jupyter Notebook,本地电脑没有相关的环境,想要在服务器端启动 Jupyter Notebook,然后直接从本地浏览器打开进行操作。 一、配置过程 …

【百度AI_文字识别】示例身份证图片识别(代码官方文档完整,只需获得修改参数、下载类)

文章目录提取身份证信息第一步:登录第二步:获取资源第三步:获取access_token参数(AuthService.java)第四步:请求代码Idcard.java第五步:修改Idcard.java文件注意:返回错误提取身份证…

【跨境电商卖家】Instagram营销初学者指南(一):重要性、优势

关键词:跨境电商卖家、instagram营销 1.为什么 Instagram 营销对企业很重要? Instagram 是接触大量受众的完美渠道——每月有超过10 亿活跃用户。平均而言,用户每天在 Instagram 上花费 53 分钟,这使得该平台成为仅次于Facebook的…

微信网页支付小白指南-域内浏览器支付 + 外部浏览器支付

关于微信网页支付,分为微信域内浏览器支付 外部浏览器支付,两者还是稍微有点点区别的,内部浏览器即在微信内打开网页,进行支付,支付调用是需要开通JSAPI支付方式;而外部浏览器「比如浏览器等」则需要开通 …

Leetcode刷题day2|数组二|977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

文章目录一、有序数组的平方错误的尝试思路注意AC代码暴力版本双指针方法二、长度最小的子数组错误的尝试思路滑动窗口介绍注意AC代码三、螺旋矩阵错误的尝试思路注意AC代码继承前边循环变量的写法不继承前边循环变量的做法四、数组做题思路总结基本知识解题思路一、有序数组的…

将爱心代码设为电脑屏保,俘获少女芳心,还能假装黑客,在酷炫的界面中保护隐私

本文介绍 Hacker Screen Saver 一款开源 Windows 屏保的使用。Hacker Screen Saver 是一款 .NET 设计的屏幕保护程序,可以显示 HTML 页面,你可以将黑客模拟器的网页,或者爱心代码网页设置为你的 Windows 电脑屏保。详细介绍了软件的使用和对应…

apritag 定位记录 C++ opencv 3.4.5

参考:2021-06-23 基于AprilTag的位姿估计,原理,完整代码(相机坐标系、世界坐标系) - 简书 Apriltag使用之二:方位估计(定位)_arczee的博客-CSDN博客_apriltag位姿估计 1.AprilTag概述 AprilTag是一种视觉…

Matlab:绘制日期时间

Matlab:绘制日期时间绘制日期时间数据指定坐标区范围指定刻度值指定刻度格式存储日期时间的坐标区属性导出和转换数据提示值绘制来自文件的日期时间数据此示例说明如何使用存储为 datetime 和 duration 数组的日期时间创建线图。datetime 数据类型表示时间点&#x…

Linux I/O 原理和 Zero-copy 技术全面分析

两万字长文从虚拟内存、I/O 缓冲区,用户态&内核态以及 I/O 模式等等知识点全面而又详尽地剖析 Linux 系统的 I/O 底层原理,分析了 Linux 传统的 I/O 模式的弊端,进而引入 Linux Zero-copy 零拷贝技术的介绍和原理解析,将零拷贝…

项目终于收尾了,第一次体验到专业项目管理软件的魅力

转眼到了年底,我跟进的项目也到了收尾阶段。之前陆陆续续给大家分享了入职新公司后,使用新引进的项目管理软件做项目的一些体会和心得,其中一些比较高效便捷的技巧和功能模块也引起了大家的兴趣。 最近刚好临近项目尾声,也给大家…