各位好:
我在使用F5438的时候,想把RAM写一遍0XAA,但是for循环执行第二次的时候,指针运行不对,查看反汇编,原来第二次执行*ram_start++ = 0xAA;这句话PC跳转的字节由6字节变为8字节,本来*ram_start++ = 0xAA;对应的汇编指令应该是6个字节,而PC却跳转了8个字节,到底是编译器问题,还是芯片问题?
#include <msp430f5438.h>
__no_init unsigned char *ram_start@0x1c00;
__no_init unsigned int i@0x1c04;
//unsigned int num;
int main(void)
{
WDTCTL =WDTPW+WDTHOLD;
//num = sizeof(unsigned char *);
//num = sizeof(i);
ram_start = (unsigned char *)0x1C06; // 把ram的首地址给 ram_start
asm("incx.a &ram_start"); //这句话PC跳转了八个字节,
asm("NOP");//由于上一句指令多跳转了两个字节,所以此句话执行不到
asm("NOP");
for(i =0;i < 16378;i ++) // 0x5cff-0x1c04=3ffb=16379
{
*ram_start++ = 0xAA;
}
while(1);
}