首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[讨论]新手的一个51C的疑问

[讨论]新手的一个51C的疑问

我在玩STC89C51我用汇编时一切正常,用51C时,(设置时我选的是AT89C2051,2K的EEROM)程序存储器不能分配恰当,总是超过存储器地址范围。我用C编的HEX文件烧到STC89C2052的EEROM发现程序的起始地址是从0800H,超过的程序存储器的地址
请教各路高手,用C时,可有什么办法可以指定程序起始地址?

楼主可以通过在c里面嵌入汇编,这样就可以设置org 位置了,比如

Embest IDE 使用GCC编译器,当然支持混合编程。看看这个文件:
http://billgatliff.com/articles/gnu/gcc-whitepaper.pdf

里面有一节:Inline Assembly Language

如:

void foo()
{
int i;
i = 0;
__asm__( "mov r1, r2" );
return;
}
※ HardShell 02-7-11 下午 06:43:25 ※

连续嵌入一大串汇编的语法是怎么样的呀!@ <---〖回复该帖子〗

※ leech42 02-7-16 15:53:26 ※

见内容 <---〖回复该帖子〗
void foo()
{
int i;
i = 0;
__asm__( "
mov r1, r2
mov r3, r4
");
return;
}
※ HardShell 02-7-18 9:39:08 ※

怎样在嵌入的汇编代码中使用变量i呀! <---〖回复该帖子〗
比如你上面给的程序
void foo()
{
int i;
i = 0;
__asm__( "
mov r1, r2
mov r3, r4
");
return;
}
我想在汇编代码中使用i变量,那我应该怎样把变量传进去呀!

※ leech42 02-7-18 12:01:28 ※

见内容,老兄在我告诉您的PDF文件里有例字。 <---〖回复该帖子〗
int foo (int a)
{
int b = 10;
a = 20;
__asm__("mov %1, %0" : "=r" (a) : "r" (b) ); /* sets a = b */
return a;
}

这个版主不太冷 =========================== 我的中电网博客:http://blog.chinaecnet.com/u/20/index.htm
原来这样搞啊!如果KEIL用汇编语言是不是同一方法

那是你安装 keil uv2 软件 还没有注册的缘故。

网上搜po jie代码

活到老学到老永不满足
返回列表