|
|
2: { 3: unsigned int i=3,j,k,z; C:0x0003 7F03 MOV R7,#0x03 ; R7 = i C:0x0005 7E00 MOV R6,#0x00 4: j=(++i)+5; C:0x0007 0F INC R7 C:0x0008 EF MOV A,R7 C:0x0009 7001 JNZ C:000C C:0x000B 0E INC R6 C:0x000C 2405 ADD A,#0x05 C:0x000E FD MOV R5,A C:0x000F E4 CLR A C:0x0010 3E ADDC A,R6 C:0x0011 FC MOV R4,A 5: k=(i++)+6; C:0x0012 EF MOV A,R7 C:0x0013 2406 ADD A,#0x06 C:0x0015 FF MOV R7,A ; R7 = k C:0x0016 E4 CLR A C:0x0017 3E ADDC A,R6 C:0x0018 FE MOV R6,A 6: z=j+k; 7: C:0x0019 ED MOV A,R5 C:0x001A 2F ADD A,R7 C:0x001B F509 MOV 0x09,A C:0x001D EC MOV A,R4 C:0x001E 3E ADDC A,R6 C:0x001F F508 MOV 0x08,A 8: } C:0x0021 22 RET 因為是局部變量,所以開始使用R7作為i變量,到第三句時,i完成使命,增加了k變量,此時R7充當了k的角色,所以它的值與k相同。 |
|
只有 i和z的值不對 不過 在使用 ++ -- 時 需要考慮到 編譯器自身的處理機制 建議你 用VS吧 因為 早期的 編譯器 對 ++ -- 不太一致 但是都是正確的 加油 |
| 只有i的值異常 |