汇编速查-IA32寄存器组织

寄存器描述
通用寄存器8个32位,存储正在处理的数据
段寄存器6个16位,处理内存访问
指令指针寄存器1个32位,指向要执行的下一条指令码
浮点数据寄存器8个80位,浮点数据
控制寄存器5个32位,确定处理器的操作模式
调试寄存器8个32位,在调试处理器时包含信息

通用寄存器

寄存器描述
EAX用于操作数和结果数据的累加器
EBX指向数据内存段的数据的指针
ECX字符串和循环操作的计数器
EDXI/O指针
EDI用于字符串操作的目标的数据指针
ESI用于字符串操作的源的数据指针
ESP堆栈指针
EBP堆栈数据指针

EAX,EBX,ECX,EDX可以通过16位,8位名称引用
|<------------EAX---------------->|
|1 2 3 4 5 6 7 8 |1 2 3 4 5 6 7 8 |
|----------------|-------|--------|
|. . . . . . . . |. AH . | . AL . |
|----------------|-------|--------|
. . . . . . . . .|<------AX------>|

段寄存器

IA-32允许3种访问系统内存的方法 平坦内存模式分段内存模式实地址模式

  • 平坦内存模式:所有指令、数据、堆栈包含在相同的地址空间内,通线性地址访问每个内存位置
  • 分段内存模式:划分为3个段,指令段,数据段,堆栈段;内存位置通过逻辑地址定义,包含段地址和偏移地址;处理器将逻辑地址转换为线性地址
  • 实地址模式:所有段寄存器指向0线性地址,所以指令,数据,堆栈元素搜通过线性地址直接访问
段寄存器描述
CS代码段基地址;处理器根据CS值和EIP中的偏移值取指令
DS数据段基地址
SS堆栈段基地址;包含传递给函数和过程的数据值
ES附加段指针
FS附加段指针
GS附加段指针;DS,ES,FS,GS用于指向数据段

指令指针寄存器 EIP

跟踪要执行的下一条指令码,偏移值或者线性地址;不可直接修改

控制寄存器

确定处理器的操作模式当前正在处理任务的特性

控制寄存器描述
CR0控制处理器状态和操作模式的系统
CR1当前没有使用
CR2内存页面错误信息
CR3内存页面目录信息
CR4支持处理器特性和说明处理器特性的标志

不能直接读取或写入,需要通用寄存器“中转”一下

标志位

每个操作都要有一种机制确定操作是否成功
IA-32平台使用1个32位的EFLAGS包含一组状态,控制和系统标志。

1.状态标志 表明处理器进行的数学操作的结果

标志名称描述
CF0进位标志无符号整数数学操作最高有效位产生进位或借,置1
PF2奇偶校验标志奇校验位,使得寄存器和此位1的数目为奇数个
AF4辅助进位标志用于BCD数学操作
ZF6零标志操作结果为0,置1
SF7符号标志设置为结果的最高有效位
OF11溢出标志带符数正值过大或负值过小时,溢出

2.控制标志 控制处理器的特定行为。

当前只定义了一个控制标志-DFF标志(方向标志),控制处理器处理字符串的方式

DF置位(置1)字符串指令自动低递减内存地址一到达字符串的下一个字节

DF位清零(置0)字符串指令自动低递增内存地址一到达字符串的下一个字节

3.系统标志 控制操作系统级别的操作。

应用程序不应该试图修改系统标志

标志名称描述
TF8陷阱标志置1时,启用单步模式,每次执行一条指令,等待下一条指令执行的信号。调试汇编程序时极有用
IF9中断使能标志控制处理器如何响应外部源接受到的信号
IOPL12和13I/O特权级别标志表明当前正在运行的任务的I/O权限级别
NT14嵌套任务标志控制当前执行的任务是否链接到前一个执行的任务。用于链接被中断和被调用的任务
RF16恢复标志控制处理器在调试模式如何响应异常
VM17虚拟8086状态标志表明处理器在虚拟8086状态执行,而不是保护模式实或模式
AC18对准检查标志和CR0的AM位一起 用于启用内存引用的对准检查
VIF19虚拟中断标志处理器在虚拟模式中操作时,起到IF 标志位的作用
VIP20虚拟中断挂起标志处理器在虚拟模式中操作时,标志一个中断正被挂起
ID21识别标志表示处理器是否支持CPUID 指令

参考:
64-ia-32-architectures-software-developer-vol-1-manual
IA32 Instruction Set
《汇编语言程序设计》richard blum著

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值