微型计算机基本系统结构,微型计算机系统结构.ppt

《微型计算机系统结构.ppt》由会员分享,可在线阅读,更多相关《微型计算机系统结构.ppt(30页珍藏版)》请在装配图网上搜索。

1、第2章 8086/8088微型计算机系统结构,2.1 微型计算机系统组成原理,2.1.1 计算机的硬件基本结构,冯 依曼型计算机的基本工作原理可分为程序存储和程序控制。在物理 结构上,计算机由运算器、控制器、存储器以及输入设备和输出设备组成。,计 算 机 基 本 组 成,运算器是对信息进行加工、运算的部件,负责执行算术运算和逻辑运算。 控制器根据程序中的指令发出各种控制信号,使各部件协同工作以完成程序所要求的各种操作。 通常把它们做在1块电路芯片上,称为中央处理器,简称CPU。,计 算 机 基 本 组 成,寄存器是 CPU 内部的存储单元,作用是暂存需要反复使用的数据。,计算机的存储器系统分为。

2、内存与外存,内存可与 CPU 真接相连。外存为软盘、硬盘、光盘等,它不可与CPU直接交换数据,其数据必须先读入内存才可被 CPU 使用,外存在CPU看来是一种 I/0 设备。,CPU一般由寄存器阵列RS、算术逻辑运算单元ALU、控制器和内部总线及缓冲器组成。,存储器是用来存放程序、原始数据和中间结果的记忆装置。,8086/8088 中这个寄存器称为 IP,并且指向下一条要取出的指令而不是要执行的指令。,计 算 机 基 本 组 成,输入设备:用于将程序和原始数据送入计算机中。如 键盘、鼠标等。,输出设备:用来输出运算结果或对外部设备的控制信号。如 显示器、打印机等。,输入设备和输出设备简称为I/。

3、O设备,I/O设备一般不与CPU直接相连,而是通过 称为I/O接口的电路与CPU相连。I/O接口匹配双方的工作速度和转换不兼容的信号。,整个内存储器系统由若干个存储单元组成,每个存储单元可存放8位二进制 数,即1B。为了便于识别,每个存储单元都有1个编号,称为地址。地址采用几位 二进制数编号,取决于CPU地址引脚的数目。,例如:,某CPU有8根地址线,则存储单元应用8位二进制数编号,8位二进制可表示28=256个数,故系统最多可有256个存储单元。如右图所示。,微型计算机是在微处理器的控制下自动进行工作的,而微处理器发出控制的依据则是用户的程序指令。,假设要进行如下运算:3+5-1=?,这一运。

4、算过程分如下步骤进行:,1、取数3。,2、取数5并做3+5运算,得结果8。,3、取数1并做8-1运算,得结果7。,4、保存运算结果到存储器中。,5、停机。,CPU能完成的1个基本动作称为指令,以上运算过程由5条指令实现。,一条指令应包含两个部分:操作码(表示进行什么操作,如:加法)和操作数 (参加运算的数据,如加法运算中的被加数和加数,)这两部分在计算机内都用二 进制数表示,也有少数指令没有操作数,它表示的动作不需要参数或使用固定的参数。,在程序中,若需要处理的数据较多,将数据集中放在内存的一个地方,称为数据 区,而将指令代码集中放在内存的另一个地方,称为代码区。当用户程序装入内存后,只要使程。

5、序计数器PC指向其代码区的起始位置,则下次CPU取指令时即取了用户程序的代码,从而开始执行用户程序。,2.1.2 计算机的基本工作原理,1、PC=00H,从地址00H处取一条指令。设第一条指令占2B,取出后PC自动加2。 CPU随后执行所取指令,指令操作码指出应将操作数3放入累加器A内。,2、PC=02H,从地址02H处取一条指令。设第二条指令占2B,取出后PC自动 加2。CPU随后执行刚才所取指令,指令操作码指出应将操作数5与累加器A的 内容相加,并将结果8暂存A内。,3、PC=04H,从地址04H处取一条指令。设第三条指令占2B,取出后PC自动加2 。CPU随后执行刚才所取指令,指令操作码。

