【个人回顾】西安电子科技大学-周佳社-微机原理与接口设计-2

本文主要是介绍【个人回顾】西安电子科技大学-周佳社-微机原理与接口设计-2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        写在开头:本文不以分享为目的,只是记录自己课程学习过程中觉得重要的部分知识点或者知识体系,以及可能存在的没有解决的问题,欢迎大家来进行交流和指正,其中ps部分为个人将其他学科与其构建联系的个人理解,因此也欢迎您能花费一部分时间帮我进行查漏补缺或者进行指点,学生拜谢。Orz

        ·本章内容同步于学习通课程微机原理与接口设计8086CPU中的结构与功能(一)至(十一),包括课后习题中本人错误点的回顾,将放在最后。因为视频中并未出现老师布置的课后习题,因此所有都做了。

2.1微处理器的外部结构(宏观)

        微处理器的外部结构表现为数量有限的输入输出引脚,进而构成微处理器级总线。微处理器的封装方式主要有两种,分别是双列直插式和扁平式,目前的微处理器扁平式的较多,而本书中主要研究的8086系列CPU为双列直插式封装。8086为16位寄存器,16位的原因是寄存器和ALU是16位的。在8086CPU中,一共有20根地址总线,其中有16根复用为地址总线A0~A15。地址总线的作用是CPU用来给外部存储器提供地址,因为计算机中的存储器是按字节组织的,因此20根外部总线可以提供2^{20}B=1MB个可寻址的外部存储器空间。同时16根内部总线为外部I/O提供2^{16}B=64KB个可寻址的I/O空间,通过M/\overline{IO}引脚的状态来判断寻址对象。

        微处理器中存在着一定的端口,端口实际上就是一个寄存器,可以实现CPU与设备间的信息交换。如I/O端口即为一个传递信息的通道。 一个I/O端口至少要占用一个I/O(端口)地址,这些地址是上文提到的64KB地址中的一个。在电路设计过程中,设计输入端口器件要具备三态功能,使不发生总线竞争。总线竞争会产生很严重的后果,轻则系统瘫痪,重则处理器短路。同时,输入端口必须具备锁存功能,使设备响应时能够解放CPU。我们注意到,在CPU未发送数据时,输出端口并非没有数据而是存在一定的无效数据。

        在给端口编码时,有统一编码和独立编码两种方式。

                统一编码要求当一个地址码给存储器单元编码时,该地址码就不可以给I/O进行编码了。反之亦然。51类型的处理器广泛应用统一编码的格式。统一编码的优点:因为将I/O端口视为存储器单元进行操作,因此对存储器进行读写的所有操作同样适用于I/O端口。因此程序设计简单,编写灵活。统一编码的缺点:浪费了存储器的地址空间,没有专用的I/O操作指令。

                独立编码是8086系列微处理器使用的编码方式。独立编码的优点是节约了存储器的地址空间,缺点是指令记忆复杂,I/O程序设计不够灵活。

        寻址方式有两种,分别是直接寻址和间接寻址。寻址方式越多,程序就会越灵活。

2.2微处理器的内部结构

        本章节的要求是了解微处理器的工作原理,逐步掌握汇编语言程序设计编程模型。

        微处理器内部存在四大部件,分别是①算术逻辑单元ALU,②工作寄存器——分为数据寄存器和地址寄存器,其中地址寄存器可以充当数据寄存器进行暂存操作。③充当中央指挥机关的控制器,可以取指令给指令寄存器并进行译码和分析,④I/O控制逻辑。

        控制器的控制流程为程序计数器通过AB取指令,指令通过DB传输到指令寄存器中,再进入指令译码器中,最后通过控制逻辑部件实现相应的功能。同时地址➕2再次取指令,循环往复。

        在存取指令过程中,我们往往会使用堆栈操作。堆栈指的是由先进后出原则组织的一段存储器区域(Ps.针对先进后出原则,我们可以将之看做弹夹,先塞入的子弹会被压在下层,然后在射击或者弹出时后被弹出。)。对于这样的堆栈区域,我们用栈顶和栈底来圈定堆栈的范围。栈底即入栈单元的地址,栈顶为PUSH后SD处指向的位置。我们需要注意的是栈底是固定的,而栈顶会随着数据的压入活动。

        对于8086而言,堆栈必须按字操作。堆栈单元地址由堆栈指针SP提供,指向栈底➕1单元的地址。 在进行堆栈操作时,如果SP超过范围,会导致堆栈溢出。此时会造成系统死机。因此在定义堆栈区域的时候,除了按要求定义以外,还应同时留出30%富余量,有便于程序的更新与维护。

        操作解释:入栈时        PUSH AX ;①sp→sp-2;②两个字节按规则入栈。

                          出栈时        POP    AX;①把sp指针内容指向栈顶地址,弹出两个字节内容给目                                                                    的操作数。②sp→sp+2

                        为了防止堆栈溢出,push 和 pop 的数量应配对。

