计算机组成原理常见概念

计算机组成原理常见概念

1. CPU

1. 地址线

地址线是用来传输地址信息用的,cpu在内存或硬盘里面寻找一个数据时,先通过地址线找到地址,然后再通过数据线将数据取出来。 如果有32根.就可以访问2的32次方的空间,也就是4GB。

2. 寄存器

寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。寄存器是CPU的组成部分,因为在CPU内,所以CPU对其读写速度度是最快的,不需要IO传输。

3.寄存器的作用

  1. 可将寄存器内的数据执行算术及答逻辑运算;
  2. 存于寄存器内的地址可用来指向内存的某个位置,即寻址
  3. 可以用来读写数据到电脑的周边设备。

4. 寻址

寻址就是单片机指令中提供的操作数的形式,也就是寻找操作数或操作数所在地址的方式。

5. 段寄存器

段寄存器里放的是地址还是数据还是其他的东西?是放的段基值,通俗说就是段的起始点(具体地址是段基值+偏移),这个数值是地址不是数据。

  1. 代码段寄存器CS:存放当前正在运行的程序代码所在段的段基值
  2. 数据段寄存器DS:指出当前程序使用的数据所存放段的内最低地址
  3. 堆栈段寄存器SS:指出当前堆栈的底部地址
  4. 附加段寄存器ES:指出当前程序使用附加数据段的段基址,该段是串操作指令中目的串所在的段。

6. 中断

  1. 8086系统在存储器的最低1KB区域(00000H~003FFH)建立一个中断向量表,存放256个中断类型的中断向量。
  2. 这1024个单元被分成256组,每组包括4个字节单元,存储一个中断向量的段基址和段内偏移地址高2个字节用于存放段基址,低两个字节用于存放段内偏移地址
  3. 在执行某一条INT n指令时,CPU首先对断点和现场进行保护,然后将中断指令中的中断类型号n乘以4,得到一个地址,这个地址就是n号中断服务子程序的入口地址在中断向量表中的存放地址。
  4. 按照这个地址,取出连续4个字节单元的内容,即n号中断服务子程序入口的段基址(2个字节)和偏移地址(2个字节),送入CS和IP,以实现n号中断调用。

7. 操作数

  1. 操作数就是你要处理的数据,拿80X86汇编语言举个例子: MOV AH,02 这条指令中要做的处理是将02这个数字放到AH寄存器中。 AH和02都是操作数,02称为原操作数,AH称为目的操作数。
  2. 源操作数,指的是你准备要操作的那个“数”,而这个百“数”可以有很多种寻址度方法,包括直接操作数,寄存器寻址,间址寻址等等;目标操专作数指的是你对源操作数进行完操作之后将其结果输出到某个地址,那个地址就是你属的目标操作数。

8. 数据寄存器

  1. 数据寄存器就是用来存储计算机工作时产生或者需要准备的各种数据、结果和信息等内容,然后将其传送至其他设备以配合CPU完成对计算机的指令操作。
  2. 一般来说,数据寄存器分为AX、BX、CX、DX四大类,它们是一种16位的特殊数据寄存器,同时也可以在其内部将它们划分为高八位数据寄存器和低八位数据寄存器,其中高八位分别用AH、BH、CH、DH四个组合字母代表,低八位则由AL、BL、CL、DL四个组合字母代表。
  3. 在编程的时候,这四个寄存器可以实现对源操作数、目的操作数或运算结果的相关临时存储或存放。当然,我们也可以表示为数据寄存器是在计算机进行执行命令时用来存放操作数、运算结果和运算的一种中间结果,这样可以大大减少存储设备的访问次数,增加计算机的工作效率。从一个层面上讲,数据寄存器就是从存储器读取的数据以及写入存储器数据的一种构成计算机中央处理器的重要组成部分。
  4. AX:作累加器,在进行算术运算的时候,它是最主要的寄存器。在算术运算的特殊指令中用来存放操作数。同时,一般情况下的所有 I/O指令都使用这一寄存器,并和外部的其他设备进行信息或数据交互;
  5. BX:也叫作基址,是用来存放相关数据的内存地址等信息的一种寄存器;
  6. CX:也叫作计数,用来保存计数值,通常在很多情况下会作为隐含计数器工作;

