首先说进制。
世间有无数进制,二进制(Binary)、八进制(Octal)、十进制(Decimal)、十六进制(Hex)乃其中之一。各进制有正有负且它们之间可互相转换。如:-1100110 B = -0146 = -102 = -66H 、 +1100110 B = +0146 = +102 = +66H。
而计算机只认识二进制。并且它的二进制采用补码的方式进行编码。那么什么是补码呢?补码是#@#¥……%%…………&!%#%……&
以上就是进制的简单说明,有一点要注意的是 要将人类的进制思维与计算机的编码方式相分离。
*****************************************************************************************************************************************************************************************
mov 、push、pop指令对该标志位无影响。
以add al,xxx 来演示OF的变化:
先将al和xxx(立即数)的计算机十六进制补码值转换为我们所常用的十进制值,然后将十进制的计算结果与-128~127进行比较(注意是十进制的计算结果),如果不在此范围则OF为1,否则为0。计算时如:
mov al , 0F0H ;0F0H = -16
add al , 88H ;88H = -120;
add计算的结果为-136(等于101111000B、178H),小于-128,溢出(评估溢出时不考虑al位数的限制。)。而al的值为78H。