汇编中OF和CF的问题
问题描述:
汇编中OF和CF的问题
刚学汇编,看了一眼书.
在ADD运算和SUB运算中,得到的结果似乎都是无符号运算的结果,这样的话CF的标志好确定,问题出在OF.
我看老师的课件上OF的判断是直接根据运算的结果来判断的,若两个操作数符号相同而运算结果和操作数不相同,则OF会被设置为1,可是OF不是对有符号运算的标志吗?怎么可以直接根据无符号运算结果得到呢?
举个例子:比如1011和1001相加(由于八位太麻烦了所以马虎一点用4位的),根据老师课上说将其做ADD操作得到的结果是(1)0100,产生了进位所以CF=1,由于两操作数的符号相同但运算结果与操作数不同所以OF=1.
但是如果作为有符号运算的话得到的结果应该是1100,并未产生溢出,OF怎么可以为1呢?是我的理解有错还是怎么的,忘各位大侠赐教.
答
嘿嘿 在计算机中负数用补码表示如拥4位数则1011和1001分别表示为-5和-7
加的结果为-12已经超过了4位数的表示范围0000~1111表示的范围是0~7 -1~ -8
所以为益出
你认为的结果应该是1100是不对的 记着负数不是按原码运算的 而是按补码运算的
明白后 就给俺加分吧