老师给的答案是:
MOV A,R0
CPL A
ADD A,#1
MOV R2,A
MOV A,R1
CPL A
ADDC A,#0 ;我所疑惑就在这里,为什么是加0呢?不是应该家1么,还有为什么上 ;边的用的是ADD,这里是ADDC (另外我这注释用得对不)
MOV R3,A
可是开始他只是对R0取反,就算他把R0和R1中存的是当成一个16位数,那对高位取补的时候,取反还是应该+1啊,为什么+0呢?还是不懂,求指教
追答把16位数取反,对R0、R1都进行了,可见两条CPL指令。
把16位数加一,就是加上:00000000 00000001,共15个0、1个1。
故此,对高8位的R1来说,确实只用加0;而对低8位的R0加1即可。