6、指出应将累加器A内容与操作数1相 减,结果7暂存在A内。,4、PC=06H,从地址06H处取一条指令。设第四条指令占2B,取出后PC自动 加2。CPU随后执行刚才所取指令,指令操作码指出应将累加器A中内容保存到 操作数所指定的内存单元中。,5、PC=08H,从地址08H处取一条指令。设第五条指令占1B,取出后PC自动加 1。CPU随后执行刚才所取指令,该指令无操作数,指令操作码指出CPU应暂 停,故CPU不再往下取指令。,假设程序代码放在内存地址00H开始处,执行过程如下:,8086的内部结构按功能分为:,1、总线接口单元BIU,总线接口单元BIU是8086同存储器和I/O设备之间的接口部件,。

7、负责对全部引脚的操作,即8086所有对存储器和I/O设备的操作功能都是由BIU完成的。总线接口单元BIU由20位地址加法器、4个段寄存器、16位指令指针IP、指令队列缓冲器和总线控制逻辑电路等组成。,2.2.1 8086 CPU概述,2.2 8086的编程结构,2、执行单元EU,执行单元EU主要负责执行指令,它包含1个16位的运算器ALU,8个16位的寄存器 ,1个16位标志寄存器FLAGS,1个数据暂存寄存器和执行单元的控制电路。这个单元 进行所有指令的解释和执行,同时管理上述有关的寄存器。,8086中,BIU负责取指令,EU负责执行指令,若指令要求访问内存或I/O设备,由EU请求BIU完成。

8、。BIU将指令机器码取到指令队列缓冲器中(6B),而与此同时EU可以从指令队列缓冲器中取出已有指令进行执行,这样使得取指令和执行指令可以同时进行。这种并行处理技术极大提高了8086的程序执行速度。,当遇到转移、循环、子程序调用或返回等非顺序执行类指令时,需要清空指令 队列缓冲器,这时EU要等待BIU重新取指令。,8086 CPU 内部结构示意图,20位地址加法器,4个段寄存器,16位指令指针IP,指令队列缓冲器,总线控制逻辑电路,执行单元的控制电路,8个16位的寄存器,1个16位标志寄存器FLAGS,1个16位的运算器ALU,1个数据暂存寄存器,8086微处理器内部有14个16位寄存器,这14。

9、个寄存器分为三大类。,8086寄存器,通用寄存器,数据寄存器,变址寄存器,指针寄存器,AX 累加器,BX 基数寄存器,CX 计数寄存器,DX 数据寄存器,SP 堆栈指针寄存器,BP 基址指针寄存器,SI 源变址寄存器,DI 目的变址寄存器,段寄存器,CS 代码段寄存器,DS 数据段寄存器,SS 堆栈段寄存器,ES 附加段寄存器,控制寄存器,IP 指令指针寄存器,FLAG 标志寄存器,2.2.2 8086寄存器结构,1、通用寄存器,通用寄存器用途比较广泛,一般用在算术和逻辑运算指令中,用来存放算术运算 的源/目的操作数,某些通用寄存器还常用来存放存储器操作数的地址。通用寄存器 共8个,包括数据寄。

10、存器4个,指针寄存器2个和变址寄存器2个。,(1)数据寄存器,数据寄存器有4个,这4个寄存器比较特殊,每个均既可作为1个16位寄存器 使用,又可作为两个8位寄存器使用。当用作16位时,称为AX、BX、CX、DX。 当用作8位时,高8位分别称为AH、BH、CH、DH,低8位分别称为AL、BL、 CL、DL。,(2)指针寄存器,指针寄存器有两个,均是16位寄存器。堆栈指针SP用以指出在堆栈操作中 栈顶的位置,入栈(PUSH)和出栈(POP)指令要用到这一位置。基址指针BP指出要处理的数据在堆栈段中的基地址,故称为基址指针寄存器。,(3)变址寄存器,在字符串处理中,被处理的数据称为源操作数,它们的偏。

11、移地址存放在源变址 寄存器SI中,而处理后的字符串的偏移地址则放在目的变址寄存器DI中。,注意,8个通用寄存器一般均可用来存放指令的操作数或保存运算结果,但在某些 操作中又必须专用某个寄存器,如 I/O 操作时必须使用 AX,循环指令中必须使用 CX。 指针和变址实际上是相同的概念,都是存储单元地址,一般指令中用来存放存储单 元的地址可作用 BX、BP、SI、DI 之一,但字符串操作指令中必须使用 SI 和 DI ,而 堆栈操作中必须使用 SP 来存放栈顶单元地址。,2、段寄存器,段寄存器是专用寄存器,用在存储器访问时存放段的基址。,3、控制寄存器,(1)指令指针寄存器,指令指针寄存器IP中存。

