在汇编语言中,段寄存器很重要。
段寄存器
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的值。
标志位的作用。