1."CY = bADda; //if (bADda==0) CY=0 else CY=1" 因为CY是bit而bADda是byte 把byte类型的变量赋给bit变量需要类型转换,其方法为:if (bByte==0) bitBit=0 else bitBit=1". 2.编译器再根据具体情况进行优化. a.//if #define _rlca_() CY = ACC & 0x40 这时结果中只有一位,所以用: A2E6 MOV C,0xE0.6 ;要2个指令字节 b.//if #define _rlca_() CY = ACC & 0x80 这时结果中只有一位,并且正好是第7位(E0.7),所以移入CY即可:33 RLC A ;只要一个指令字节 c.//if #define _rlca_() CY = ACC & 0xXX 这时结果中可以有1到8位,编译器又回到:if (bByte==0) bitBit=0 else bitBit=1"的准则下. 例如: define _rlca_() CY = ACC & 0x88 则编译结果为: //4588 ANL A,#0x88 //24FF ADD A,#0xFF 要4个指令字节.
|