12、放着下一条要取出指令的偏移地址,它具有自动加1功能,每取出1B的指令机器码,它就自动加1,使它指向下一个要取的内存单元。这个寄存器由CPU内部使用,CPU正是利用此寄存器才确保程序中的指令能依次执行。程序中不可访问此寄存器,但某些指令具有隐含改变IP的功能,如转移、循环、调用子程序等指令。,(2)标志寄存器,OF 溢出标志位:当补码运算有溢出时,OF为1;否则为0。,标志寄存器FLAG是8086的1个重要寄存器,它是按位使用的。标志寄存器共16位, 8086中只使用了9位。标志寄存器格式如下:,状态标志位有6位,CPU在执行完1条影响标志寄存器的指令中,依据运算结果 的状态对这些进行填写,程序。

13、员可用相关指令查看状态标志位从而得知运算结果的 某些特点。,2.2.3 标志寄存器,控制标志位有3位,其作用是控制CPU执行程序的方式。程序员可用指令改变这些位的值,从而改变CPU运行程序的方式。,DF方向标志位;用以指定字符串处理时的方向,当该位置1时,字符串以递减顺序处理,即地址以从高到低顺序递减。反之,则以递增顺序处理。,IF中断允许标志位:用来控制8086是否允许接收外部可屏蔽中断请求。若IF=1,8086能响应外部可屏蔽中断请求,反之则不响应。,TF 跟踪标志位:是为调试程序而设定的陷井控制位。当该位置1时,8086处于单步状态,此时每执行完1条指令就自动产生1次内部中断。当该位复位。

14、后,8086恢复正常工作。,SF 符号标志位:它和运算结果的最高位相同。,标志寄存器FLAG是8086的1个重要寄存器,它是按位使用的。标志寄存器共16位, 8086中只使用了9位。标志寄存器格式如下:,状态标志位有6位,CPU在执行完1条影响标志寄存器的指令中,依据运算结果 的状态对这些进行填写,程序员可用相关指令查看状态标志位从而得知运算结果的 某些特点。,2.2.3 标志寄存器,AF 辅助进位标志位:当执行1次加法(或减法)运算使结果的低4位向高4位(若为16位运算,则是低8位向高8位)有进位(或借位)时,AF为1;否则为0。该位是为BCD码运算的调整指令而设的。,ZF 零标志位:若当前。

15、的运算结果为零,ZF为1;否则为0。,PF 奇偶标志位:该标志位反映运算结果中1的个数是偶数还是奇数。当指令执行结果的低8位中含有偶数个1时,PF为1;否则为0。,CF 进/借位标志位:当执行1次加法(或减法)运算使最高位向前产生进位(或借位)时,CF为1;否则为0。,6个状态标志位的功能是:,CF 进/借位标志位:当执行1次加法(或减法)运算使最高位向前产生进位 (或借位)时,CF为1;否则为0。,PF 奇偶标志位:该标志位反映运算结果中1的个数是偶数还是奇数。当指令 执行结果的低8位中含有偶数个1时,PF为1;否则为0。,AF 辅助进位标志位:当执行1次加法(或减法)运算使结果的低4位向高。

16、4位 (若为16位运算,则是低8位向高8位)有进位(或借位)时,AF为1;否则为0。 该位是为BCD码运算的调整指令而设的。,ZF 零标志位:若当前的运算结果为零,ZF为1;否则为0。,SF 符号标志位:它和运算结果的最高位相同。,OF 溢出标志位:当补码运算有溢出时,OF为1;否则为0。,01100100 (+100),01100100 (+100),+,11001000,10101011 (-85),11111111 (-1),+,110101010,D7向前无进位,故运算后CF=0;结果超过了+127,有溢出,故OF=1,D7向前有进位,故运算后CF=1;结果不小于-128,无溢出,故O。

