第一章 寄存器介绍

寄存器

包含在处理器内部的内存储单元,称为寄存器。

1、  优点:处理器可以通过寄存器来访问数据,从而可以不用通过访问内存。

2、  缺点:寄存器的数目是有限的。

IA-32系列中一般有如下寄存器:

寄存器

描述

通用

8个32位寄存器,用于存储正在处理的数据

6个16位寄存器,用于处理内存访问

指令指针

1个32位寄存器,指向要执行的下一条指令

浮点

8个80位寄存器,用于浮点计算

控制

5个32位寄存器,用于控制处理器操作模式

调试

8个32位寄存器,用于在调试处理时的信息

标志

1个32位寄存器,确定操作状态

 

通用寄存器

8个32位寄存器分别有以下用途

寄存器

描述

EAX

主要用于操作数据及结果的累加器

EBX

指向数据内存段中的数据的指针

ECX

字符串和循环操作的计数器

EDX

I/O指针

EDI

字符串操作目的地指针(destination)

ESI

字符串操作源指针(Source)

ESP

栈顶指针

EBP

栈底指针

段寄存器

6个16位段寄存器描述如下:

寄存器

描述

CS

代码段

DS

数据段

SS

堆栈段

ES

附加段指针

FS

附加段指针

GS

附加段指针

1、  寻址有三种:平坦内存模式,实地址模式,分段寻址模式。这三种的主要区别如下表:

寻址

描述

平坦内存模式

直接访问内存,段寄存器什么的,不用

实地址模式

16位寄存器,16位的段寄存器,要访问20位的内存。只好把段寄存器左移4位再加上偏移值。

分段

把内存分成好几个段,每个段的信息放在固定的某个数组中。而段寄存器值只是这个数组的一个索引。

关于这一点,书上并没有讲得很清楚。我还以为实地址与平坦模式是一样的。实际上不一样。

2、  DS,ES,FS,GS都是用于数据段寻址,这样就可以使用4个独立的数据段。从而程序可以隔离数据元素,让其有不同的属性。比如C语言里面的变量与常量。

控制寄存器

5个32位控制器描述如下:

寄存器

描述

CR0

控制操作模式,处理器状态

CR1

当前不用

CR2

内存页面错误信息

CR3

内存页面目录信息

CR4

支持处理器的特性和说明处理器的特性能力

1、  不能直接访问控制寄存器的值。需要通过通用寄存器来查询或更改其值。

标志寄存器

标志寄存器分为三种:

1、  状态标志

2、  控制标志

3、  系统标志

状态标志

标志

作用

CF

0

进位标志

PF

2

奇偶标志

AF

4

辅助进位标志

ZF

6

零标志

SF

7

符号标志

OF

11

溢出标志

1、  无符号操作数最高位发生进位或借位,CF置1,表明溢出

2、  PF为1表示偶数

3、  AF是只是进位或借位则置1

4、  SF是结果最高位,表示结果为正或负

5、  OF,当符号数运算正值过大,或负值过小,置1

控制标志

就一个DF,DF=1表示递减方式处理内存字符串。DF=0表示按递增方式处理字符串

系统标志

标志

说明

TF

8

陷阱标志, 设置为1时启用单步模式, 在单步模式下处理器每次只执行一条命令。

IF

9

中断使能标志, 控制处理器如响应从外部源接收到的信号。

IOPL

12,13

IO特权级别标志, 表明当前正在运行任务的IO特权级别, 它定义IO地址空间的特权访问级别, 该值必须小于或者等于访问I/O地址空间的级别; 否则任何访问IO空间的请求都会被拒绝!

NT

14

嵌套任务标志控制当前运行的任务是否连接到前一个任务, 它用于连接被中断和被调用的任务。

RF

16

恢复标志用于控制在调试模式中如何响应异常。

VM

17

虚拟8086模式, 表明处理器在虚拟8086模式中而不是保护模式或者实模式。

AC

18

对准检查标志, 用于启用内存引用的对准检查

VIF

19

虚拟中断标志, 当处理器在虚拟模式中操作时, 该标志起IF标志的作用。

VIP

20

虚拟中断挂起标志, 在虚拟模式操作时用于表示一个中断正在被挂起。

ID

21

表示CPU是否支持cpuid指令, 如果处理器能够设置或者清零这个标志, 表示处理器支持该指令。

 

上面图片中PF应该是奇偶位


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值