操作系统研讨1-80386架构的主要寄存器组
80386重要寄存器和数据结构

80386重要寄存器和数据结构描述符(Descriptor)具有固定长度的结构体(struct),共8个字节。
这个结构体保存着一个段基地址的所有信息,包含:1.段基地址2.段长度3.段属性描述符有两种,这两种结构体包含的内容几乎都一样,只有一些细小的差别,这两种描述符分别是:1.非系统描述符:用来描述数据段,代码段和堆栈段的结构;2.系统段描述符:用来描述LDT和TSS的,(LDT和TSS在后面有说明)。
全局描述符表(GDT: Global Descripter Table)顾名思义,它是一个表结构。
这个表存储在内存中,相当于C语言中的一个结构体数组。
数组的每一项就是上面所说的描述符。
GDT在一个多任务系统中一般只设置一个,其基址由一个GDTR确定(GDT靠GDTR定位),GDT地址在设置好之后几乎不会被改变。
这个表中可以包含如下四种信息的描述符:1.全局数据段,代码段和堆栈段信息。
这些段一般由操作系统内核使用。
2.对LDT的描述,这个描述符的基址就是是LDT所在内存中的起始地址3.对TSS的描述,这个描述符的基址是TSS所在内存中的起始地址4.一些门描述符(调用门,中断门等…)。
其中#1属于非系统段描述符,#2 #3 #4属于系统段描述符。
描述符各自的属性值决定了它们具体是哪类描述符。
其中,LDT,TSS属于具体每个任务,一般成对出现在GDT中。
全局描述符表寄存器(GDTR:Global Descripter Table Register)GDTR是一个CPU寄存器,和AX BX.. CS DS...一个概念。
GDTR共48位,包含两部分内容:1.开头32位用来保存一个内存地址,指出GDT在内存中的位置(如果没有开启分页,它就是一个32位的物理地址);2.随后16位为GDT的长度信息,即GDT共有有多少项。
局部描述符表(LDT:Local Descripter Table)与GDT的结构类似,所不同的是,LDT用来描述每个具体用户任务代码段,堆栈段和数据段信息。
80x86CPUCPU的编程结构寄存器结构

的各寄存器和标志寄存器的内容自动设置为:
CS FFFFH DS 0000H SS 0000H ES 0000H IP 0000H 指令队列空 FR 0000H (禁止中断)
因CS=FFFFH,IP=0000,所以8086/8088将从 地址FFFF0H开始执行指令。故8086/8088引导程序 的入口地址在FFF8F0x086HCP。UCPU的编程结构寄存器
80x86CPUCPU的编程结构寄存器 结构
2.1.3 8086/8088内部寄存器(重点)
1、通用寄存器 通用寄存器包括: 数据寄存器、地址指针寄存器、变址寄存器。 数据寄存器包括: AX 、BX 、CX 、DX 。 地址指针寄存器包括: SP 、 BP 。 变址寄存器包括: SI 、 DI 。
结构
程序执行过程
设程序的指令代码已存放在存储器中。为执行程序, CPU按照时钟节拍,产生一系列控制信号,有规则地 重复进行以下过程。 (1)BIU从存储器中取出一条指令存入指令队列。 (2)EU从指令队列取指令并执行指令。BIU利用
总线空闲时间,从内存取第二条指令或取第 三条指令存入指令队列。 (3)EU执行下一条指令。如果前面一条指令有写 存储器的要求,则通知BIU把前条指令结果写 到存储器中,然后再取指令存入指令队列。
为提高CPU的工作效率,8086/8088CPU采用流水 线处理方式,取指令与执行指令同时进行。
一方面提高了执行速率; 一方面降低了与之相配的存储器的存取速度的要求。
80x86CPUCPU的编程结构寄存器 结构
2.1 .1 8086/8088 CPU的编程结构
8086/8088的编程结构分两部分:
80386的寄存器组成

80386的寄存器组成写这篇文章,完全是因为学习保护模式需要这些知识,读者完全可以走马观花,大致看看有什么内容,知道需要的时候来查这篇文章就可以了,完全没有必要抵抗着困意非要把这篇文章认真看完,记住里面每一个寄存器里每一位的定义,但是以后的文章如果需要,一定要记得回来查查相关的内容。
80386共提供7种类型的32位寄存器,如下:1.通用寄存器(EAX、EBX、ECX、EDX、ESP、EBP、ESI、EDI)2.段寄存器(CS、SS、DS、ES、FS、GS)3.指令指针寄存器和标志寄存器(EIP、EFLAGS)4.系统表寄存器(GDTR、IDTR、LDTR、TR)5.控制寄存器(CR0、CR1、CR2、CR3、CR4)6.调试寄存器(DR0、DR1、DR2、DR3、DR4、DR5、DR6、DR7)7.测试寄存器(TR6、TR7)其中后三类寄存器是80386以后的CPU才有的,以前的CPU完全没有。
下图是前四类寄存器的大致示意图:本文只对这些寄存器做一个大致的介绍,其中有些特殊且有较大意义的寄存器,会另文介绍。
一、通用寄存器一组八个通用寄存器是对8086/80286通用寄存器的32位扩展,其用法与在8086/80286中相似,支持8位、16位、32位操作,进行32位操作是,寄存器名称前面冠以“E”。
这八个寄存器的名称如下:EAX(累加器)、EBX(基址)、ECX (计数)、EDX(数据)、ESP(栈指针)、EBP(基址指针)、ESI (源变址)、EDI(目的变址)。
二、段寄存器80386比8086/80286增加了两个段寄存器FS、GS。
除CS支持代码段,SS支持堆栈段外,程序员可以利用其它的所有段寄存器支持数据段。
每个段寄存器对应这一个64位高速缓存器(有些资料中说有96位,但值使用其中的64位),这在8086中是没有的(在80286中为48位),它的具体作用将另文介绍。
三、指令指针寄存器和标志寄存器指令寄存器EIP是对8086/80286指令指针寄存器的32位扩展,它包含着待执行指令的32位偏移量,该值总是相对CS所代表的段基址而言的。
Intel 80386 微处理器的存储器管理

