对于标志寄存器CF OF的理解
mov al,80hadd al,al
80H+80H=100H,AL是8位寄存器,100H=100000000b,第8位=1,说明有进位,所以CF=1
对于有符号计算,AL=80H就看做一个数的补码,80H的原码为-128,al=-128+(-128),实际结果应该为-256大于AL的范围-128-127,所以溢出,OF=1
以上是我自己的理解。不知道是否理解有误,求高手指点。
:lol:支持下,鱼C我很喜欢的讨论论坛 你只要记住:数据只是0和1的组合,有符号还是无符号是你怎么看这段数据。。OF对应有符号,CF对应有符号。。 简单说,对于一个计算,如果你认为是有符号数计算,你就要看OF而不能看CF;如果你认为是无符号数计算,你就要看CF而不能看OF。
由于计算机不知道你到底认为是有符号数计算还是无符号数计算,所以它把CF和OF全部列出供你选择一个看(由于引入了补码,使得带符号数的补码运算和无符号数的二进制运算在形式上是一样的) 你理解的是对的进位和借位对于无符号数运算 128+128 >255 进位 溢出 对于有符号运算 8位表示范围(-128 ~ 127) -128 + -128 8位的范围不能表示产出溢出 80H+80H=160H 吧,怎么回事100H呢?al=60H 本帖最后由 sokou001 于 2014-1-21 14:16 编辑
超过范围区间才看成补码 比如 127 就看成+127 但是128因为不在区间[-128~127内]才换成(-(255-128+1)) 学习了,这里的高手很多啊
页:
[1]