| 一: 可以先对变量指定地址,如
 u8 val @0x05
 汇编中对指定地址0x05进行赋值等操作
 
 二:
 可以把这行代码放在一个函数里,
 void Function(void)
 {
 //your code
 }
 
 取Function函数的地址,在copy从这个物理地址读取数据存储到一个数组中,但由于你并不知道编译器编译后汇编代码的大小,所以copy的长度得是一个估计值,
 以下是ARM平台的一个程序,原理差不多。是将SectorErase函数Copy到Ram中运行
 #define fucmax        0x400//flash处理函数编译后的尺寸,可以利用编译器得出
 
 typedef void(*FUC)(uint32 x,uint16 y);
 
 void EraseSectorInRAM(uint32 SectorIndex)
 {
 FUC handle_flash;
 uint16  dest[fucmax];
 uint16 *sour = (uint16*)SectorErase;    //取SectorErase的地址
 memcpy(dest,sour,fucmax);    //copy SectorErase()函数到指定数组
 handle_flash = (FUC)dest;
 handle_flash(SectorIndex,0);
 
 }
 |