Intel 80386 微处理器的存储器管理一、存储器的管理存储器的管理是一种硬件机制,微处理器在总线地址上对物理存储器进行寻址。
但是,为了给程序提供比物理存储器容量更大的空间,就引入了虚拟存储器的概念,它在外存(比如磁盘)的支持来下实现,通常所说的虚拟地址称为逻辑地址。
对80386来说,既有段的管理又有页的管理。
对段和页的管理属于操作系统的职责,80386从硬件上提供管理机制。
二、Intel 80386 微处理器的三种工作方式三种工作方式:实地址方式,虚地址保护方式,虚拟8086方式。
1. 实地址方式80386在硬件复位后处于该模式下,只能使用32位地址总线的低20位地址,寻址空间为1MB。
此时他就是一个8086/8088微处理器,不同的是它不仅可以运行8086/8088的全部指令,还可以运行32位的运算类指令。
系统初始化区在FFFFFFF0H-FFFFFFFFH存储区内。
设置此方式是为了与8086兼容,也可从实地址方式转变到保护虚地址方式。
物理地址由8386芯片地址引线送出的低的20位地址码,经过存储器译码后选择一个存储单元进行读写,物理地址可用5位的十六进制来表示20位的地址。
储器地址分段是把1MB 的存储器空间分成若干段,每段的容量最大为64KB,每个段首地址的高16位二进制代码就是该段的段号(称段基地址)。
存储器采用分段管理后,段地址存放在段寄存器CS、DS、SS、ES中,对段寄存器设置不同的值来使微处理器的段寄存器指向存储器中不同的段。
偏移地址是相对于某段首地址的段内偏移量。
物理地址的形成,把段地址左移4 位得到段基地址,再加上偏移地址值就形成了20 位的物理地址。
计算表示方式如下:段地址×10H+偏移地址=物理地址80386在实地址方式下的地址转换如图一:2.虚地址保护方式当Intel 80386/486 的控制寄存器CR0 的最低位为PE(Protection Enable)保护模式允许位,用来启动CPU进入虚地址保护方式。
简述8086内部寄存器结构

简述8086内部寄存器结构8086内部寄存器结构是指8086微处理器中用于存储和处理数据的寄存器的组织方式。
8086处理器是Intel公司于1978年推出的一款16位微处理器,是后来x86系列处理器的祖先。
它的内部寄存器结构包括通用寄存器、指针寄存器、索引寄存器、段寄存器和标志寄存器。
首先是通用寄存器,8086处理器有四个16位的通用寄存器,分别是AX、BX、CX和DX。
其中AX寄存器是累加器,用于存储算术运算的结果;BX寄存器是基址寄存器,常用于存储偏移地址;CX 寄存器是计数器,用于循环和计数操作;DX寄存器是数据寄存器,用于存储数据。
其次是指针寄存器,8086处理器有两个16位的指针寄存器,分别是SP和BP。
SP寄存器是堆栈指针寄存器,用于指向堆栈的栈顶;BP寄存器是基址指针寄存器,常用于指向栈帧的基址。
再次是索引寄存器,8086处理器有两个16位的索引寄存器,分别是SI和DI。
SI寄存器是源索引寄存器,常用于指向源操作数;DI 寄存器是目的索引寄存器,常用于指向目的操作数。
然后是段寄存器,8086处理器有四个16位的段寄存器,分别是CS、DS、ES和SS。
CS寄存器是代码段寄存器,用于存储代码段的段地址;DS寄存器是数据段寄存器,用于存储数据段的段地址;ES寄存器是附加段寄存器,常用于存储附加数据段的段地址;SS 寄存器是堆栈段寄存器,用于存储堆栈段的段地址。
最后是标志寄存器,8086处理器有一个16位的标志寄存器,用于存储处理器的状态信息。
标志寄存器中的各位表示不同的状态,如进位标志、零标志、符号标志等。
这些标志位可以被程序读取和设置,用于控制程序的执行。
这些寄存器之间可以相互传递数据,实现数据的存储和处理。
通用寄存器可以进行算术和逻辑运算,指针寄存器和索引寄存器常用于存储和访问内存中的数据,段寄存器用于访问不同的内存段,标志寄存器用于控制程序的执行。
8086内部寄存器结构的合理设计,使得处理器具有较强的数据处理和运算能力,并且能够有效地访问内存中的数据。
8086的内部结构