2.3 8086/8088的内部结构

        8086/8088微处理器内部可以分为两大部分,分别是①总线接口单元BIU和②执行单元EU。在BIU中有四个段寄存器分别为①代码段寄存器CS(存放代码段段基址)②数据段寄存器DS(存放数据段段基址)③附加数据段寄存器ES(存放数据段的段基址)和④堆栈段段基址SS(指明堆栈段所在位置)。同时BIU内部还存在指令指针寄存器IP(等效于PC,他提供所在段内的地址)。

        8086微处理器的指令队列寄存器有6个字节,有6个指令寄存器。而8088微处理器中只有4个字节。

        BIU主要负责从外部存储器中取指令,并将取回的指令放入到指令队列中。EU主要负责从指令队列中根据先进先出原则来获取指令,并对该指令加以执行。

对BIU而言

         通常我们将编程时就会创造,编程时需要使用的寄存器称为通用寄存器。它可以组成80886汇编语言程序设计的编程模型。

2.4 8086CPU的寄存器组织

        在8086微处理器中一共有14个寄存器。分别是8个通用寄存器,4个段寄存器和2个控制寄存器

        1、通用寄存器

                通用寄存器中包含四个数据寄存器,分别为AX—累加器,BX—基址寄存器,CX—计数器和DX—数据寄存器(在I/O中做地址寄存器)。两个地址指针寄存器,分别是SP—堆栈指针寄存器,指向段内16位偏移地址。和BP—地址指针寄存器,类似于BX,充当段基址寄存器。和2个变址寄存器。分别为SI—源变址寄存器和DI—目的变址寄存器。

        2、段寄存器

                段寄存器只有四个,即为上文提到的BIU中的四个寄存器。代码段寄存器CS、数据段寄存器DS、附加数据段寄存器ES、堆栈段段基址SS。其中 CS无法初始化,由处理器自行决定。DS、ES和SS在使用时要先进行初始化,指向定义逻辑段的段地址。

        3、控制寄存器

                指令指针寄存器IP为16位寄存器,用来提供CS的IP地址,等效于8位的PC,二者均不可以做目的操作数。

                处理器状态字寄存器PSW为16位寄存器,但是实际有用的部分只有九位,并分为两类。一类为状态标志,如ZF、CF、PF、OF、SF和AF,反映ALU运算后结果的状态。另一类为控制标志,包括方向控制标志DF,中断允许标志IF和陷阱标志TF,用于控制CPU的运行状态。中断指某个特殊事件发生时,CPU转去从事此事件,事件完成后,CPU接着执行本身任务的过程。