9. 地址指针寄存器(SP BP SI DI)

  1. 地址指针寄存器用于存放操作数的地址,编程时通过修改寄存器的内容达到修改地址的目的

  2. SP:堆栈指针,指示堆栈段(关于段SS)中的栈顶位置,专门用于数据进栈和出栈的位置指示(SP 寄存器实质上必须和 SS 段寄存器一起使用);

  3. BP:基址指针,指示堆栈段中一个数据区中的基址位置

  4. 变址寄存器是指寄存器SI(源指针)和DI(目的指针)的寄存器,它们主要用于存放存储单元在段内的偏移量。指针寄存器(也就是 BP 和 SP),也是用于存放某个存储单元地址的偏移

  5. BP(基址指针寄存器)

    SP(堆栈指针寄存器)

    SI(源变址寄存器)

    DI(目的变址寄存器)

  6. ==区别:==SI是源变址寄存器,DI是目的变址寄存器。可以用来存放数据、地址,功能类似、用法类似、一般使用哪个都可以。

    但需要注意的是:在串处理指令中SI用作隐含的源串地址,默认在DS中;DI用做隐含的目的串地址,默认在ES中;此时不能混用。

    BP: 是和堆栈指针SP联合使用的,作为SP校准使用的,只有在寻找堆栈里的数据和使用个别的寻址方式时候才能用到比如说,堆栈中压入了很多数据或者地址,你肯定想通过SP来访问这些数据或者地址,但SP是要指向栈顶的,是不能随便乱改的,这时候你就需要使用BP,把SP的值传递给BP,通过BP来寻找堆栈里数据或者地址.

10. 段地址寄存器(CS DS SS ES)

段基址寄存器用于存放4个当前段的起始地址。4个段为:代码段CS,数据段DS,堆栈段SS和附加段ES。

11. 逻辑地址

  1. 逻辑地址形式为:(段基址:段内位移)
  2. (物理地址)=(段基址)╳16+(段内偏移)
  3. 如访问一个地址C85F:109A对应的实际地址为C85F0+109A=C968AH

12. 标志寄存器

包括状态标志和控制标志。执行一些指令之后,有一些操作数会发生变化,相应的表现为一些标志的变化。

13. IP寄存器的作用

IP用于寻址代码段存储区内的下一条指令(字节),它提供的是自动加1后的下一条指令(字节)的偏移地址。

14. 中断服务程序的入口地址

例1.中断类型号为20H,中断服务程序的入口地址存放在0000:0080H开始的4个单元中。若:(0080H)=10H (0081H)=20H (0082H)=30H (0083H)=40H

则:中断服务程序的入口地址为4030:2010

15. 编址

  1. 存储器是由一个个存储单元构成的,为了对存储器进行有效的管理,就需要对各个存储单元编上号,即给每个单元赋予一个地址码,这叫编址。
  2. 按字节编址,存储空间的最小编址单位是字节。
  3. 统一编址:访问存储器和IO使用同样的指令。
  4. 单独编址:访问存储器和IO使用不同的指令。

16. AX,BX,CX,DX的区别

  1. AX 累加寄存器。所有外部设备的输入输出指令只能使用AL或AX做为数据寄存器。

  2. BX 基址寄存器。可以用作数据寄存器;访问存储器时,可以存放被读写的存储单元的地址。是具有双 重功能的寄存器

  3. CX 计数寄存器。可以用作数据寄存器,在循环操作、移位操作时用作寄存器。

  4. DX 数据寄存器。在乘除法中作为数据累加器,在输入输出操作中存放端口的地址。

2. 寻址方式和指令系统

1. 寻址

  1. 单片机中的寻址就是单片机指令中提供的操作数的形式。也就是寻找操作数或操作数所在地址的方式。

  2. 为了区别指令中操作数所处的地址空间,对于不同存存储器的数据操作,采用不同的寻址方式。

2. BCD码

BCD码(Binary-Coded Decimal‎),用4位二进制数来表示1位十进制数中的0~9这10个数码,是一种二进制的数字编码形式,用二进制编码的十进制代码。BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制十进制之间的转换得以快捷的进行。

3. 存储器

1. 片选

