在汇编语言中,段寄存器很重要。


段寄存器


8086CPU有4个段寄存器,每个段寄存器用来确定一个逻辑段的起始位置,每种逻辑段均有各自的用途:

 CS(代码段):指明代码的起始地址

       利用CS:IP取得下一条要执行的指令

 SS(堆栈段):指明堆栈段的起始地址

       利用SS:SP操作堆栈顶的数据

 DS(数据段):指明数据的起始地址

      利用DS:EA存取数据段中的数据

 ES(附加段):指明附加段的起始地址

     利用ES:EA存取附加段中的数据


注意 : 没有指明段前缀时,一般的数据访问在 DS(数据)段


标志寄存器


标志寄存器一般记录运算结果的状态。


运算结果标志位:


ZF标志(ZeroFlag):

     零位标志位,它记录相关指令执行后的结果是否为0,如果是0,那么ZF=1,如果结果不为0,那么ZF=0。


PF标志(ParityFlag):

    奇偶标志位,它记录相关指令执行后,其结果的所有二进制位中1个个数是否为偶数,如果是偶数,PF=1,反之为0。


SF标志(SignFlag):

    符号标志位,它记录相关指令执行后,其结果是否为负,如果结果为负,SF=1,如果非负,SF=0。


CF标志(Carry进位,Flag标志):

     进位标志位,一般情况,进行无符号运算时,它记录运算结果的最高位向更高位的进位值,或从更高位的借位值,如果运算结果的最高位产生了一个进位或借位,那么其值为1,否则其值为0。


OF标志(Overflow溢出,Flag标志):

     溢出标志位,在进行有符号数运算的时候,如果结果超出了机器所能表示的范围称为溢出,OF的值被置为1,否则OF的值为0。


注意:这里所说的溢出,只是对有符号运算而言。


状态控制标志位:


TF标志(TrapFlag):

    追踪标志位,当追踪标志被置为1时,CPU进入单步执行方式,即每执行一条指令产生一个单步中断请求,这种方式主要用于程序的调试。


IF标志(Interrupt-enable Flag):

     中断允许标志位,用来决定CPU是否响应CPU外部的可屏蔽中断发出的中断请求,但不管该标志为何值,CPU都必须响应CPU外部的不可屏蔽中断所发出的中断请求,以及CPU内部产生的中断请求。

      当IF=1时,CPU可以相应CPU外部的可屏蔽中断发出的中断请求。

      当IF=0时,CPU不响应CPU外部的可屏蔽中断发出的中断请求。

      CPU的指令系统中也有专门的指令来改变标志位IF的值。



汇编语言入门-段寄存器和标志位_段寄存器


标志位的作用。