17、F=0,进位标志用于无符号数的运算,而溢出标志用于带符号数的运算。注意不要混淆。,如何判断A,B两个数值型数据的大小? 计算A-B, 有符号数,利用SF和OF判断: SFOF=0,即: SF与OF相同, AB; SFOF=1,即: SF与OF相异, AB 。 无符号数,利用CF判断: CF=0,即: 无借位, AB; CF=1,即: 有借位, AB 。,DF方向标志位;用以指定字符串处理时的方向,当该位置1时,字符串 以递减顺序处理,即地址以从高到低顺序递减。反之,则以递增顺序处理。,IF中断允许标志位:用来控制8086是否允许接收外部可屏蔽中断请求。 若IF=1,8086能响应外部可屏蔽中断。

18、请求,反之则不响应。,TF跟踪标志位:是为调试程序而设定的陷井控制位。当该位置1时,8086 处于单步状态,此时每执行完1条指令就自动产生1次内部中断。当该位复位 后,8086恢复正常工作。,3个控制标志位的功能是:,2.3 存储器的使用,2.3.1 存储器的逻辑结构,每个存储器单元可存放1B的数据,即8位二进制数。每个存储单元要有1个惟一地址,以作为CPU访问时的标识。当CPU要访问某个存储单元时,CPU在地址总线上放上目标存储单元的地址,经过地址译码器译码,即可找到相应的单元。,存储器结构示意图,在8086/8088系统中,1个多字节数据在内存中的存放规则为:高字节占 高地址,低字节占低地。

19、址,并且用最低字节的地址代表这个数的地址。,8086/8088 CPU 有20条地址线,因而其发出的地址信号是20位二进制数, 由于每个地址对应1个存储单元,故存储单元的地址也是20位二进制数(由 于20位二进制数写起来太长,所以人们一般改用等价的十六进制表示,即 5位十六进制数)。20 位二进制数可表示 220=1MB,因而8086/8088系统中存储 单元的个数最多为1MB,即8086/8088的寻址空间为1MB。,内存分段使用方案:,分段,即将1MB的内存从逻辑上分为若干个小块,每个小块称为1个段。分段 是逻辑上的概念,不是将内存硬件进行了物理分隔,所以不同的程序可以使用不同 的的分段方。

20、法,而不会对物理内存造成影响。,分段以后,对每个段的存储单元用16位数从0开始重新进行编址,这个地址称为 段内偏移量,简称为偏移量。16位二进制数最多能寻址的空间为216=64KB,故1个段 不能多于64K个存储单元。当段长度达到64KB时,偏移量的范围从0000HFFFFH。,段内偏移量是16位的,解决了运算和存储的问题,但它仅描述了1个存储单元距 离段内首单元的位置偏移,并不能用来绝对定位1个存储单元。但若知道了段内首 单元的20位物理地址,配合偏移量则可实现对段内任一存储单元的绝对定位。,2.3.2 存储器的分段,第1条规则,第2条规则:,1个段只有1个段基址,但每个单元各有自己的偏移量。

21、。,1个段必须从物理地址的最末4位二进制数全为0(即十六进制数最末1位数为0) 的单元开始。这样,段首单元只有前16位需要描述,这16位数称为段基址。,段基址后再补上4个0 (即乘以十六进制的10H),就是这个段首单元的物理地址。,存储器分段,物理地址,这4位为段基址,偏移量,程序中用来描述存储单元位置的地址称为逻辑地址。 逻辑地址的表示:段基址:偏移量 如 1234:0000H, 1234:0001H 等。 由于逻辑地址是两个16位数,可分别被 CPU 所存储或运算。CPU 最终必须使用 物理地址来访问存储器。,逻辑地址向物理地址的转换公式: 物理地址 = 段基址 10H + 偏移量,例如:。

22、逻辑地址 1234:0001H 表示的存储单元的物理地址为:,1234 10H + 0001H = 12341H,(1)段的长度=64K,(2)段只能从物理地址低4位二进制数全为0的单元开始。,分段的规则:,8080/8088有4个段寄存器,其作用就是专门用来存放段基址。,2.3.3 段寄存器的使用,得出:,(1)内存可分为多个段。,(2)段长度可在 16 64 K 个单元之间。,(3)段之间可以重叠,重叠部分的存储单元将有两个或更多个逻辑地址,但由这些 逻辑地址运算出的物理地址是唯一的。,存储单元的逻辑地址可用 “段寄存器名:偏移量” 来表示,如 CS:0011H。,只有段基址装入到段寄存器。