8086的内部结构
1.寄存器:
8086包含了8个16位的通用寄存器,分为AX、BX、CX、DX、SI、DI、BP和SP。
其中AX寄存器又被分为两个8位的子寄存器AH和AL。
这些寄
存器用于存储数据、地址和控制信息,可以进行各种算术和逻辑操作。
此外,8086还有一些特殊的寄存器,如标志寄存器FLAGS用于存储标志位,IP指令指针寄存器用于存储下一条指令的地址。
2.执行单元:
8086的执行单元包括指令执行单元、算术逻辑单元(ALU)和控制单元。
指令执行单元负责从内存中读取指令,并根据指令的操作码执行相应
的操作。
ALU用于进行算术和逻辑操作,如加减、与或非等。
控制单元用
于控制指令的执行顺序和分支跳转。
3.数据总线和地址总线:
8086有一个16位的数据总线,用于传输数据。
它还有一个20位的
地址总线,用于寻址内存中的数据和指令。
通过这两条总线,8086能够
与外部存储器、输入输出设备等进行数据的读写和通信。
4.总线控制器:
5.输入输出控制器:
6.内存管理单元(MMU):
7.控制信号产生器:
总的来说,8086的内部结构是一个复杂的系统,包括寄存器、执行单元、数据总线和地址总线、总线控制器、输入输出控制器、内存管理单元和控制信号产生器等组件。
这些组件相互协作,使得8086能够进行数据的处理和存储,实现指令的执行和数据的输入输出。
X86寄存器组织结构_图文(精)

