在汇编语言中,OF是标志寄存器中的溢出标志位,CPU是如何来判断是否溢出的呢?
下面这个解释很清晰:
针对有符号数,CPU只要在运算结束后比较一下最高位符号位是否产生变化就能判定溢出情况了!
比如:
11110000
+10001000
——————
01111000 即78h
运算前,两个操作数最高位都为1,证明都是负数,而运算结果的最高位为0,符号位产生了变化,这就证明运算溢出了!
当然这种判断只局限于(正数+正数)和(负数+负数)的运算,因为(正数+负数)是不会产生溢出的,所以CPU根本就不用进行判断。
另外,CPU在运算过程中是不区分有符号数和无符号数的,它只知道把所有的位都给加一遍,当然也包括所谓的符号位。运算结果出来以后再使用上面说到的办法判断是否溢出和进位了,设置相应的OF和CF!
已经有(0)位网友发表了评论,你也评一评吧!
原创文章如转载,请注明:转载自Eddy Blog
原文地址:http://www.rrgod.com/program/424.html 欢迎订阅Eddy Blog。