大数据算法,分布式技术,spark技术爱好者
分类: 嵌入式
2013-07-09 21:22:25
1.ZF:(6)
操作结果是否为0,是0为1
SF:(7)
CPU标记当前结果是否为负数
PF:(2)
奇偶校验位,如果1的个数为偶数,为1,熟悉编码奇偶校验规则的都容易理解
以上三个标志都是对运算结果的特征信息
CF:(1)
进位,借位标志,超过8位或者16位
OF:(11)有符号运算溢出标记,有时候没有发生进位之前,如果运算是有符号的,会发生溢出,溢出后的数据可以转化成正确的结果,但必须确认发生了溢出,所以就有OF位。
(负数 补码 二进制数转换:取反+1)
2.abc:做加法时考虑进位标记。add,abc,abc。。。可以对任意大小的数据求和。
sbb:做减法时考虑借位标记。sub,sbb,sbb。。。可以对任意大小的数据求差。
3.cmp比较无符号数用cf,zf判断大小
cmp比较有符号数用sf,of判断大小
4.je,ja,jb,jne,jna,jnb六个条件跳转指令,都是针对zf,cf的值跳转。
5.flag第10位是DF,控制串操作每次操作后si,di的增减。
df=0,递增,df=1,递减。
串操作:rep movsw; rep movsb:把ds:si的移动到es:di,长度cx。
设置df:cld;std
of OV NV
sf NG PL
zf ZR NZ
pf PE PO
cf CY NC
df DN UP
怎么记,哥教你,除了sf,左右为1都是首字母和标记名称首字母相同。of 和OV ;zf和ZR;pf和PE;cf和CY;df和DN。
比较特殊的,两个开头一样:pf(parity:奇偶性),奇数odd,偶数even,所以有PE,PO。
sf标记:NE:negtive,PL:plus。
6.为了把持代码的简洁性,尽量让步骤少的分支向下跳过不需要的步骤,而保持步骤多的分支不跳转。