23、中,这个段内的存储单元才可被 CPU 所访问。,SS:堆栈段寄存器,专门用来存放堆栈段的段基址。,ES:附加段寄存器,用来存放附加数据段的段基址。当程序中的数据多于64KB时,仅用1个数据段放不下,此时可再设一附加数据段予以存放。当只有1个数据段时,也可将其段基址放入 ES 而不用 DS,这样访问速度会慢一些。,DS:数据段寄存器,用来存放数据段的段基址。程序中一般将所有要用到的 数据集中在1个段内存放,这个段称为数据段。,CS:代码段寄存器,指令机器码所在段的段基址必须装入到该寄存器中,它 指出了下一条要取出的指令所在段的段基址,而指令指针寄存器 IP 内装的是下一条要取出的指令的段内偏移量。

24、,这两个寄存器配合给出了下一条要取指令的逻辑地址。CPU 在取指令时,总是取自 CS:IP 所指单元。,8086/8088内部有专门的逻辑部件来完成将程序中提交的逻辑地址转换为真正访问存储器时所需的物理地址,这一部件称为20位地址加法器。 地址加法器是将逻辑地址中的段寄存器左移4位(即后面添加4个0,相当于乘以10H),然后再加上逻辑地址中的偏移量,从而计算出物理地址。,段寄存器,加法器,0000,20位地址加法器,段寄存器和偏移地址的寄存器的组合关系存放,堆栈是内存的一个逻辑段,当这个段被指定为堆栈后,可用堆栈操作指令对它 进行特殊规则的访问。 规则: 不论入栈还是出栈,都只能在栈顶进行,堆。

25、栈内数据遵循先进后出,后进先出的原则,即最先入栈的数据最后出来,最后入栈的数据最先出来,数据出栈的顺序与入栈的顺序正好相反。,SS用来存放堆栈段的段基址,由它可定位出堆栈段的起始位置。 SP用于指示堆栈的顶部单元的段内偏移量,开始时堆栈内没有数据,栈顶就是 栈底,故开始时要将栈底单元的偏移量赋给它,以指明栈底位置。随着不断入栈、 出栈,SP不断变化。,2.4 堆栈,2.4.1 堆栈的概念,2.4.2 堆栈的设置,由于堆栈是从高地址向低地址方向增长的,且只能按字进行,故每次入栈,SP 减2,每次出栈,SP 加2。SP 总是指向栈顶位置。,例如:将物理地址为 10000H-12000H 的内存区域。

26、设置为堆栈段,只须令SS = 1000H,SP = 2000H 即可,用如下指令:,MOV AX,1000H MOV SS,AX MOV SP,2000H,主、子程序间的参数如何借助堆栈传递: 主程序将参数依次用 PUSH 指令入栈,而子程序再用同样数的 POP 指令从堆栈中取出即可,这一过程中主、子程序均不用关心参数在内存中的具体位置,只须事先约定好参数的个数及顺序即可。,8086/8088中堆栈操作必须以字为单位进行,堆栈中的数据在堆栈段中从地址 高端向低端依次存放。堆栈操作指令包括入栈指令 PUSH 和出栈指令 POP。 PUSH 的功能:将16位操作数(可为通用寄存器,段寄存器或存储器) 中的1个字数据压入堆栈中。 POP的功能:将堆栈栈顶1个字的内容弹入操作数(可为通用寄存器,段寄存器 DS、ES、SS或存储器)中。,2.4.3 堆栈操作指令,1、8086微处理器为堆栈操作提供了专用指令PUSH、POP; 2、使用专用指令PUSH、POP对堆栈进行操作时,遵循“先进后出”的原则; 3、使用专用指令PUSH、POP对堆栈进行操作时,是以字为单位进行的; 4、栈是内存的一部分,在这点上与其它段无任何区别,因此,其它通用操作指令同样适用于栈; 5、栈底位于高地址单元,栈顶位于低地址单元,当栈顶地址=栈底地址时,栈为空,当SP=0时,栈为满。,2.4.4 堆栈操作规则。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值