关于mul al后sf值的问题
有点奇怪,有一个哥们
https://blog.csdn.net/zhangjiuding/article/details/79133961
运行之后sf =1, 我把他的代码运行之后是sf=0
网上多数答案是0,说是因为计算结果存在ax中,最高是0,所以sf=0
这里说的是,mul指令是无符号乘法指令,不影响sf的值。
我个人想法是:
以前的CPU没有乘法电路,计算机只会加减法,每次加减法之后,看计算结果的最高位来修改sf值。乘法其实是由加法转换而来的,所以中间加减法的每个过程都会改变sf,也就导致可能不同人CPU不同,中间的过程不同,最后的sf值不同。
从指令角度来说,mul指令是无符号数指令,也就说把mul指令的数都看作无符号数,CPU执行mul指令的时候不会修改sf的值,因为sf标志位是有符号数相关的。(至于为什么mul指令不修改sf,CPU是我们人类设计的,我们设计了不修改sf)
有点乱,望谅解。