对于一块集成电路,想让它开始工作,得给一个信号它(高电平或低电平),接收这一信号的引脚就叫片选端,这一信号就叫片选信号


2020年4月24日更新

4. 最小模式与最大模式

最小模式

MN/MX端接+5V,决定了8086工作在最小模式;
②有1片8284A,作为时钟发生器;
③有3片8282或74LS373,用来作为地址锁存器
④当系统中所连的存储器和外设较多时,需要增加数据总线的驱动能力,这时,要用2片8286/8287作为总线收发器。
在总线周期的前一部分时间,CPU总是送出地址信息,为了告示地址已经准备好,可以被锁存,CPU此时会送出高电平的ALE信号。所以ALE就是允许锁存的信号。除了地址信号外,BHE信号也需要被锁存。因为有了锁存器对地址和BHE进行锁存,所以在总线周期的后半部分,地址和数据同时出现在系统的地址总线和数据总线上;同样,此时**BHE也在锁存器输出端呈现有效电平,**于是,确保了CPU对存储器和I/O端口的正常读写操作。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LOYpy7lZ-1589732592925)(…/MarkdownImages/11.png)]

最大模式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oAMvAaAf-1589732592936)(…/MarkdownImages/22.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DFTP4AlK-1589732592938)(…/MarkdownImages/33.png)]

区别

​ 最大模式配置和最小模式配置有一个主要的差别,就是在最大模式下,需要用外加电路来对CPU发出的控制信号进行变换和组合,以得到对存储器和I/O端口的读写信号和对锁存器8282及对总线收发器8286的控制信号。8288总线控制器就是完成上面这些功能的专用芯片。
​ 在最大模式系统中,需要用总线择制器来变换和组合控制信号的原因就在于;在最力模式系统甲,一般包含2个或多个处理器,这样就要解决主处理器和协处理器之间的协调工作问题和对总线的共享控制问题,为此,要从软件和硬件两个方面去寻求解决措施。8288总线控制器就是出于这种考虑而加在最大模式系统中的。

5. 中断

8086的中断分类

​ 8086/8088有一个强有力的中断系统,可以处理256种不同的中断,每个中断对应一个类型码,所以,256种中断对应的中断类型码为0~255。
​ 从产生中断的方法来分,这256种中断可以分为两大类:一类叫硬件中断;一类叫软件中断。
硬件中断是通过外部的硬件产生的,所以,也常常把硬件中断称为外部中断。硬件中断又可以分为两类:一类叫非屏蔽中断;另一类叫可屏蔽中断。非屏蔽中断是通过CPU的NMI(non-maskable interrupt)引脚进人的,它不受中断允许标志IF的屏蔽,并且在整个系统中只能有一个非屏蔽中断。可屏蔽中断是通过CPU的INTR(interrupt)引脚进人的,并且只有当中断允许标志IF为1时,可屏蔽中断才能进入,如果中断允许标志IF为0,则可屏蔽中断受到禁止。在一个系统中,通过中断控制器(如8259A)的配合工作,可屏蔽中断可以有几个、几十个甚至上百个。
​ 软件中断是CPU根据软件中的某条指令或者软件对标志寄存器中某个标志的设置而产生的,从软件中断的产生过程来说,完全和硬件电路无关。典型的软件中断是除数为0引起的中断和中断指令引起的中断。

中断向量和中断向量表

​ 8086/8088的中断系统以位于内存0段的0~3FFH区域的中断向量表为基础,中断向量表中最多可以容纳256个中断向量。所谓中断向量,实际上就是中断处理子程序的入口地址,每个中断类型对应一个中断向量。
​ 中断向量并不是任意存放的。**一个中断向量占4个存储单元,其中,前2个单元存放中断处理子程序入口地址的偏移量(IP),低位在前,高位在后,后2个单元存放中断处理子程序入口地址的段地址(CS),同样也是低位在前、高位在后。**按照中断类型的序号,对应的中断向量在内存的0段0单元开始有规则地进行排列。
​ 比如,类型号为20H的中断所对应的中断向量存放在0000:0080H开始的4个单元中,如果0080H、0081H、0082H、0083H这4个单元中的值分别为10H、20H、30H、40H,那么,在这个系统中,20H号中断所对应的中断向量为4030:2010。

