X86寄存器组织结构_图文(精)

合集下载

x86的控制寄存器CR0,CR1,CR2,CR3

x86的控制寄存器CR0,CR1,CR2,CR3

x86的控制寄存器CR0,CR1,CR2,CR3状态和控制寄存器组除了EFLAGS、EIP ,还有四个32位的控制寄存器,它们是CR0,CR1,CR2和CR3。

这⼏个寄存器中保存全局性和任务⽆关的机器状态。

CR0中包含了6个预定义标志,0位是保护允许位PE(Protedted Enable),⽤于启动保护模式,如果PE位置1,则保护模式启动,如果PE=0,则在实模式下运⾏。

1位是监控协处理位MP(Moniter coprocessor),它与第3位⼀起决定:当TS=1时操作码WAIT是否产⽣⼀个“协处理器不能使⽤”的出错信号。

第3位是任务转换位(Task Switch),当⼀个任务转换完成之后,⾃动将它置1。

随着TS=1,就不能使⽤协处理器。

CR0的第2位是模拟协处理器位 EM (Emulate coprocessor),如果EM=1,则不能使⽤协处理器,如果EM=0,则允许使⽤协处理器。

第4位是微处理器的扩展类型位ET(Processor Extension Type),其内保存着处理器扩展类型的信息,如果ET=0,则标识系统使⽤的是287协处理器,如果 ET=1,则表⽰系统使⽤的是387浮点协处理器。

CR0的第31位是分页允许位(Paging Enable),它表⽰芯⽚上的分页部件是否允许⼯作。

CR1是未定义的控制寄存器,供将来的处理器使⽤。

CR2是页故障线性地址寄存器,保存最后⼀次出现页故障的全32位线性地址。

CR3是页⽬录基址寄存器,保存页⽬录表的物理地址,页⽬录表总是放在以4K字节为单位的存储器边界上,因此,它的地址的低12位总为0,不起作⽤,即使写上内容,也不会被理会。

这⼏个寄存器是与分页机制密切相关的,因此,在进程管理及虚拟内存管理中会涉及到这⼏个寄存器,读者要记住CR0、CR2及CR3这三个寄存器的内容控制寄存器(CR0~CR3)⽤于控制和确定处理器的操作模式以及当前执⾏任务的特性,如图4-3所⽰。

寄存器结构、存储器管理

寄存器结构、存储器管理

08
例: MOV AX, [BX+03H]
CX——Count可以作计数寄存器使用。 在循环LOOP指令和串处理指令中用作隐含计数器。 例: MOV CX , 200H AGAIN: …… …… LOOP AGAIN ;(CX)-1(CX),结果0转AGAIN DX——Data可以作为数据寄存器使用。 一般在双字长乘除法运算时, 把DX和AX组合在一起存放一个双字长(32位)数,DX用来存放高16位; 对某些I/O操作DX可用来存放I/O的端口地址(口地址 256)。 例: MUL BX ; (AX)(BX)(DX)(AX) 例: IN AL , DX
奇偶标志PF(Parity Flag)
若算术运算的结果有溢出,则OF=1;
否则 OF=0
3AH + 7CH=B6H,产生溢出:OF=1 AAH + 7CH=(1)26H,没有溢出:OF=0
溢出标志OF(Overflow Flag)
3AH+7CH=B6H,就是58+124=182,
什么是溢出
处理器内部以补码表示有符号数 8位表达的整数范围是:+127 ~ -128 16位表达的范围是:+32767 ~ -32768 如果运算结果超出这个范围,就产生了溢出 有溢出,说明有符号数的运算结果不正确
01
AX——(Accumulator)作为累加器。
02
它是算术运算的主要寄存器,
03
所有I/O指令都使用这一寄存器与外部设备交换数据。
04
例: IN AL , 20H
05
OUT 30H , AX
06
BX——Base用作基址寄存器使用。
07
在计算内存储器地址时,经常用来存放基址。
0

X86机的原理构造及技术详解

X86机的原理构造及技术详解

