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