计算机组成原理第4章2

上传人:mg****85 文档编号:50736451 上传时间:2018-08-10 格式:PPT 页数:65 大小:628.50KB
返回 下载 相关 举报
计算机组成原理第4章2_第1页
第1页 / 共65页
计算机组成原理第4章2_第2页
第2页 / 共65页
计算机组成原理第4章2_第3页
第3页 / 共65页
计算机组成原理第4章2_第4页
第4页 / 共65页
计算机组成原理第4章2_第5页
第5页 / 共65页
点击查看更多>>
资源描述

《计算机组成原理第4章2》由会员分享,可在线阅读,更多相关《计算机组成原理第4章2(65页珍藏版)》请在金锄头文库上搜索。

1、计算机组成原理与汇编语言程序设计(第2版)第 4 章(2)14.2.1 80x86 CPU的寄存器180x86 CPU的寄存器分类 80x86 CPU的内部寄存器可分为以下3大类: 基本结构寄存器组 :通用寄存器、指令指针寄存器、标志寄存 器、段寄存器。 系统级寄存器组 :系统地址寄存器、控制寄存器、测试寄存器、 调试寄存器。 浮点寄存器组 :数据寄存器、标记字寄存器、指令和数据指针寄 存器、控制字寄存器。4.2 80x86 CPU的寄存器和主存储器P14122基本结构寄存器组基本结构寄存器组如右图 所示:通用寄存器;指令指针寄存器;标志寄存器;段寄存器 。P1423(1)通用寄存器图中除阴影

2、区以外的寄存器是8086/8088和80286所具 有的寄存器,它们都是16位寄存器。其中4个16位的寄存 器AX、BX、CX、DX可称为数据寄存器。这4个寄存器都 是通用寄存器,但它们又可以用于各自的专用目的。AX(Accumulator)作为累加器用。在乘除等指令中 指定用来存放操作数。另外,所有的I/O 指令都使用这一 寄存器与外部设备传送信息。BX(Base)可以作为通用寄存器使用。此外,在计算 存储器地址时,它经常用作基址寄存器。CX(Count)可以作为通用寄存器使用。此外,它还 常用来保存计数值,如在移位指令、循环(LOOP)和串 处理指令中用作隐含的计数器。DX可以作为通用寄存

3、器使用。一般在做双字长运算时 把DX和AX组合在一起存放一个双字长数,DX用来存放 高位字。此外,对某些I/O 操作,DX可用来存放I/O 的端 口地址。 4SP、BP、DI、SI 这4个16位寄存器可以像数据寄存器 一样在运算过程中存放操作数,但它们只能以字(16位) 为单位使用。此外,它们更经常的用途是在存储器寻址时 ,提供偏移地址。因此,可称它们为指针或变址寄存器。(2)指令指针寄存器和标志寄存器IP(Instruction Pointer)为指令指针寄存器,它用来 存放代码段中的偏移地址。IP作为指令的地址指针,其作 用类似于其他计算机中的程序计数器PC,当现行指令执 行完毕时,由IP

4、提供下一条指令地址。FLAGS为标志寄存器,又称PSW(Program Status Word),即程序状态寄存器。这是一个存放条件码标志 、控制标志和系统标志的寄存器。80386及其后继机型的指令指针寄存器EIP和标志寄存 器EFLAGS是32位的,其作用和相应的16位寄存器相同。 5下图说明了80x86 CPU中标志寄存器的内容:P1446 条件码标志包括以下6位:OF(Over Flow Flag) 溢出标志。将参加算术运算的数 看作带符号数,如运算结果超出补码表示数的范围N,即溢 出时,则OF置1;否则OF置0。对于字节运算有 128N+127;对于字运算有32768N+32767。S