​ 又如,一个系统中对应于中断类型号17H的中断处理子程序存放在2345:7890开始的内存区域中,由于17H对应的中断向量存放在0000:005CH(17H×4=5CH)处,所以,0段005CH、005DH、005EH、005FH这4个单元中的值应当分别为90H、78H、45H、23H。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tasPk5Yv-1589732592944)(…/MarkdownImages/j2.png)]

硬件中断

​ 8086/8088为外部设备向CPU送入中断请求信号提供了两条引线即NMI和INTR。从NMI引脚进入的中断为非屏蔽中断,它不受中断允许标志IF的影响。非屏蔽中断的类型号为2,所以,非屏蔽中段处理子程序的入口地址放在0段的0008H、0009H、000AH和000BH这4个单元中。
​ 当NMI引脚上出现中断请求时,不管CPU当前正在做什么事情。都会响应这个中断请求而进入对应的中断处理,可见NMI中断优先级非常高。正因为如此,除了系统有十分紧急的情况以外,应该尽量避免引起这种中断。在实际系统中,非屏蔽中断一般用来处理系统的重大故障,比如系统掉电处理常常通过非屏蔽中断处理程序来执行。
一般外部设备发出的中断都是从CPU的INTR端引入的可屏蔽中断。当CPU接收到一个可屏蔽中断请求信号时,如果标志寄存器中的IF为1,那么,CPU会在执行完当前指令后响应这一中断请求。

可屏蔽中断的响应过程。

​ 当CPU在INTR引脚上接收到一个高电平的中断请求信号,并且当前的中断允许标志为1时,CPU就会在当前指令执行完以后,开始响应外部的中断请求,具体地说,就是CPU往TA引脚发两个负脉冲,外设接口接到第二个负脉冲以后,立即往数据线上给CPU送来中断类型码。CPU在响应外部中断、并进入中断子程序的过程中,要依次做下面几件事:
①从数据总线上读取中断类型码,将其存入内部暂存器。
②将标志寄存器的值推入堆栈
③把标志寄存器的中断允许标志IF和跟踪标志TF清零。将IF清零是为了能够在中断响应过程中暂时屏蔽外部其他中断,以免还没有完成对当前中断的响应过程而又被另一个中断请求所打断。清除TF是为了避免CPU以单步方式执行中断处理子程序。
将断点保存到堆栈中所谓断点,就是指响应中断时,主程序中当前指令下面的一条指令的地址,包括代码段寄存器CS的值和指令指针IP的值。只有保护了断点,才能在中断处理子程序执行完以后,正确返回到主程序继续执行。(保护下一条指令信息)
⑤根据前面得到的中断类型码**,到内存0000段的中断向量表中找到中断向量**,再根据中断向量转入相应的中断处理子程序。比如,中断类型码为0BH,则此中断对应的中断向量的首字节0BH×4=2CH处,**于是CPU在0段的002CH、002DH、002EH、002FH这4个字节中取得中断向量,并将前两个字节中的内容装入IP,将后两个字节中的内容装入CS。**这样,CPU要执行的下一条指令就是中断处理子程序的第一条指令,也就是说,CPU转入了对中断处理子程序的执行。

中断处理子程序

中断处理子程序的功能是各种各样的,但是除去所处理的特定功能外,所有中断处理子程序都有着相同的结构模式,即:
①一开始必须通过一系列推入堆栈指令来进一步保护中断现场,即保护CPU各寄存器的值(当然有时未必需要保存所有寄存器的值)。
②在一般情况下,应该用指令设置中断允许标志IF来开放中断,以允许级别较高的中断请求进入。
中断处理的具体内容,这是中断处理子程序的主要部分。
④中断处理模块之后,是一系列弹出堆栈指令,使得各寄存器恢复进入中断处理时的值。
⑤最后是中断返回指令中断返回指令的执行会使堆栈中保存的断点值和标志值分别装入IP、CS和标志寄存器
中断处理子程序除了结构上的这些特点外,在位置上也有特点,它们在8086系统中,都不是浮动装配的,而是固定装配的。装配的起始地址由中断向量表给出。并且,中断处理子程序通常都常驻内存,即系统一启动,就完成中断处理子程序的装配。