3.3 8086/8088CPU的寄存器组织 3.3 8086/8088CPU的寄存器组织控制标志用来控制CPU的操作特征(运行状态) DF(Direction Flag 方向控制标志。
STD;DF=1 可由指令置1/清0 CLD;DF=0 在进行字符串操作时,CPU每执行一条串操作指令,对源或(与目的操作数的地址会自动进行一次调整,其调整准则为 DF= 0,自动递增。
1,自动递减。
3.3 8086/8088CPU的寄存器组织 3.3 8086/8088CPU的寄存器组织 IF(Interrupt Enable Flag 外部可屏蔽中断允许标志。
可由指令置1/清0: STI;IF=1,CPU处于开中断状态。
CLI;IF=0,CPU处于关中断状态。
当IF= 1时,CPU能响应外部可屏蔽中断请求; 0时,CPU不能响应外部可屏蔽中断请求。
IF对外部非可屏蔽中断请求以及CPU内部的中断不起作用.
3.3 8086/8088CPU的寄存器组织 3.3 8086/8088CPU的寄存器组织 TF(Trap Flag 陷井标志。
没有专门的置1/清0指令。
当TF=1时,CPU每执行完一条指令便自动产生一个内部中断(类型为1,转去执行一个中断服务程序,用户可以借助中断服务程序来检查每条指令执行的情况,称为单步工作方式,常用于程序的调试。
8086结构组成

8086结构组成一、简介8086是英特尔(Intel)公司于1978年推出的16位微处理器,是第一款具有高度通用性的微处理器。
8086结构包括各种功能部件,如寄存器组、运算单元、控制单元等。
本文将详细介绍8086的结构组成和各个组成部分的功能。
二、8086结构组成1. 寄存器组8086包含了多个寄存器,用于存储各种数据和地址信息。
寄存器组包括通用寄存器、指令指针寄存器、段寄存器等。
1.1 通用寄存器8086拥有四个16位的通用寄存器:AX、BX、CX、DX。
这些寄存器可以用于存储数据、地址以及进行运算。
1.2 指令指针寄存器指令指针寄存器IP存储当前执行指令的地址,可以进行程序的跳转和控制。
1.3 段寄存器8086采用段寄存器和偏移地址的方式来定位内存中的数据。
段寄存器包括代码段寄存器CS、数据段寄存器DS、堆栈段寄存器SS和附加段寄存器ES。
2. 运算单元8086拥有一个功能强大的运算单元,可以执行各种运算和逻辑操作。
运算单元包括算术逻辑单元ALU、标志寄存器FLAGS等部件。
2.1 算术逻辑单元(ALU)ALU是8086中重要的组成部分,负责执行各种算术和逻辑运算,如加法、减法、与、或等。
2.2 标志寄存器(FLAGS)FLAGS寄存器用于存储运算结果的状态信息,包括进位标志、零标志、溢出标志等。
这些标志位可以帮助程序进行条件分支和判断。
3. 控制单元控制单元是8086中负责控制和协调各个部件工作的组成部分。
主要包括指令译码器、时钟发生器等。
3.1 指令译码器指令译码器用于解析指令,将指令转化为相应的控制信号,控制其他部件的工作。
3.2 时钟发生器时钟发生器为8086提供稳定的时钟信号,用于同步各个部件的工作,确保指令能够按序执行。
4. 外部接口8086能够与外部设备进行通信,包括输入输出接口和存储器接口。
4.1 输入输出接口输入输出接口负责将内部数据和外部设备进行数据交换,通过输入输出指令控制。
8086系统结构与8086CPU详解

8086系统结构与8086CPU详解8086是Intel公司于1978年推出的16位微处理器,是第一个被广泛应用于个人电脑的微处理器。
指令执行单元是8086的核心部分,它包括指令队列和执行单元。
指令队列用于存储将要执行的指令,执行单元根据指令队列中的指令来执行相应的操作。
8086采用流水线执行模式,使指令的执行更高效。
8086有14个寄存器,其中有4个通用寄存器AX、BX、CX和DX,其分别可以作为数据寄存器、地址寄存器、指针寄存器和变址寄存器使用。
AX寄存器可以拆分为两个独立的8位寄存器AH和AL,分别用于存储高8位和低8位数据。
除了通用寄存器外,8086还有4个段寄存器CS、DS、ES和SS,用于存储程序的代码段、数据段和堆栈段的物理地址。
内存管理单元用于实现8086的内存管理功能。
8086采用分段分页的内存管理模式,通过段寄存器和偏移地址来访问内存。
段寄存器存储段的起始地址,偏移地址表示从段起始地址开始的偏移量。
通过这种方式,8086可以寻址1MB的内存空间。
8086使用外部总线与其他设备进行通信。
它包括地址总线、数据总线和控制总线。
地址总线用于传输地址信息,数据总线用于传输数据,控制总线用于传输控制信号。
8086的地址总线宽度为20位,可以寻址1MB的内存空间。
除了系统结构,了解8086的CPU结构也是很重要的。
8086包括指令流水线、ALU、寄存器组、时钟和控制单元等部分。
指令流水线用于提高指令执行的效率,将指令的执行过程分为取指令、译码、执行和写回四个阶段,并行地执行不同的指令。
ALU(算术逻辑单元)用于进行算术和逻辑运算。
寄存器组包括通用寄存器和段寄存器,用于存储数据和地址信息。
8086的时钟是由外部提供的,它通过时钟和控制单元来对指令的执行进行控制。
总的来说,8086的系统结构和CPU结构共同组成了一个完整的微处理器系统。
通过了解其结构,可以更好地理解8086的工作原理和性能特点,为编程和系统设计提供指导。
80386学习(一)80386CPU介绍

80386学习(⼀)80386CPU介绍⼀.80386CPU介绍 Inter80386CPU是Inter公司于1985年推出的第⼀款32位80x86系列的微处理器。
80386的数据总线是32位的,其地址总线也是32位,因⽽最⼤可寻址4GB的存储空间。
80386作为x86系列CPU的⼀员,保持着对更早⽣产的x86CPU的向前兼容。
80386在当时主要为⽀持⾼性能的应⽤领域和多⽤户、多任务操作系统⽽设计,提供了硬件级的特权级保护、多任务切换、内存分页等功能。
80386有三种运⾏模式:实模式、保护模式和虚拟8086模式。
在实模式下,80386和8086的⾏为保持⼀致,只能访问20位(1M)的地址空间,内部实际32位的寄存器也只有低16位有效。
实模式主要是为了兼容运⾏在8086CPU上的程序,所以80386加电后,默认就运⾏在实模式下。
要想充分发挥80386的对于多任务的⽀持功能,需要使80386进⼊保护模式。
保护模式是80286以及后续的x86CPU都具有的⼀种⼯作模式。
保护模式下的80386内存寻址范围达到了硬件设计的上限:2^32byte,即4GB。
保护模式提供了诸如内存保护、内存分页机制以及硬件虚拟存储管理等功能,为多⽤户。
多任务的⾼效、可靠、安全的操作系统实现提供了良好的⽀持。
因此,主流的现代操作系统例如Linux、Windows(Windows95及以后)其内核均运⾏在x86的保护模式之上。
虚拟8086模式的⼯作模式介于实模式和保护模式之间,虚拟8086⽀持多任务、内存分页等功能。
但运⾏的每⼀个独⽴任务均处于实模式之下。
虚拟8086这⼀模式由于其中庸性,应⽤范围相对较⼩。
⼆.80386对于8086的主要改进 80386能够兼容的运⾏之前在8086、80286CPU上运⾏的程序,但80386⽐起16位的8086CPU⽆论是性能还是功能上都有质的提升。
性能⽅⾯的主要改进:更宽的数据总线和地址总线 扩展到32位的地址总线使得80386能够访问更⼤的地址空间,同时32位的数据总线⽐起8086的16位也增加了数据的传输速度。
汇编语言8086和8088中寄存器

1980年代,汇编语言8086和8088在个人电脑中广泛应用。
这两种语言使用16位和8位寄存器,这些寄存器是编程中不可或缺的组成部分。
接下来我将根据这两种汇编语言的寄存器,深入探讨其特性和用途,帮助你全面了解这一主题。
一、汇编语言8086和8088中寄存器的基本概念在汇编语言8086和8088中,寄存器是一种保存数据的特殊存储器。
它们用于存储指令中的临时数据和位置区域。
这两种汇编语言使用的寄存器包括通用寄存器、段寄存器和指令指针寄存器。
通用寄存器用于存储操作数和中间结果,段寄存器用于存储内存访问的段位置区域,指令指针寄存器用于存储当前执行指令的位置区域。
二、8086和8088中的通用寄存器1. AX寄存器AX寄存器是一个16位的累加器,用于存储算术运算的结果。
在8086和8088中,它可以分为AH和AL两个8位寄存器,分别存储较高位和较低位的数据。
2. BX寄存器BX寄存器是一个16位的基址寄存器,用于存储数据的基址。
在8086和8088中,它也可以分为BH和BL两个8位寄存器。
3. CX寄存器CX寄存器是一个16位的计数寄存器,用于存储循环次数。
在8086和8088中,它可以分为CH和CL两个8位寄存器。
4. DX寄存器DX寄存器是一个16位的数据寄存器,用于存储I/O端口的数据。
在8086和8088中,它也可以分为DH和DL两个8位寄存器。
三、8086和8088中的段寄存器1. CS寄存器CS寄存器是一个16位的代码段寄存器,用于存储当前执行代码段的基位置区域。
在8086和8088中,它存储着指向当前代码段的位置区域。
2. DS寄存器DS寄存器是一个16位的数据段寄存器,用于存储当前数据段的基位置区域。
在8086和8088中,它存储着指向当前数据段的位置区域。
3. SS寄存器SS寄存器是一个16位的堆栈段寄存器,用于存储当前堆栈段的基位置区域。
在8086和8088中,它存储着指向当前堆栈段的位置区域。
80386控制寄存器和系统地址寄存器

80386控制寄存器和系统地址寄存器如下表所示。
它们用于控制工作方式,控制分段管理机制及分页管理机制的实施。
控制寄存器CRxBIT31BIT30—BIT12BIT11—BIT5BIT4BIT3BIT2BIT1BIT0CR0PG0000000000000000ETTSEMMPPECR1保留CR2页故障线性地址CR3页目录表物理页码080386控制寄存器和系统地址寄存器如下表所示。
它们用于控制工作方式,控制分段管理机制及分页管理机制的实施。
<一>控制寄存器从上表可见,80386有四个32位的控制寄存器,分别命名位CR0、CR1、CR2和CR3。
但CR1被保留,供今后开发的处理器使用,在80386中不能使用CR1,否则会引起无效指令操作异常。
CR0包括指示处理器工作方式的控制位,包含启用和禁止分页管理机制的控制位,包含控制浮点协处理器操作的控制位。
CR2及CR3由分页管理机制使用。
CR0中的位5—位30及CR3中的位0至位11是保留位,这些位不能是随意值,必须为0。
控制寄存器CR0的低16位等同于80286的机器状态字MSW。
1.保护控制位控制寄存器CR0中的位0用PE标记,位31用PG标记,这两个位控制分段和分页管理机制的操作,所以把它们称为保护控制位。
PE控制分段管理机制。
PE=0,处理器运行于实模式;PE=1,处理器运行于保护方式。
PG控制分页管理机制。
PG=0,禁用分页管理机制,此时分段管理机制产生的线性地址直接作为物理地址使用;PG=1,启用分页管理机制,此时线性地址经分页管理机制转换位物理地址。
关于分页管理机制的具体介绍在后面的文章中进行。
下表列出了通过使用PE和PG位选择的处理器工作方式。
由于只有在保护方式下才可启用分页机制,所以尽管两个位分别为0和1共可以有四种组合,但只有三种组合方式有效。
PE=0且PG=1是无效组合,因此,用PG为1且PE为0的值装入CR0寄存器将引起通用保护异常。
80386程序参考手册第一章

80386详细介绍注:本文翻译自《INTEL 80386 PROGRAMMER'S REFERENCE MANUAL 1986》第一章节。
By Hi_Cracker @ whu80386是一种先进的32位微处理器,它针对多任务操作系统以及其他对性能要求很高的特殊应用进行了特别的优化。
32位的寄存器和数据路径,支持32位的地址和32位的数据类型。
该处理器可以寻址4 GB的物理内存,支持64TB(2^46字节)的虚拟内存。
片上内存管理设施包括地址转换寄存器,先进的多任务硬件保护机制,虚拟内存分页机制。
特别是调试寄存器,即使针对那些基于ROM的软件,它也可以提供数据断点或代码断点。
1.1本手册的组织形式本指南将会从5个方面来展示80386的体系架构:Part 1 -----应用程序编程Part 2 -----系统编程Part 3 -----兼容性问题Part 4 -----指令系统附录编写手册时,根据CPU架构本身的特点以及这本手册的不同用途划分了这5个部分。
在上述列出的5个部分中,后两部分可以作为80386软件开发者的参考材料。
前三部分是解释性的,主要介绍了80386的架构特点,开发术语以及开发理念,描述了一些具有特定目的或者与特定架构相关的指令.前三个部分的介绍主要是涉及了80386 CPU的执行模式和保护功能。
应用程序编程和操作系统编程之间的区别是通过80386的保护机制体现出来的。
保护的目的之一是为了防止应用程序对操作系统造成干扰;因此,处理器使用了一些特定的寄存器和指令,这些寄存器和指令不能应用于一般的应用程序中。
第一部分讨论的功能无论是对一般的应用程序编写还是系统级软件的编写都是适用的;在第二部分中讨论到的的功能只适用于那些已被授与特权的系统软件,或适用于不受保护的系统。
80386的工作模式还确定了cpu访问存储器的方式。
80386有三种工作模式:1,保护模式2,实地址模式3,虚拟8086模式保护模式是32位80386处理器的默认工作模式。
列举8086cpu中的寄存器

列举8086cpu中的寄存器8086 CPU是英特尔公司在1978年推出的一款16位微处理器,它是x86架构中最早的一款CPU。
在8086 CPU中,有许多寄存器,这些寄存器用于存储数据、地址等信息。
下面将列举8086 CPU中的寄存器。
一、通用寄存器1. AX寄存器:AX寄存器是8086 CPU中最重要的寄存器之一,它可以被分成两个8位的子寄存器AH和AL。
AH和AL分别称为高位和低位,它们可以独立使用也可以组合使用。
AX寄存器主要用于算术运算和数据传输。
2. BX寄存器:BX寄存器也是一个通用寄存器,它同样可以被分成两个8位的子寄存器BH和BL。
BH和BL也可以独立使用或者组合使用。
BX寄存器主要用于保存内部数据指针(如基址指针)。
3. CX寄存器:CX寄存器同样是一个通用寄存器,它也可以被分成两个8位的子寄存器CH和CL。
CH和CL也可以独立使用或者组合使用。
CX寄存器主要用于循环计数。
4. DX寄存器:DX寄存器也是一个通用寄存器,它同样可以被分成两个8位的子寄存器DH和DL。
DH和DL也可以独立使用或者组合使用。
DX寄存器主要用于输入输出操作。
二、指针寄存器1. SP寄存器:SP寄存器是栈指针寄存器,它用于指向栈顶。
在进行函数调用、中断处理等操作时,SP寄存器会被自动修改。
2. BP寄存器:BP寄存器是基址指针寄存器,它主要用于保存堆栈底部的地址。
在进行函数调用、中断处理等操作时,BP寄存器会被自动修改。
三、段寄存器1. CS寄存器:CS寄存器是代码段寄存器,它保存了程序代码所在的段地址。
2. DS寄存器:DS寄存器是数据段寄存器,它保存了数据所在的段地址。
3. SS寄存器:SS寄存器是堆栈段寄存器,它保存了堆栈所在的段地址。
4. ES/FS/GS等其他段选择子:ES/FS/GS等其他段选择子也是用来保存不同类型数据所在的地址信息。
四、标志位8086 CPU中还有一些标志位,这些标志位记录了CPU运算过程中产生的状态信息。
80868088微处理器处理器结构和内部工作原理

④在执行转移指令、调用指令和返回指令时,由于待执行指令的顺序发 生了变化,则指令队列中已经装入的字节被自动消除,BIU会接着往指 令队列装入转向的另一程序段中的指令代码。
8088的指令执行过程
小结
1、本讲内容 • 8088(8086)微处理器的内部结构(两大功能模块) • 8088(8086)的编程结构(14个内部寄存器) • 8088(8086)的存储器组织(分段、物理地址的形成) • 8088(8086)的内部工作原理(EU、BIU协调工作)
进行逻辑分段,每个 00000H
A段
逻辑段≤64K, 1M的 10000H
B段
空间分成16个逻辑段 20000H
(0~15)。允许它们 在整个存储空间浮动 ,即段与段之间可以 部分重叠、完全重叠
30000H 40000H
……
、连续排 部分重叠
C段
D段
E段
完全重
11230H 11231H 11232H
加法器 19
20位物理地址
偏移量 13H
段基址 1124H
……
1123FH 11240H
0
偏移量
11241H
03H
11242H
8086物理地址PA的形成, 其中的16位偏移量也称为有效地址
EA(出现在指令中)
11243H 物理地址PA与逻辑地址LA
8086的存储器组织
在寻址一个具体的物理单元时,必须要由一个基地址再加上 SP或IP或BP或SI或DI等可由CPU处理的16位偏移量来形成实际的 20位物理地址。
IP CS
代码段
SI、DI或BX DS
80486cpu的内部基本寄存器的组成

xxx CPU是一款由英特尔公司推出的一款x86架构的微处理器,广泛应用于个人计算机及相关设备中。
在xxx CPU中,内部基本寄存器扮演着非常重要的角色,它们对于CPU的运行起着至关重要的作用。
下面,我将针对xxx CPU内部基本寄存器的组成进行详细的介绍。
1. 通用寄存器在xxx CPU中,有8个32位的通用寄存器,分别为EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP。
这8个寄存器可以进行多种操作,比如进行算术运算、逻辑运算、存储临时数据等。
其中EAX寄存器通常用于存放函数的返回值,EBX寄存器通常用于存放基址,ECX寄存器通常用于循环计数器,EDX寄存器通常用于I/O操作等。
ESI和EDI 寄存器通常用于存放指针位置区域,EBP和ESP寄存器通常用于函数调用和堆栈操作。
2. 段寄存器在xxx CPU中,有4个段寄存器,分别为CS、DS、SS和ES。
这些段寄存器用于存放段选择子,通过段选择子可以确定内存中的具体位置区域,实现了对内存的管理和访问。
CS寄存器通常用于存放代码段的选择子,DS寄存器通常用于存放数据段的选择子,SS寄存器通常用于存放栈段的选择子,ES寄存器通常用于存放额外数据段的选择子。
3. 标志寄存器在xxx CPU中,有4个标志寄存器,分别为EFLAGS、FLG1、FLG2和FLG3。
这些标志寄存器记录了CPU运行状态的各种标志位,比如进位标志、零标志、符号标志、溢出标志等。
这些标志位可以用于控制和判断CPU的运行状态,实现了对程序的逻辑判断和控制。
4. 控制寄存器在xxx CPU中,有4个控制寄存器,分别为CR0、CR2、CR3和CR4。
这些控制寄存器用于存放控制寄存器的值,通过这些值可以控制CPU的某些特性和工作模式。
比如CR0寄存器用于存放系统控制标志,在保护模式下可以控制分页机制、虚拟内存等;CR2寄存器用于存放页面故障线性位置区域寄存器的值,用于页面错误处理等;CR3寄存器用于存放页目录表的基址,用于分页机制的控制等;CR4寄存器用于存放保护模式控制标志,用于控制CPU的某些保护模式特性等。
8086所有寄存器简介

首先浅要介绍一下 Intel CPU 的发展史吧:Intel CPU 系列,最初是 4 位微处理器 4004,然后到到 8 位微处理器的 8008 ,再到 8 微微处理器 8080,以及稍后的 16 位微处理器 8086,由 8086 开始,Intel 进入现在所谓的 x86 时代。
Intel 8086 为 16 位 CPU ,而因为在 8086 之前的 CPU 都是 8 位 CPU,这样也就造成了很多的外设也只支持 8 位,因此 Intel 紧接着就退出了 8 位的 8088 CPU,因此 Intel 8088 也就可以看做是 8086 的 8 位版本;如果是但从汇编语言的角度上来说,8086 和 8088 是没有区别的,即 8086 上跑的程序可以不加修改的移植到 8088 ,8088 上跑的程序也可以不加修改的移植到 8086 上,当然,还是有些特殊的地方是不同的,而这些基本上在这里可以忽略掉,在 8088 CPU 之后,Intel 又推出了 80186 ,80286 ,这两款 CPU 均是 16 位 CPU ,而对于 80186 来说,其与 8086 的区别可以简单的看做是 80186 多了几条指令而已,而 80286 则不同,80286 的地址总线数目有了变化,在 8086 , 8088 , 80186 上,CPU 的地址总线都是 20 根,即可最大寻址 220 即达到 1MB 的寻址能力,而对于 80286 CPU 来说,其地址总线数目达到了 24 根,从而最大寻址能力为 224即 16MB,由于支持更多的物理内存寻址,因此 80286 便开始成为了多任务,多用户系统的核心。
而后来,Intel 又推出了 80386 ,80386 为 32 位微处理器,Intel 80x86 家族的 32 位微处理器始于 80386;同时 80386 也完全兼容先前的 8086/8088,80186,80286,并且 80386 全面支持 32 位数据类型和 32 位操作,并且 80386 的数据总线根数和地址总线根数均达到了 32 根,从而可以最大物理寻址为 232 即 4GB 。
80X86寄存器及存储器结构介绍

三、控制寄存器
16位的寄存器,其中9个位是标志位,代表了系统运行 的状态。
80X86寄存器
湖南大学 赵欢 hzhao@ 4
FLAG寄存器的各个位
15 12 11 10 9 IF 8 7 6 ZF 5 4 AF 3 2 PF 1 0 CF OF DF TF SF
OF、SF、ZF、AF、PF、CF均受算术逻辑运算指令的影响;
3、变址寄存器
SI:源变址寄存器 DI:目的变址寄存器
它们常用于串操作,当然也可存放数据。
80X86寄存器
湖南大学 赵欢 hzhao@ 3
二、段寄存器
CS:代码段寄存器
SS:堆栈段寄存器 DS:数据段寄存器 ES:附加段寄存器 IP:指令指针寄存器 与CS一起指向程序中下一条要执行的指令 FLAG:标志寄存器
湖南大学 赵欢 hzhao@ 5
80X86寄存器
8088有20根地址线,8根数据线。 基本内存配置 具有:220=1M个内存单元 每个单元:8 bits
与地址有关的寄存器CS、SS、DS、ES、IP、SP
BX、BP、SI、DI均是16位的。
16位的寻址能力如何访问1MB的空间?
1、数据寄存器
AX:累加器 BX:基址寄存器
CX:计Βιβλιοθήκη 寄存器DX:数据寄存器它们均可以拆分成两个8位的寄存器进行访问
80X86寄存器
湖南大学 赵欢 hzhao@ 2
2、指针寄存器
SP:堆栈指示器,也称栈顶指针。与堆栈段寄存器SS一起 寻址栈顶单元。 BP:基址指示器。常与SS一起寻址堆栈中的非栈顶单元。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
80386架构的主要寄存器组
简介-Intel CPU的发展史
早期:
4位微处理器:4004, 8位微处理器:8008,8080
x86时代:
16位微处理器(20地址总线):8086,8088(8位),80186(2^20即: 寻址能力为1MB) 16位微处理器(24地址总线):80286(2^24即寻址能力为16MB,多任 务,多系统) 32位微处理器(32地址总线):80386(2^32即寻址能力为4GB,全面支 持32位数据类型和32位操作),80486 第五代微处理器:Pentium 和Pentium Pro等(32位微处理器,区别在 于数据总线和地址总线有所拓展,比如 Pentium 的数据总线达到 64 位,而 Pentium Pro 的地址总线位数达到了36位。)
PE(Protection Enable)保护模式允许,PE=0表示CPU工作在实模式, PE=1表示CPU工作在保护模式 MP(Monitor Coprocessor)监控协处理器,MP=1表示协处理器在工作, MP=0表示协处理器未工作。 EM(Emulation)协处理器仿真,当MP=0,EM=1时,表示正在使用软件仿 真协处理器工作。 TS(Task Switched)任务转换,每当进行任务转换时,TS=1,任务转换 完毕,TS=0。TS=1时不允许协处理器工作。 以上4个定义从80286开始,下面的2个定义从80386开始存在: ET(Extension Type)处理器扩展类型,反映了所扩展的协处理器的类 型,ET=0为80287,ET=1为80387。 PG(Paging)页式管理机制使能,PG=1时页式管理机制工作,否则不工 作
寄存器简介
不同的 CPU ,寄存器的个数和结构都是不一样的。 比如 8086 CPU 中,寄存器的个数也就 14 个而已, 并且 8086 CPU 中所有的寄存器的结构为 16 位, 即一个寄存器中可以存放下 2 B 即 2 个字节。 而到了 80386 CPU 中,寄存器的个数也比 8086 增多了,比如在 80386 中添加了系统地址寄存器 等寄存器,同时寄存器的结构也变了,比如在 80386 中绝大多数的寄存器为 32 位,而有些寄存 器则是 16 位 。
详细介绍——通用寄存器
一组八个通用寄存器是对8086/80286通用寄存 器的32位扩展,其用法与在8086/80286中相似, 支持8位、16位、32位操作,进行32位操作是, 寄存器名称前面冠以“E”。
这八个寄存器的名称如下: EAX(累加器)、EBX(基址)、ECX(计数)、 EDX(数据)、ESP(栈指针)、EBP(基址指 针)、ESI(源变址)、EDI(目的变址)。
详细介绍——调试寄存器
一共有8个调试寄存器DR0--DR7: DR0-DR3可以分别设置4个断点的线性地址 DR4-DR5保留未用
DR6是断点状态寄存器
DR7是断点控制寄存器(包括断点类型、断点长 度,断点开放/禁止)
详细介绍——测试寄存器
一共有8个测试寄存器TR0--TR7: TR0-TR2保留 TR3-TR5用作CACHE测试
前四类寄存器大致示意图
通用寄存器(EAX、EBX、 ECX、EDX、ESP、EBP、 ESI、EDI) --------------------
段寄存器(CS、SS、DS、 ES、FS、GS) -------------------指令指针寄存器和标志 寄存器(EIP、EFLAGS) -------------------系统表寄存器(GDTR、 IDTR、LDTR、TR)
TR6为命令测试寄存器
TR7为测试数据寄存器
总结
以上只是对这些寄存器做一个大致的介绍, 其中有些特殊且有较大意义的寄存器希望大家 自行查阅相关资料了解,谢谢!
详细介绍——指令指针寄存器
指令寄存器EIP是对8086/80286指令指针寄存 器的32位扩展,它包含着待执行指令的32位偏 移量,该值总是相对CS所代表的段基址而言的。
详细介绍——标志寄存器
标志寄存器也是对8086/80286标志寄存器的32 位扩展,其定义如下图:
详细介绍——标ቤተ መጻሕፍቲ ባይዱ寄存器
其中OF、DF、IF、TF、SF、ZF、AF、PF和CF在8086中 就已经存在。 IOPL(I/O Privilege Level)是从80286开始出现的, 占2个bit表示I/O特权级,如果当前特权级小于或等于 IOPL,则可以执行I/O操作,否则将出现一个保护性异 常。IOPL只能由特权级为0的程序或任务来修改。 NT(Nested Task)也是从80286开始出现的,表示嵌 套任务,用于控制中断返回指令IRET,当NT=0时,用堆 栈中保存的值恢复EFLAGS、CS和EIP,从而实现返回; 若NT=1,则通过任务切换实现中断返回。
详细介绍——标志寄存器
下面的标志位是80386以后的CPU才有的标志:
VM(Virtual-8086 mode)表示虚拟8086模式,如果VM被置位且80386已 出于保护模式下,则CPU切换到虚拟8086模式,此时,对段的任何操作又 回到了实模式,如同在8086下运行一样。 RF(Resume flag)表示恢复标志(也叫重启标志),与调试寄存器一起用 于断点和单步操作。 AC(Alignment check)表示对齐检查。这个标志是80486以后的CPU才有 的。 以下的三个标志是Pentium以后的CPU才有的: VIF(Virtual interrupt flag)表示虚拟中断标志。 VIP(Virtual interrupt pending flag)表示虚拟中断挂起标志。 ID(Identification flag)表示鉴别标志。该标志用来只是Pentium CPU是否支持CPUID的指令。
详细介绍——系统表寄存器
80386 中有4个系统表寄存器,分别是全局描述 符表寄存器(GDTR)、中断描述符表寄存器 (IDTR)、局部描述符表寄存器(LDTR)、任务状 态寄存器(TR)。
系统表寄存器用于在保护方式下,管理4个系统 表,由于只能在保护方式下使用,因此又称为 保护方式寄存器。
详细介绍——控制寄存器
80386的控制寄存器有4个,其中CR1保留以后使用,从Pentium开 始,又增加了一个CR4,CR0的低16位包含了与80286的MSW一致的 位定义,保持了和80286的兼容,同时也兼容了从80286开始的两 条指令LMSW/SMSW,其基本定义如下:
详细介绍——控制寄存器
CR0中各位含义如下:
寄存器简介
寄存器就是个存储信息的单元或者说是器件又或者 说是容器而已,就比如内存也是一个存储介质或者 说是存储单元而已,其实寄存器从理解上来说和内 存差不多,只不过寄存器(这里讨论的寄存器都是 CPU 中的寄存器,不包括外设上的寄存器)位于 CPU内部,而内存位于 CPU 外部。 而且,寄存器比内存珍贵得多,就拿内存和硬盘来 比,内存在使用上珍贵得多,是PC中的稀有资源, 而寄存器是 CPU 中的稀有资源,内存和寄存器相 比就像硬盘和内存相比一样 。
80386架构的主要寄存器组
80386共提供7种类型的32位寄存器,如下:
1. 通用寄存器(EAX、EBX、ECX、EDX、ESP、EBP、ESI、EDI)
2. 段寄存器(CS、SS、DS、ES、FS、GS)
3. 指令指针寄存器和标志寄存器(EIP、EFLAGS)
4. 系统表寄存器(GDTR、IDTR、LDTR、TR) 5. 控制寄存器(CR0、CR1、CR2、CR3、CR4) 6. 调试寄存器(DR0、DR1、DR2、DR3、DR4、DR5、DR6、DR7) 7. 测试寄存器(TR6、TR7)
详细介绍——段寄存器
80386比8086/80286增加了两个段寄存器FS、GS。
除CS支持代码段,SS支持堆栈段外,程序员可 以利用其它的所有段寄存器支持数据段。 每个段寄存器对应这一个64位高速缓存器(有 些资料中说有96位,但值使用其中的64位), 这在8086中是没有的(在80286中为48位)。