54085256 发表于 2013-2-3 20:44:01

关于标志寄存器的问题

add al,90hal=10h

执行后   结果为A0H SF=1为什么?

A0H二进制:10100000 补码:1011111

符号位为0 是正数阿 为什么SF会=1

在线等大神

z____ 发表于 2013-2-3 21:00:47

A0H最高位难道不是1吗?

刘金伟 发表于 2013-2-4 13:45:33

本帖最后由 刘金伟 于 2013-2-4 13:47 编辑

这是对标志寄存器理解上有问题。小甲鱼在视频中讲过,CPU很笨,他不知道一个内存中的内容对我们用户来说到底是指令还是数据,这完全取决于我们想怎么用。例如这道题里,CPU已经考虑了两种情况,一种吧A0当作补码(即一个负数,SF=1),另一种就是正常的二进制数(一个正数,这时就是把它当作无符号数,那要看的就是CF进位标志)。
简言之,最后的结果是什么,取决与你。你把它看作有符号数,他就是一个补码表示,那么SF=1。你把它看作无符号数就不需要管SF了。
CPU只是提供了所有可能,我们只需要按需索取即可。
页: [1]
查看完整版本: 关于标志寄存器的问题