5、F(Sign Flag) 符号标志。把指令执行结果看作带符号 数,如结果为负,则SF置1;结果为正,则SF置0。ZF(Zero Flag) 零标志。如指令执行结果各位全为0时 ,则ZF置1;否则ZF置0。CF(Carry Flag) 进位标志。在进行算术运算时,如 最高位(对字操作是第15位,对字节操作是第7位)产生进 位或借位时,则CF置1;否则置0。在移位类指令中,CF用 来存放移出的代码(0或1)。AF(Auxiliary Carry Flag) 辅助进位标志。在进行算 术运算时,如低字节中低4位(第3位)产生进位或借位时, 则AF置1;否则AF置0。AF可用于十进制运算的校正。PF(P

6、arity Flag) 奇偶标志。用来为机器中传送信息时 可能产生的代码出错情况提供检验条件。当运算结果中1的 个数为偶数时置1,否则置0。7 控制标志位1位DF(Direction Flag)方向标志,用来在串处理指令 中控制处理信息的方向。当DF位为1时,每次操作后使变 址寄存器SI和DI减小,这样就使串处理从高地址向低地址 方向处理。当DF位为0时,则使SI和DI增大,使串处理从 低地址向高地址方向处理。 系统标志位有10位: TF(Trap Flag) 陷阱标志,用于调试时的单步方式 操作。IF(Interrupt Flag) 中断标志 。IOPL(I/O Privilege Leve

7、l) I/O特权级标志 。NT(Nested Task) 嵌套任务标志,用来表示当前的 任务是否嵌套在另一任务内。 8RF(Resume Flag) 恢复标志位,它与调试寄存器的 断点一起使用,以保证不重复处理断点。 VM(Virtual-8086 Mode) 虚拟8086模式位 。AC(Alignment Check mode) 对准检查方式位 。VIF(Virtual Interrupt Flag) 虚拟中断标志。VIP(Virtual Interrupt Pending flag) 虚拟中断未决 标志。ID(IDentification flag) 标识标志,程序有设置和 清除ID标识的

8、能力,以指示处理机对CPU ID指令的支持 。 9在调试程序DEBUG中提供了测试标志位的手段,它 用符号表示某些标志位的值: 标标志名标标志为为1标标志为为0OF 溢出(是/否) OVNVDF 方向(增量/ 减量)DNUPIF 中断(允许许/关闭闭)EIDISF 符号(正/负负)NGPLZF 零(是/否)ZRNZAF 辅辅助进进位(是/否)ACNAPF 奇偶(偶/奇)PEPOCF 进进位(是/否)CYNC10(3)段寄存器段寄存器用于存储器寻址,用来直接或间接地存放段 地址。段寄存器的长度为16位,在80286以前的处理器中 ,只有代码段CS(Code Segment)、数据段DS(Data

9、 Segment)、堆栈段SS(Stack Segment)和附加段ES( Extra Segment)4个寄存器。从80386起,增加了FS和GS 两个段寄存器,它们也属于附加的数据段。有关段寄存器 的使用将在下一节中说明。114.2.2 80x86的主存储器1存储单元的地址和内容每8位二进制数组成一个字节,位 编号如图(a)所示。8086、80286的 字长为16位,由两个字节组成,位编 号如图(b)所示。80386Pentium机 的字长为32位,由两个字即4个字节组 成,在80x86系列中称其为双字,位编 号如图(c)所示。此外,还有一种由 8个字节即字长为64位组成的4字,位 编号如

10、图(d)所示。P14612在存储器里以字节为单位存储信息。为了正确地存放或取 得信息,每一个字节单元给予一个唯一的编号即存储器地址, 称为物理地址。地址从0开始编号,顺序地每次加1,因此存储 器的物理地址空间呈线性增长。在机器里,地址也是用二进制 数来表示的。当然它是无符号整数,书写格式为十六进制数。 8086/8088的地址总线20位:可访问的字节单元地址范围为00000HFFFFFH; 80286的地址总线24位:可访问的地址范围为000000HFFFFFFH; 80386/80486和Pentium地址总线32位:地址范围为00000000HFFFFFFFFH; Pentium Pro和

