IA-32汇编知识

1. 通用寄存器

     EAX   用于操作数和结果数的累加器

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

     ECX   计数器

     EDX   IO指针

     EDI     用于字符串操作的目标数据指针

     ESI     用于字符串操作的源数据指针

     ESP    堆栈指针

     EBP    堆栈数据指针

其中EAX, EBX, ECX, EDX可以通过16位和8位寄存器引用(AX, AH, AL)

 

2. 段寄存器

IA-32平台允许使用3种内存模型: 平坦内存模式,分段内存模式,实地址模式

平坦内存模式: 把全部系统内存表示为连续的地址空间,通过线性地址访问内存

分段内存模式: 把系统内存划分为独立的段组,通过位于寄存器中的指针进行引用.每个段用于包含特定的数据.一个段用于存放指令码,一个段用于包含数据,第三个包含堆栈.

                       段中的内存位置是通过逻辑地址引用的,逻辑地址是由段地址加上偏移量构成,处理器把逻辑地址转换为相应的线性地址以便访问.

段寄存器:

CS   代码段

DS   数据段

SS   堆栈段

ES, FS, GS   为附加段,  每个段寄存器都是16位.

 

实地址模式: 所有的段寄存器都指向线性地址0,并且都不会被程序改动, 所有的指令,数据,堆栈都是通过他们的线性地址访问

 

3.指令指针寄存器EIP, 不能直接修改该寄存器.

 

4.控制寄存器

   CR0   控制操作模式和处理器当前状态的系统标志

   CR1   当前没有使用

   CR2   内存页面错误信息

   CR3   内存页面目录信息

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

控制寄存器不能直接访问,必须通过通用寄存器来访问.

 

5.标志

IA-32使用单一的寄存器来包含一组状态控制和系统标志, EFLAGS寄存器包含32为标志信息.

*)状态标志 

   CF(bit0)    进位标志,无符号数数学操作产生最高有效位的进位

   PF(bit2)    奇偶校验标志,表明数学操作的结果寄存器中是否包含错误数据

   AF(bit4)    辅助进位标志,用于判断二进制编码的10进制(BCD)数学操作是否进位

   ZF(bit6)    0标志,操作结果为0

   SF(bit7)    符号标志, 判断结果的最高有效位

   OF(bit11)  溢出标志

*)控制标志

   DF             方向标志,用于控制处理器字符串指令自动递增或者递减内存地址.

*)系统标志

   TF(bit8)     陷阱标志,为1时启用单步模式,每次只执行一个命令

    IF(bit9)     中断使能标志,控制处理器响应外部中断信号

    IOPL(bit12:13)    IO特权级别标志,表明当前运行任务的IO特权级别(值越小级别越高)

    NT(bit14)嵌套任务标志控制当前运行的任务是否连接到前一个任务,用于嵌套中断

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

    VM(bit17)  虚拟8086模式,表明处理器处在虚拟8086模式,而不是保护模式或者实模式

    AC(bit18)  对准检查标志,用于启用内存引用的对准检查

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

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

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

 

 

 

你可能感兴趣的:(IA-32汇编知识)