2.5 8086CPU的存储器和I/O组织

        1、存储器地址空间与数据存放格式

                上文我们提到了,8086外部地址空间由20根地址总线决定,因此有2^{20}B=1MB个可寻址的外部地址空间,I/O地址空间由16根地址总线决定,因此有2^{16}B=64KB个可寻址的I/O地址空间。但是在IBM、PC机中,我们只用D0~D9给I/O分配地址。因此有2^{10}B=1KB个可寻址的I/O地址空间。

                在存储器中的数据存放格式主要有字节型、字形、双字型,部分情况下可能用到四字型,一般我们将一个字节存放在一个地质单元,存放时存放补码,上述各个类型均在DS段有定义。这里我们用汇编语言代码来理解

        ①字节型:一般我们用        DB         来充当字节型数据的伪指令。

        ②字型:一般我们用        DW        来充当字型数据的伪指令。当数据存储过程中,我们将低地址单元地址称为字的地址。当地址为奇数时称为奇地址,地址为偶数时称为偶地址。当字单元的地址为奇地址时我们称为对准了的字单元,为奇地址时称为未对准的字单元。当CPU在进行读写操作时,对对准了的字操作时只需要花费一个总线周期,对未对准的字操作时需要花费两个总线周期。因此地址定义时尽量在偶地址定义,以加快传输速度。

        ③双字型数据:一般我们用        DD        来充当双字型数据的伪指令。

        2、存储器的分段和物理地址(PA)的行程

                在学习该章节时,需要理解两个问题。

                ①为什么要分段?答:为了把20根地址总线可以寻址的1MB地址空间能够被16位寄存器寻址完。

                ②怎么分段?答:每个逻辑段最大为64KB,按需求进行分段,每个逻辑段的起始地址必须可以被16整除,因此最多可以分出64KB个段。

                分段后,我们用逻辑地址来表示不同分段的某个可寻址单元,逻辑地址由段地址(通常用CS)和段内偏移地址(通常用IP)组成,不同的逻辑地址可能会指向相同的物理地址,因此物理地址唯一,逻辑地址不唯一。

        3、物理地址(PA)的形成

                物理地址的计算方式是        物理地址=段基址*16+偏移地址,即PA=CS*16+IP。

                计算流程为①BIU把CS的内容送至加法器。②加法器将CS内容*16.③BIU把IP内容送至加法器。④加法器对两个内容进行相加。⑤构成取指令所需要的PA。

                数据传送操作为

                MOV        【BX】,AX;        (DS:(BX))←(AX)

                堆栈的方式为①暂停总线。②BIU传送DS至加法器并*16.③EU传送BX至加法器④加法器对两个内容进行相加构成PA⑤将PA的值赋值给AX

ps.BIU传送SS的内容至加法器并*16,EU把SP-2的值送至加法器

                堆栈操作

                PUSH         AX;

        4、各类指令的地址信息(表2)

                 理论上分段时,段与段间互相重叠,相邻两个段间最小间隔16字节。当程序初始化时,段寄存器的值对应的段称为当前段。运行期间,更改段寄存器的值可以改变当前段。

这篇关于【个人回顾】西安电子科技大学-周佳社-微机原理与接口设计-2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/352708

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

hdu4407(容斥原理)

题意:给一串数字1,2,......n,两个操作:1、修改第k个数字,2、查询区间[l,r]中与n互质的数之和。 解题思路:咱一看,像线段树,但是如果用线段树做,那么每个区间一定要记录所有的素因子,这样会超内存。然后我就做不来了。后来看了题解,原来是用容斥原理来做的。还记得这道题目吗?求区间[1,r]中与p互质的数的个数,如果不会的话就先去做那题吧。现在这题是求区间[l,r]中与n互质的数的和

怎么让1台电脑共享给7人同时流畅设计

在当今的创意设计与数字内容生产领域,图形工作站以其强大的计算能力、专业的图形处理能力和稳定的系统性能,成为了众多设计师、动画师、视频编辑师等创意工作者的必备工具。 设计团队面临资源有限,比如只有一台高性能电脑时,如何高效地让七人同时流畅地进行设计工作,便成为了一个亟待解决的问题。 一、硬件升级与配置 1.高性能处理器(CPU):选择多核、高线程的处理器,例如Intel的至强系列或AMD的Ry

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

hdu4407容斥原理

题意: 有一个元素为 1~n 的数列{An},有2种操作(1000次): 1、求某段区间 [a,b] 中与 p 互质的数的和。 2、将数列中某个位置元素的值改变。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.Inpu

hdu4059容斥原理

求1-n中与n互质的数的4次方之和 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWrit

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果: 解密后的数据就是正常数据: 后端:使用的是spring-cloud框架,在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency> 编写一个AES加密

SprinBoot+Vue网络商城海鲜市场的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质创作者,全网30w+

HomeBank:开源免费的个人财务管理软件

在个人财务管理领域,找到一个既免费又开源的解决方案并非易事。HomeBank&nbsp;正是这样一个项目,它不仅提供了强大的功能,还拥有一个活跃的社区,不断推动其发展和完善。 开源免费:HomeBank 是一个完全开源的项目,用户可以自由地使用、修改和分发。用户友好的界面:提供直观的图形用户界面,使得非技术用户也能轻松上手。数据导入支持:支持从 Quicken、Microsoft Money