单片机的ADD 和SUBB指令如何影响PSW的?
我们知道在做加减法是单片机都是按补码来进行运算的
8位数计算时,比如7-3应该和7+253相等
但
MOV A,#7
ADD A,#253
和
MOV A,#7
SUBB A,#3
运算后产生的PSW并不一样
减法运算时不置CY为1
那么做减法运算时还有什么规则?
[解决办法]
单片机理解
MOV A,#7
ADD A,#253
就是普通的加法运算,所以有进位;
而理解
MOV A,#7
SUBB A,#3
就是普通的减法运算,所以无进位。
我理解,单片机内部做补码运算时,进位位是不变化的。进位位的变化,可能由比较产生:
例如:50-200=?
减法有借位;做补码运算,借位不会发生。但是,这个借位可以由内部比较产生。
[解决办法]
这个你去看指令集说明吧,十分详细的那种,比如说51单片机,可以去百度搜intel 8051, intel最初出的8051的datasheet, 是最权威的, CSDN上就有,
http://download.csdn.net/detail/flc1122/2622838
另外, keil51的帮助里也有指令说明,包括指令影响那些标志位
不过就是比较多,这些其实不用记的,大致了解一下就行了