11、P地址总线36位:地址范围为000000000HFFFFFFFFFH。 13一个存储单元中存放的信息称为该存储单 元的内容,右图表示了存储器里存放信息的 情况。0004H号字节单元中存放的信息为78H, 表示为: (0004H)=78H两个字节单元就构成了一个字单元,字单 元的地址采用它的低地址来表示。右图中 0004H字单元的内容为5678H,表示为(0004H)= 5678H双字单元的地址由其最低字节的地址指定, 因此0004H双字单元的内容为:(0004H)=12345678H。 142实模式存储器寻址80x86中除8086/8088只能在实模式下工作外,其他的 CPU均可在实模式或保护

12、模式下工作。(1)存储器的分段实模式下允许的最大寻址空间为1 MB。8086/8088的地 址总线宽度为20位,因而其最大寻址空间正好是1MB。在 1MB的存储器里,每个存储单元都有一个唯一的20位地址 ,称为物理地址。而对于其他微处理器在实模式下只能访 问前1 MB的存储器地址。P14715实模式就是为8086/8088而设计的工作方式,它要解决在16位 字长的机器里怎么提供20位地址的问题,而解决的办法是:将1 MB主存空间划分为若干段,每个段的最大长度为64 KB单元,这 样段内地址可以用16位表示。如果能再提供段的20位起始地址, 那么通过这两个地址就可以访问段内任何一个存储单元。因此

13、, 在CPU中设置的段寄存器只有16位,只能存放20位段起始地址的 高16位,称它为段基值(Segment Base Value),而机器将段起始 地址的低4位设置为0。故将段基值左移4位后(即末尾加4位二进 制数0),就得到一个20位的段起始地址,称它为段基地址或段基 址(Segment Base Address)。显然,段基址为xxxx0H,其低4位 二进制数为0,即能被16整除的主存物理地址才可作为段基址。 段内地址即偏移地址,它是一个主存单元与所在段的段基址 之间的字节距离,通常由CPU按指令的寻址方式计算得到或由指 令指针IP提供,又称为有效地址。当CPU访问某个主存单元时, 必须指

14、明由哪个段寄存器提供段基值,同时给出偏移地址。然后 将16位段基值左移4位后与16位偏移地址相加,形成20位主存单元 的物理地址,这一过程可以表示如下: 16实模式存储器寻址过程如下图所示:17(2)段寄存器在808680286中,有4个专门存放段基值的寄存器,称 为段寄存器。它们分别是代码段CS、数据段DS、堆栈段SS和 附加段ES寄存器。每个段寄存器可以确定一个段的起始地址,而这些段则各 有各的用途。代码段存放当前正在运行的程序。数据段存放当 前运行程序所用的数据。堆栈段定义了堆栈的所在区域。附加 段是附加的数据段,它是一个辅助的数据区,也是串处理指令 的目的操作数存放区。在80386及其

15、后继的80x86中,除上述4个段寄存器外,又 增加了2个段寄存器FS和GS,它们也是附加的数据段寄存器, 所以808680286的程序允许4个存储段,而后继的80x86程序 可允许6个存储段。18一般情况下,各段在存储器 中的分配是由操作系统负责的 。每个段可以独立地占用小于 或等于64 KB的存储区,如右图所示。 19【例】 如果代码段中的程序占有8 KB(2000H )存储区,数据段占有2 KB(800H)存储区 ,堆栈段只占有256 B的存储区,此时段区的 分配如右图所示。从图中可以看出,代码段的区域可以是 02000H03FFFH,但由于程序区只需要8 KB ,所以程序区结束后的第一个小段的首地址就 作为数据段的起始地址。也就是说,在这里, 代码段和数据段可以重叠在一起。当然每个存 储单元的内容是不允许发生冲突的。这里所谓 的重叠只是指每个段区的大小允许根据实际需 要来分配,而不一定要占有64 KB的最大段空 间。20在80x86中,段寄存器和与其对应存放偏移地址 的寄存器之间有一种默认的组合关系,如下表所示: 8086/8088、80286: 段寄存器 偏移地址CSIP SSSP或BP DSBX、SI、DI或一个16位数 ESDI(用于串指令)80386及其后继机型: 段寄存器 偏移地址CSEIP SSESP或EBP DSEAX、EBX、ECX、EDX、EDI、 ES

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号