汇编语言王爽检测点11.1

关于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)

有点乱,望谅解。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值