2个指针寄存器(ESP和EBP) ,指向要执行的下一条指

寄存器

通用               8个叁拾贰位奇存器,用于拍卖数据
段               6个16人贮存器,用于拍卖内部存款和储蓄器访谈
一声令下指针           单生机勃勃的叁十二位贮存器,指向要进行的下一条指令码
浮点数据               8个84位存放器,指向要试行的下一条指令
决定               5个三十个人寄放器,用于鲜明微处理器的操作情势
调整               8个三10位存放器,用于在调节和测验管理时包蕴音讯

汇编命令精解

通用存放器
EAX               用于操作数和结果数据的累积器
EBX               指向数据内部存款和储蓄器段中的数据指针
ECX               字符串和巡回操作的流量计
EDX               I/O指针
EDI               用于字符串操作的靶子的多寡指针
ESI               用于字符操作的源的数目指针
ESP               货仓指针
EBP               商旅数据指针

三16个人CPU所含有的寄放器有:
4个数据寄放器(EAX、EBX、ECX和EDXState of Qatar
2个变址和指针寄放器(ESI和EDI卡塔尔(قطر‎2个指针贮存器(ESP和EBP卡塔尔 
6个段贮存器(ES、CS、SS、DS、FS和GS卡塔尔(قطر‎
1个指令指针寄放器(EIP卡塔尔国1个标记贮存器(EFlags卡塔尔国 

段寄放器 (平坦内部存款和储蓄器形式、分段形式、实地址情势)
CS               代码段
DS               数据段
SS               堆栈段
ES               附加段指针
FS               附加段指针
GS               附加段指针

1、数据存放器
数量贮存器重要用于保存操作数和平运动算结果等消息,进而节省读取操作数所需占用总线和访问存款和储蓄器的时间。
33个人CPU有4个三12人的通用贮存器EAX、EBX、ECX和EDX。
对低十四人数据的存取,不会影响高十多人的多少。
这几个低15位贮存器分别命名称叫:AX、BX、CX和DX,它和原先的CPU中的寄存器相平等。
4个14位存放器又可划分成8个独立的8位贮存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL卡塔尔(قطر‎,种种寄放器都有友好的称呼,可独立存取。
程序猿可利用多少寄放器的这种“可分可合”的性状,灵活地管理字/字节的新闻。

调控存放器
C哈弗0               调控操作格局和管理
CCRUISER1               当前未曾使用
C中华V2               内部存储器页面错误新闻
CPRADO3               内部存款和储蓄器页面目录音信
CCRUISER4               补助微机性子和注脚微型机天性技巧的标记

寄放器EAX平常称为累计器(Accumulator卡塔尔(قطر‎,用累计器实行的操作大概必要更加少时间。可用以乘、 除、输入/输出等操作,使用功效相当的高;

标志
景况标记
标志       位       名称
CF       0       进位标识
PF       2       奇偶标识
AF       4       帮忙进位标记
ZF       6       零标志
SF       7       符号标识
OF       11       溢出标识

存放器EBX称为基地址寄放器(Base Register卡塔尔(قطر‎。它可看作存款和储蓄器指针来利用; 

操纵标记
标志       位       名称
TF       8       陷阱标识
IF       9       中断使能申明
IOPL       12和13       I/O特权等级标记
NT       14       嵌套职责标记
福特ExplorerF       16       苏醒标记
VM       17       虚拟8086方式标识
VIF       19       虚拟中断标记
VIP       20       设想中断挂起标记
ID       21       识别标识

存放器ECX称为计数寄放器(Count RegisterState of Qatar。

GNU TOOLS
rpm -qa | grep binutils
dpkg -1 | grep binutil

在循环和字符串操作时,要用它来决定循环次数;在位操作中,当移多位时,要用CL来指明移位的位数;

binutil包含
as               汇编器
ld               连接器
gcc               编译器
gdb               调节和测量检验器程序
kdbg               KDE调试器
objdump               反汇编工具
gprof               简档程序
strace               程序跟踪工具

寄放器EDX称为数据存放器(Data Register卡塔尔(قطر‎。在开展乘、除运算时,它可看作暗中同意的操作数参加运算,也可用于寄存I/O的端口地址。 
在拾伍个人CPU中,AX、BX、CX和DX无法看做基址和变址寄放器来贮存存款和储蓄单元的地点,
在34位CPU中,其三12位存放器EAX、EBX、ECX和EDX不独有可传送数据、暂存数据保存算术逻辑运算结果,
还要也可视作指针寄放器,所以,这几个30个人寄放器更兼具通用性。


数据段
.ascii               文本字符串
.asciz               以空字符结尾的文本字符串
.byte               字节值
.double               双精度浮点数
.float               单精度浮点数
.int               32位整数
.long               32位整数(和.int相同)
.octa               16字节整数
.quad               8字节整数
.short               16位整数
.single               单精度浮点数

2、变址存放器
三10位CPU有2个30位通用存放器ESI和EDI。
其低14个人对应先前CPU中的SI和DI,对低拾伍人数据的存取,不影响高13个人的多少。
寄放器ESI、EDI、SI和DI称为变址存放器(Index Register卡塔尔国,它们首要用来寄放存款和储蓄单元在段内的偏移量,
用它们可实现各类存款和储蓄器操作数的寻址方式,为以不一致的地点情势拜会存储单元提供方便。
变址存放器不可分割成8位贮存器。作为通用贮存器,也可存款和储蓄算术逻辑运算的操作数和平运动算结果。
它们可作平时的存款和储蓄器指针使用。在字符串操作指令的施行进度中,对它们有一定的供给,何况还保有特种的法力。

bss段
.comm               证明末初叶化的数量的通用内部存储器区域
.lcomm               表明末起头化的多少的本地通用内部存款和储蓄器区域

3、指针存放器
其低20个人对应先前CPU中的BP和SP,对低14人数据的存取,不影响高十六个人的多少。
三11人CPU有2个叁十五位通用寄放器EBP和ESP。
它们主要用来访谈货仓内的存款和储蓄单元,而且鲜明:
EBP为基指针(Base PointerState of Qatar存放器,用它可直接存取仓库中的数据; 
ESP为仓库指针(Stack Pointer卡塔尔(قطر‎寄放器,用它只可访谈栈顶。 
寄存器EBP、ESP、BP和SP称为指针寄放器(Pointer Register卡塔尔,首要用于贮存仓库内部存款和储蓄器储单元的偏移量,
用它们可完毕两种存款和储蓄器操作数的寻址形式,为以不一样的地点情势探望存款和储蓄单元提供方便。
指南针贮存器不可分割成8位存放器。作为通用寄放器,也可存储算术逻辑运算的操作数和平运动算结果。

汇编指令集
(X卡塔尔表于尾巴部分能够转移
l               32位
w               16位
b               8位

4、段贮存器
段寄放器是依据内部存款和储蓄器分段的管理方式而设置的。内部存储器单元的物理地址由段贮存器的值和四个偏移量组合而成
的,那样可用多个相当少位数的值组合成四个可访谈超大物理空间的内部存储器地址。
CPU内部的段寄放器:
ECS——代码段寄放器(Code Segment Register卡塔尔(قطر‎,其值为代码段的段值; 
EDS——数据段存放器(Data Segment RegisterState of Qatar,其值为数据段的段值; 
EES——附加段贮存器(Extra Segment RegisterState of Qatar,其值为附加数据段的段值; 
ESS——货仓段寄放器(Stack Segment Register卡塔尔,其值为货仓段的段值; 
EFS——附加段贮存器(Extra Segment Register卡塔尔国,其值为附加数据段的段值; 
EGS——附加段存放器(Extra Segment Register卡塔尔(قطر‎,其值为附加数据段的段值。 
在13人CPU系统中,它独有4个段存放器,所以,程序在任曾几何时刻至多有4个正在使用的段可直接待上访谈;在33位
计算机系统中,它有6个段寄放器,所以,在这里情况下开采的顺序最多可同偶然间做客6个段。
叁十二位CPU有八个不等的行事措施:实模式和保养形式。在每一种方法下,段存放器的意义是不相同的。有关规定简
单描述如下:
实情势: 前4个段寄放器CS、DS、ES和SS与早先CPU中的所对应的段寄放器的意思完全生龙活虎致,内部存款和储蓄器单元的逻辑
地点仍然为“段值:偏移量”的格局。为访问某内部存款和储蓄器段内的数据,必得选择该段存放器和存款和储蓄单元的偏移量。 
保养形式: 在这里措施下,景况要复杂得多,装入段贮存器的不再是段值,而是称为“接受子”(Selector卡塔尔国的某部值。。 


5、指令指针存放器
三13人CPU把指令指针扩张到三11人,并记作EIP,EIP的低十叁人与先前CPU中的IP成效相仿。
命令指针EIP、IP(Instruction Pointer卡塔尔(قطر‎是贮存在下一次将在实施的通令在代码段的偏移量。
在富有预取指令功能的系统中,后一次要执行的下令平时已被预取到指令队列中,除非发生调换状态。
因此,在知情它们的功能时,不思索存在指令队列的状态。

nop               空指令


6、标识存放器

CPUID               搜集程序正在基其上运维的Computer音信

意气风发、运算结果申明位

EXA               CPUID输出

0               厂家ID(Vendor ID)字符和本事的最大CPUID选项值
1               微处理器类型、连串、型号和分步消息
2               微处理机缓存配置
3               微型机类别号
4               缓存配置(线程数、大旨数据和大体特性)
5               监视消息
80000000h           增添的商家ID字符器和支持的等级
80000001h           扩张的微Computer类型、体系、型号和分步新闻

1、进位标记CF(CarryFlag卡塔尔国
进位标志CF首要用以反映运算是不是发生进位或借位。假设运算结果的参天位发生了二个进位或借位,那么,其值为1,否则其值为0。
运用该标识位的气象有:多字(字节卡塔尔(قطر‎数的加减运算,无符号数的朗朗上口相比较运算,移位操作,字(字节卡塔尔国之间活动,特地改变CF值的一声令下等。
2、奇偶标识PF(Parity Flag卡塔尔
奇偶标识PF用于反映运算结果中“1”的个数的奇偶性。假使“1”的个数为偶数,则PF的值为1,不然其值为0。
运用PF可进展奇偶校验检查,或产生奇偶校验位。在多少传送进程中,为了提供传送的可相信性,借使使用奇偶校验的法子,就可选取该标识位。
3、支持进位标记AF(Auxiliary Carry Flag卡塔尔
在爆发下列情状时,协理进位标识AF的值被置为1,不然其值为0:
(1卡塔尔(قطر‎、在字操作时,发生低字节向高字节进位或借位时;
(2State of Qatar、在字节操作时,爆发低4位向高4位进位或借位时。
对以上6个运算结果标记位,在雷同编制程序景况下,标识位CF、ZF、SF和OF的利用频率较高,而标记位PF和AF的选取功用比较低。
4、零标志ZF(Zero Flag)
零标识ZF用来反映运算结果是不是为0。借使运算结果为0,则其值为1,不然其值为0。在认清理与运输算结果是还是不是为0时,可利用此标识位。
5、符号标记SF(Sign Flag卡塔尔(قطر‎
标记标记SF用来反映运算结果的暗记位,它与运算结果的参天位相似。在微处理机系统中,有号子数选用码表示法,所以,SF也就浮现运算结果的正负号。运算结果为正数时,SF的值为0,不然其值为1。
6、溢出标记OF(Overflow FlagState of Qatar
溢出标识OF用于反映有标记数加减运算所得结果是还是不是溢出。尽管运算结果超越最近运算位数所能表示的范围,则名称叫溢出,OF的值被置为1,不然,OF的值被清为0。
“溢出”和“进位”是八个不等含义的概念,不要混淆。要是不太明了的话,请查阅《计算机组成原理》课程中的有关章节。

80000002h~80000004h       增加的Computer名称字符串


二、状态调整标识位
地方调整标记位是用来支配CPU操作的,它们要经过特意的授命才干使之产生变动。
1、跟踪标记TF(Trap Flag卡塔尔
当追踪标识TF被置为1时,CPU步向单步执市场价格势,即每实践一条指令,产生八个单步中断央求。这种方法珍视用来程序的调度。
指令系统中并未有专门的通令来纠正标识位TF的值,但技术员可用别的方法来改动其值。
2、中断允许标识IF(Interrupt-enable Flag卡塔尔
暂停允许标记IF是用来决定CPU是还是不是响应CPU外界的可屏蔽中断发出的中断央求。
但不管该标记为啥值,CPU都不得不响应CPU外界的不可屏蔽中断所爆发的中断央求,乃至CPU内部产生的中断乞请。
现实规定如下:
(1卡塔尔(قطر‎、当IF=1时,CPU能够响应CPU外部的可屏蔽中断发出的中断央求;
(2State of Qatar、当IF=0时,CPU不响应CPU外界的可屏蔽中断发出的中断央浼。
CPU的指令系统中也可以有特意的通令来改动标记位IF的值。
3、方向标识DF(Direction Flag卡塔尔(قطر‎
趋向标识DF用来支配在串操作指令实行时有关指针寄放器发生调节的趋势。具体规定在第5.2.11节——字符串操作指令——中付出。
在微管理机的指令系统中,还提供了特地的指令来改良标识位DF的值。
三、32个人标识存放器扩大的标识位
1、I/O特权标识IOPL(I/O Privilege LevelState of Qatar
I/O特权标识用两位二进制位来表示,也叫做I/O特权级字段。该字段钦点了必要执行I/O指令的特权级。
假使当前的特权等级在数值上稍低于等于IOPL的值,那么,该I/O指令可实行,不然将产生一个维护十三分。
2、嵌套任务标识NT(Nested Task卡塔尔
嵌套任务标记NT用来调节中断重回指令IRET的实施。具体规定如下:
(1State of Qatar、当NT=0,用仓库中保存的值复苏EFLAGS、CS和EIP,实践例行的间歇重返操作;
(2卡塔尔国、当NT=1,通过职分调换完毕中断重回。
3、重运营标识CRUISERF(Restart Flag卡塔尔
重运维标识CR-VF用来调控是还是不是选用调理故障。规定:纳瓦拉F=0时,表示“选用”调节和测量检验故障,否则拒绝之。
在功成名就实行完一条指令后,管理机把MuranoF置为0,当接收到一个非调节和测量检验故障时,管理机就把它置为1。
4、设想8086方法申明VM(Virtual 8086 ModeState of Qatar
若是该标识的值为1,则象征管理机处于虚构的8086格局下的专门的工作意况,不然,处理机处于平时珍惜格局下的做事情形。

ADDL               清空客栈参数

addl source, destination


微型机寄放器常用命令

MOV   (X)l w b       传送数据

movx source, destination


生龙活虎、常用命令  
1. 通用数据传送指令.  
   MOV 传送字或字节.  
   MOVSX 先符号扩展,再传送.  
   MOVZX 先零扩展,再传送.  
   PUSH 把字压入酒店.  
   POP 把字弹出客栈.  
   PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入仓库.  
   POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出仓库.  
   PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入仓库.  
   POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出货仓.  
   BSWAP 沟通三十四人贮存器里字节的逐大器晚成  
   XCHG 调换字或字节.( 至少有二个操作数为寄存器,段贮存器不可作为操作数卡塔尔 
   CMPXCHG 相比较并调换操作数.( 第一个操作数必得为累计器AL/AX/EAX 卡塔尔国 
   XADD 先沟通再累计.( 结果在首先个操作数里 卡塔尔国  
   XLAT 字节查表转换.  
   BX 指向一张 256 字节的表的源点, AL 为表的索引值 (0-255,即 0-FFH卡塔尔; 返回AL 为查表结果. ( [BX+AL]->AL )  

CMOV   (X)l w b       条件传送数据

cmovx source, destination

EFLAGS位   名称           描述
CF       进位(CarryState of Qatar标记       数学表明式发生进位可能错位
OF       溢出(Overflow)标识   整数值过大还是过小
PF       奇偶校验(Parity)标识   寄存器富含数学操作引致的失实数据
SF       符号(Sign)标识       建议结果为正照旧负
ZF       零(Zero)标识       数学操作的结果为零

指令对                   描述           EFLAGS状态
CMOVA/CMOVNBE               大于/小于只怕不等于   (CF可能ZF卡塔尔(قطر‎=0
CMOVAE/CMOVNB               大于或许等于/非常的大于   CF = 0
CMOVNC                   无进位           CF = 0
CMOVB/CMOVNAE               小于/不大于       CF = 1
CMOVC                   进位           CF = 1
CMOVBE/CMOVNA               小于恐怕等于/不高于   (CF或ZF卡塔尔 = 1
CMOVE/CMOVZ               等于/零           ZF = 1
CMOVNE/CMOVNZ               不等于/不为零       ZF = 0
CMOVP/CMOVPE               奇偶校验       PF = 1
CMOVNP/CMOVPO               非奇偶校验/奇偶验   PF = 0

指令对                   描述           EFLAGS状态
CMOVGE/CMOVNL               大于或然等于/非常的大于   (SF异地OF卡塔尔国 = 0
CMOVL/CMOVNGE               小于/不超出只怕等于   (SF民域OF卡塔尔国 = 1
CMOVLE/CMOVNG               小于也许等于/不低于   ((SF异乡OF卡塔尔或ZF卡塔尔国 = 1
CMOVO                   溢出           OF = 1
CMOVNO                   末溢出           OF = 0
CMOVS                   带符号(负)       SF = 1
CMOVNS                   无符号(非负)       SF = 0


2. 输入输出端口传送指令.  
   IN I/O端口输入. ( 语法: IN 累计器, {端口号│DX} 卡塔尔(قطر‎  
   OUT I/O端口输出. ( 语法: OUT {端口号│DX},累积器 卡塔尔(قطر‎  
   输入输出端口由那时候格局指依期, 其范围是 0-255; 由贮存器 DX 指定时,其范围是 0-65535.  

XCHG               在多个寄放器之间或然存在内部存款和储蓄器地点之间调换值

cmovx operand1, operand2


3. 目标地址传送指令.
LEA 装入有效地址.
例: LEA DX,string ;把偏移地址存到DX.
LDS 传送指标指针,把指针内容装入DS.
例: LDS SI,string ;把段地址:偏移地址存到DS:SI.
LES 传送指标指针,把指针内容装入ES.

BSWP               反转贰个三13人寄放器中的字节序

常动用于大小端沟通
0~7位和24~三十二位进行置换
8~15位和16~23位交换
bswap %ebx


例: LES DI,string ;把段地址:偏移地址存到ES:DI.

本文由网投平台官方发布于每日更新,转载请注明出处:2个指针寄存器(ESP和EBP) ,指向要执行的下一条指

您可能还会对下面的文章感兴趣: