您的位置:首页 > 其它

Some Push Instructions

2012-06-20 23:28 239 查看
 

pushad: 将所有的32位通用寄存器压入堆栈

pusha:将所有的16位通用寄存器压入堆栈

pushfd:然后将32位标志寄存器EFLAGS压入堆栈

pushf:将的16位标志寄存器EFLAGS压入堆栈

popad:将所有的32位通用寄存器取出堆栈

popa:将所有的16位通用寄存器取出堆栈

popfd:将32位标志寄存器EFLAGS取出堆栈

popf:将16位标志寄存器EFLAGS取出堆栈

 

——对上面一些专用词的解释

通用寄存器:

   16位cpu通用寄存器共有 8 个:AX,BX,CX,DX,BP,SP,SI,DI

  八个寄存器都可以作为普通的数据寄存器使用。

  但有的有特殊的用途:AX为累加器,CX为计数器,BX,BP为基址寄存器,SI,DI为变址寄存器,BP还可以是基

  指针,SP为堆栈指针。

  32位cpu通用寄存器共有 8 个: EAX,EBX,ECX,EDX,EBP,ESP,ESI,EDI功能和上面差不多

 

16/32位标志寄存器

   16位标志寄存器共用了9个标志位,它们主要用来反映CPU的状态和运算结果的特征。标志位的分布如下表所示。


 
1514131211109876543210
    OFDFIFTFSFZF AF PF CF
32位标志寄存器
32位CPU也把标志寄存器扩展到32位,记为EFLAGS。它新增加了四个控制标志位,它们是:IOPL、NT、RF和VM,这些标志位在实方式下不起作用。其它标志位的位置和作用与先前的完全相同。

其主要标志位的分布如下表所示。
3117161514131211109876543210
VMRF NTIOPLOFDFIFTFSFZF AF PF CF
 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  扩展