pymem写入汇编 pf汇编_pymem写入汇编

 

 

 CF(Carry Flag)【进位标志】:当指令执行结果的高位(字节操作中的 D7位或字操作中的 D15 位)产生进位或借位时,C=1,否则 C=0。

对于算术运算操作,可理解为:无符号数运算后结果超出一个字节或一个字所能容纳的范围。

 

PF(Parity Flag)【奇偶标志】:在字节操作指令中,如果结果中“1”的个数为偶数,则P=1,否则 P=0;

在字操作指令中,如果结果的低字节(即 D7~D0)中“1”的个数为偶数,则P=1,否则P=0。

高字节部分(即D15~D8)并不影响奇偶标志位。

 

AF(Auxiliary Carry Flag)【辅助进位标志】:在执行加减运算指令时,如果低半字节的高位向前一位有进位或借位(即D3位向D4位有进位或借位),则 A=1,否则A=0。

 

ZF(Zero Flag)【零标志】:如果指令执行结果为0,则Z=1,否则 Z=0。

 

SF(Sign Flag)【符号标志】:当指令执行结果的高位(字节操作中的D7位或字操作中的D15位)为1时,符号标志S=1,否则S=0。

在视为带符号数的情况下,S的值代表了运算结果的正负,S=0 表示结果为正,否则为负。

 

TF(Trace Flag)【追踪标志】:当追踪标志位T=1时,CPU进入单步运行状态,每执行一条指令后,CPU都会产生一个内部中断,使程序暂停运行,以方便程序员对程序的跟踪和检查(也就是DEBUG时的步进);当T=0时CPU可恢复正常状态。

在8086系统中,并没有指令可以直接修改追踪标志位 T。但可以利用将标志寄存器的内容压入堆栈间接修改,之后再送回给标志寄存器,来实现 T 标志位的修改。

 

IF(Interrupt-enable Flag)【中断允许标志】:当中断允许标志I=1时,允许CPU接收外部的可屏蔽中断请求,I=0 时则屏蔽掉这些请求。

需要注意的是,中断允许标志位只对外部可屏蔽中断(出现在 INTR 线上的中断请求)有效,对外部非屏蔽中断(出现在 NMI 线上的中断请求)以及CPU内部中断(如除法溢出引起的中断等)都无效。中断允许标志位可以通过指令CLI、STI 来清零和置“1”。

 

DF(Direction Flag)【方向标志】:方向标志主要对串操作指令产生影响。当D=1时,串操作指令会从高地址开始向低地址处理串,且每处理完串中一个数据,串指针就会自动减小;当 D=0 时,串操作指令会从低地址开始向高地址处理串,并使串指针自动增加。

方向标志位可以通过 “指令CLD、STD” 来清零和置“1”。其他指令都不会对该标志位产生影响。

OF(Overflow Flag)【溢出标志】:在算术运算操作中,如果带符号数运算后结果超出一个字节或一个字所能容纳的范围(在带符号数情况下,一个字节所能容纳的范围为 (−128)~(+127),一个字所能容纳的范围为 (−32768)~(+32767) 时,溢出标志 O = 1,否则O = 0。

需要注意的是,进位和溢出并没有必然的联系,两个数进行相加减,结果有进位时不一定有溢出,有溢出时也不一定有进位。