系统管理模式
Intel首次在80386SL之后引入其x86体系结构。
虚拟V86模式 MMX和之后
1996年Intel的MMX(AMD认为这是矩阵数学扩充Matrix Math Extensions的缩写,但大多数时候都被当成MultiMedia Extension,而Intel从来没有官方宣布过词源)技术出现。尽管这项新的技术得到广泛宣传,但它的精髓是 非常简单的:MMX定义了八个64位SIMD寄存器,与Intel Pentium处理器的FPU堆栈有相重叠。不幸的是,这些 指令无法非常简单地对应到由原来C编译器所产生的脚本中。MMX也只局限于整数的运算。这项技术的缺点导致 MMX在它早期的存在有轻微的影响。现今,MMX通常是用在某些2D影片应用程序中。
历史
[编辑本段]
x86架构于1978年推出的Intel 8086中央处理器中首度出现,它是从Intel 8008处理器中发展而来的,而8008则是 发展自Intel 4004的。8086在三年后为IBM PC所选用,之后x86便成为了个人计算机的标准平台,成为了历来最 成功的CPU架构。 其他公司也有制造x86架构的处理器,计有Cyrix(现为VIA所收购)、NEC集团、IBM、IDT以及Transmeta。Inte l以外最成功的制造商为AMD,其早先产品Athlon系列处理器的市场份额仅次于Intel Pentium。 8086是16位处理器;直到1985年32位的80386的开发,这个架构都维持是16位。接着一系列的处理器表示了32 位架构的细微改进,推出了数种的扩充,直到2003年AMD对于这个架构发展了64位的扩充,并命名为AMD64。 后来Intel也推出了与之兼容的处理器,并命名为Intel 64。两者一般被统称为x86-64或x64,开创了x86的64位 时代。 值得注意的是Intel早在1990年代就与HP合作提出了一种用在安腾系列处理器中的独立的64位架构,这种架构被

x86结构

x86结构

2 x86体系结构寄存器分析
2.1 x86体系结构寄存器简介
32位x86体系结构的所含有的寄存器有如下:
◆4个32位通用寄存器(EAX、EBX、ECX和EDX)
◆2个32位变址和指针寄存器(ESI和EDI) ,2个32位指针寄存器(ESP
和EBP)
◆6个[16位(段选择符)+隐藏部分(描述符缓冲)]段寄存器(ES、CS、SS、
DS、FS和GS)
◆1个32位指令指针寄存器(EIP) ,1个32位标志寄存器(EFlags)
◆2个48位系统表寄存器(GDTR、IDTR)和2个[16位(选择符)+隐藏部分
(描述符缓冲)](LDTR、TR)
◆5个32位控制寄存器(CR0 ~ CR4),CR4是从Pentium CPU开始出现的
◆8个32位调试寄存器(DR0 ~ DR7)
◆8个32位测试寄存器(TR0 ~ TR7)
2.2 通用寄存器
2.2.1 通用寄存器总述
32位CPU有4个32位通用寄存器EAX、EBX、ECX和EDX。

主要用来保存操作数和运算结果等信息。

对于低16位数据的存取,不会影响高16位的数据。

这些低16位的寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。

4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。

程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字节的信息。

X86架构的寄存器

X86架构的寄存器

X86架构的寄存器
在调试过程中,如果要看寄存器的内容的话,需要使⽤到的寄存器还是需要熟悉⼀下的。

32位下的x86_32
2个变址寄存器:ESI、EDI
6个段寄存器:ES、CS、SS、DS、FS、GS
4个数据寄存器:EAX、EBX、ECX、EDX
esp:寄存器存放当前线程的栈顶指针
ebp:寄存器存放当前线程的栈底指针
eip:指令寄存器,下⼀条指令的地址
4个传参使⽤到的寄存器,依次为:EDI、ESI、EDX、ECX。

EAX寄存器作函数返回值。

64位下的x64
64位下有16个寄存器:rax、rbx、rcx、rdx、esi、edi、rbp、rsp、r8、r9、r10、r11、r12、r13、r14、r15。

6个传参寄存器:依次为:rdi、rsi、rdx、rcx、r8、r9
其它
X86下,遵循被调⽤者使⽤规则,函数在调⽤⼦函数之前,保存相关寄存器的内容。

函数调⽤时,参数先⼊栈,接着为返回地址⼊栈,BP寄存器⼊栈、再接着就是⼦函数的局部变量之类的了。

汇编语言第2章80x86计算机组织

汇编语言第2章80x86计算机组织

