打印

请问一个C嵌入汇编的问题

[复制链接]
2138|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Star2010|  楼主 | 2010-3-5 14:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一:
在C语言中定义二个变量:
char age;
int count;

怎样在程序中,嵌入一段汇编代码,对这2个变量赋值?用的是STM8S103F

二:
怎样用程序读某一行代码的值,并把值保存在变量中?
比如:
age=28;
怎么样读这行代码的机器代码,并保存在变量中呢?

谢谢!
沙发
有意思| | 2010-3-5 23:14 | 只看该作者
一:
可以先对变量指定地址,如
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);
   
}

使用特权

评论回复
板凳
zwll| | 2010-3-6 16:55 | 只看该作者
楼主什么思路?

使用特权

评论回复
地板
21ele| | 2010-3-6 22:48 | 只看该作者
汇编调用C程序的例子

void ccc(void)
{       
        //Y[0] = X[0];
}


__asm void _aaa_(void)
{
        PUSH        {R0-R12,LR}
        BL.W    __cpp(ccc)
        POP        {R0-R12,LR}
              BX    lr
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

30

帖子

1

粉丝