6. 8086的存储器编址和I/O编址

存储器编址

​ 8086有20根地址线,因此,具有2^20=1MB的存储器地址空间。这1MB的内存单元按照00000~FFFFFH来编址。但是8086的内部寄存器包括指令指针和堆栈指针都是16位的,显然用寄存器不能直接对1MB的内存空间进行寻址,为此引入了分段概念。一个段最多可为64KB,在通常的程序设计中,一个程序可以有代码段、数据段、堆栈段和附加段,各段的段地址分别由CS(code segment)、DS(data segment)、SS(stack segment)和ES(extra segment)这4个段寄存器给出。

物理地址的形成因操作而异:

​ 每当取指令时,CPU就会选择代码段寄存器CS,再和指令指针IP的内容一起形成指令所在单元的20位物理地址;而当进行堆栈操作时,CPU就会选择堆栈段寄存器SS,再和堆栈指针SP或者基址指针BP形成20位堆栈地址;当要往内存写一个数据或者从内存读一个数据时,CPU就会选择数据段寄存器DS,然后和变址寄存器SI、DI或者通用寄存器BX中的值形成操作数所在存储单元的20位物理地址。存储器中的操作数可以是1个字节,也可以是1个字。如果是字操作数,那么低位字节放在较低的地址单元,高位字节放在较高的地址单元。

​ 尽管代码段、数据段、堆栈段及附加段都可为64KB,但实际应用中这些段之间可以有互相覆盖的部分。比如:CS=2000i,DS=2100H,则代码段的物理地址为20000~ 2FFFFH;数据段的物理地址为21000~30FFFH。

I/O编址

​ 8086系统和外部设备之间都是通过I/O芯片来联系的。每个I/O芯片都有一个端口或者几个端口,一个端口往往对应了芯片内部的一个寄存器或者一组寄存器。微型机系统要为每个端口分配一个地址,此地址叫端口号。当然,各个端口号不能重复。
8086允许有65535(64K)个8位的I/O端口,两个编号相邻的8位端口可以组合成一个16位端口。指令系统中既有访问8位端口的输入输出指令,也有访问16位端口的输入输出指令。
​ CPU在执行访问I/O端口的指令即输入(IN)指令和输出(OUT)指令时,从硬件上会产生有效的RD信号或者WR信号,同时使M/IO信号处于低电平,通过外部逻辑电路的组合产生对I/O端口的读信号或者对I/O端口的写信号。
​ 系统设计时,也可以通过硬件将I/O端口和存储器==统一编址==,这样就可以用对存储器的访问指令来实现对I/O端口的读写。而对存储器的读写指令的寻址方式很多,功能很强,使用起来也很灵活。当然在这种情况下,CPU访问I/O端口时和访问存储器时的情况一样,从硬件上是在使RD信号或者信号有效的同时,使M/IO信号处于高电平,通过外部逻辑电路的组合,产生对存储器的读信号或者对存储器的写信号。

7. 32位微处理器80386

​ 1985年10月,Intel公司推出了32位微处理器80386。这个新一代的处理器在一个芯片上集成了275000个晶体管,采**用32位数据总线,32位地址总线,直接寻址能力达4GB。**最初的80386芯片采用16MHz时钟,不久,Intel又推出40MHz主频的80386芯片。在16MHz主频下,CPU每秒钟可执行3×10~4×10条指令,其速度可与10年前的大型机相比,80386是微处理器发展的一个里程碑。

工作方式

**实地址:**实地址方式下,存储器中保留两个固定区域,一个为初始化程序区,另一个为中断向量区。前者为FFFFOH~ FFFFFH,后者为00000~003FFH。

**保护方式:**是80386最常用的方式,通常开机或复位后,先进入实地址方式完成初始化,**便立即转到保护方式。**此种方式提供了多任务环境中的各种复杂功能以及对复杂存储器组织的管理机制。只有在保护方式下,80386才充分发挥其强大的功能和本性,因此,也称为本性方式。所谓保护,主要是指对存储器的保护。

虚拟8086方式

8. 8086的寻址方式和指令系统

猜你喜欢

转载自blog.csdn.net/weixin_43742062/article/details/106184558