控制标志位
• 控制标志位 :DF 方向标志,用于串处理指令处理
▪ DF位为1时,每次操作后使变址寄存器SI和 DI减量,使串处理从高地址向低地址方向处 理:
▪ 当DF位为0时,则使SI和DI增量,使串处理 从低地址向高地址方向处理:
系统标志位
• IF:中断标志。 当IF=1时,允许中断; IF=0时关闭中断
数据的宽度 • 地址总线宽度:用以确定可访问的存储器的最
大范围
地址总线宽度
• 10位:210=1024单元,1K • 20位:220=1024* 210单元=1024K,1M • 24位:224=16*1M,16M • 30位:230=1024M,1G • 32位:232=4G,即4GB
二、一些名词术语(2)
• TF:陷井标志(跟踪标志)。用于单步方式操作 • IOPL:I/O特权级。控制对I/O地址空间访问
段寄存器
• 8086/8088、80286:四个段寄存器 ▪ 代码段CS,数据段DS,堆栈段SS,附加段ES
• 80386及后继机型:六个段寄存器 ▪ 代码段CS,数据段DS,堆栈段SS,附加段ES、 FS、GS---都是16位
• ZF:零标志。运算结果为0,置1;否则置0。 • CF:进位标志。记录从最高有效位产生的进位值。
最高有效位有进位时置1,否则置0。 • AF:辅助进位标志。记录运算时第3位产生的进位
值。如第3位有进位时置1,否则置0。 • PF:奇偶标志。当结果操作数中1的个数为偶数时置
1,否则置0。
标志符号 举例
段中的某一存储单元的地址 4. SI、DI一般与DS联用:
在串处理指令中,SI和DS联用,DI和ES联用
8086系统的堆栈
• 是存储器中的特殊区域 – 在堆栈段内,“FILO” – SP始终指向栈顶,总是字操作,指示栈顶的 偏移地址; – BP可作为堆栈区中的一个基地址以便访问 堆栈中的其他信息

Intel X86 CPU系列的寄存器-文档资料

Intel X86 CPU系列的寄存器-文档资料

这是一个数据结构, 一个任务的所有信 息存储在这各字段 内.这些字段分为 两类:第一: 处理器 只读其中信息的静 态字段集;第二:每 次任务切换时,处 理器将会更新的动 态字段集.
Figure 1: 32-Bit Task-State Segment (TSS)
寄存器分类介绍(19)
----内存管理寄存器
在开发底层系统时,会用到这些寄存器.
寄存器分类介绍(8)

调试寄存器
设置标志位 集中在DR7
寄存器分类介绍(9)

调试寄存器 DR0-DR3:保留32位断点的线性地址. DR6


B0—B3:断点状态的监测 BD:调试寄存器访问监测.置位,表明在指令流中,下一条指令将访问其中 的一个调试寄存器 BS:单步执行标志位 BT:任务转换标志位


CR4:



OSFXSR:置位.表明操作系统支持FXSAVE and FXRSTOR指令 OSXMMEXCPT:置位.表明操作系统支持不可屏蔽的SIMD浮点异常.
寄存器分类介绍(7)

调试寄存器


作用:调试寄存器主要作用是调试应用代码、系统代码、 开发多任务操作系统.来监视代码的运行和处理器的性 能. DR0---DR3:调试地址寄存器 DR4—DR5:保留.还没有定义 DR6: 调试状态寄存器 DR7: 调试控制寄存器
寄存器分类介绍(16)
-------内存管理寄存器

任务管理

系统中,一个任务由两部分组成:任务的运行空间和任务状态段 (TSS).任务的运行空间包括一个代码段、一个堆栈段、若干数据 段.TSS指明了任务的运行空间和任务的状态.在多任务系统中,TSS 还提供了连接任务的机制.

第二章 80X86微处理器

第二章 80X86微处理器

(2)1110010001010011 + 1100010101110010 1010100111000101 OF=0 SF=1 ZF=0 AF=0 PF=1 CF=1
7
实模式下的存储器地址空间
在实模式下存储器的地址空间为1M字节单元, 其地址范围为00000H~FFFFFH。 实模式下的存储器地址空间被分为通用和专用两 种存储区。 从地址00000H~003FFH这第一个1024个字节单 元是专用的。这个存储区为中断向量表区,专门用 来存放256个中断服务程序的入口地址(也称中断向 量),每个入口地址占4个字节单元。 从地址FFFF0H~FFFFFH这16个字节单元保留给系 统的初始化代码。当处理器加电或复位(Reset)时, CPU执行的第一条指令就是起始于地址FFFF0H的。通 常是在FFFF0H处存放一条无条件转移指令,以转移到 系统程序的入口处。 通用区域用来存储一般的程序指令和数据。由图可 见,它的地址范围为00400H~FFFEFH。 8
例:指出80x86CPU执行如下指令后,标志寄存器中各状态 标志位的值: (1) MOV AX,32C5H (2) MOV AX,0E453H ADD AX,546AH ADD AX,0C572H
解 (1)0011001011000101 + 0101010001101010 1000011100101111 所以, OF=1 SF=1 ZF=0 AF=0 PF=0 CF=0
SS
SP
SP 高地址 (a) 空栈堆
栈底 (栈顶 栈顶 )
78H 56H 34H 12H
栈顶 SP 栈底
78H 56H 34H 12H
栈顶 栈底
(b) 压入:PUSH AX; AX=1234H 压入:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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,转去执行一个中断服务程序,用户可以借助中断服务程序来检查每条指令执行的情况,称为单步工作方式,常用于程序的调试。

相关文档
最新文档