关于标志寄存器的问题
add al,90hal=10h执行后 结果为A0H SF=1为什么?
A0H二进制:10100000 补码:1011111
符号位为0 是正数阿 为什么SF会=1
在线等大神 A0H最高位难道不是1吗? 本帖最后由 刘金伟 于 2013-2-4 13:47 编辑
这是对标志寄存器理解上有问题。小甲鱼在视频中讲过,CPU很笨,他不知道一个内存中的内容对我们用户来说到底是指令还是数据,这完全取决于我们想怎么用。例如这道题里,CPU已经考虑了两种情况,一种吧A0当作补码(即一个负数,SF=1),另一种就是正常的二进制数(一个正数,这时就是把它当作无符号数,那要看的就是CF进位标志)。
简言之,最后的结果是什么,取决与你。你把它看作有符号数,他就是一个补码表示,那么SF=1。你把它看作无符号数就不需要管SF了。
CPU只是提供了所有可能,我们只需要按需索取即可。
页:
[1]