带借位的减法指令sbb

先看下面一段一段指令


左边的eax值很明显是0,那右边的eax值是多少呢?第一反应应该不是0,否则不会做test判断(经过右边的两次sbb运算eax的值为1或者-1)

分析过程:

第一种情况cf=1

1、sbb  eax,eax                  结果:eax=0xFFFFFFFF(-1)        cf=1

2、sbb  eax,0xFFFFFFFF     结果:eax=0xFFFFFFFF(-1)        cf=1

第二种情况cf=0

1、sbb  eax,eax                  结果:eax=0        cf=0

2、sbb  eax,0xFFFFFFFF     结果:eax=1        cf=1

扫描二维码关注公众号,回复: 3489862 查看本文章


使用OD调试修改cf值为1或0,实际运行结果和分析一致。



猜你喜欢

转载自blog.csdn.net/singleyellow/article/details/80957715