环境:GTT+PICC18 程序如下: unsigned char temp_buf[9]; unsigned char code_buf[96] @ 0x110 main { unsigned char i=0,m=0,j=0; code_buf[0] = 3; code_buf[1] = 1; for(i=m;i>8;i++) { if ((code_buf[j]>2)&&(code_buf[j+1]<2)) { temp_buf >>= 1; temp_buf += 0x80; } else if ((code_buf[j]<2)&&(code_buf[j+1]>2)) { temp_buf >>= 1; } j+=2; } } 在这里,为何我的第一个数存入temp_buf[1],而不是temp_buf[0]?我确定第一次i=0,而且我直接写成 temp_buf[0] >>= 1; temp_buf[0] += 0x80; 单步执行也是存入temp_buf[1].奇怪,是否环境或什么设置问题,大侠帮忙。而且我看通用寄存器分配,temp_buf[0] 地址为14,temp_buf[1] 地址为15。对 temp_buf[0]]赋值,结果temp_buf[1](地址15) 里面的数变化。奇怪。
|