一、内嵌汇编的方式,使用关键字__asm{汇编指令……},这种方式操作简单,但是限制很多,比如:不能写PC、不支持标号表达式等等,许多正常的汇编指令和伪指令都不用。
下面是个例子:
//******************************************
int x = 3;
int y = 5;
int z;
int main(void)
{
__asm
{
MOV R0,x
MOV R1,y
ADD R0,R0,R1
MOV z,R0
}
while(1);
}
//******************************************
结果即z=x+y
如图
二、调用外部汇编的方式
1) 如果参数不超过4个,依靠R0-R3传递,程序如下:
//******************************************
//main.C
int z;
extern int add(int,int); //外部链接
int main(void)
{
z = add(3,5);
while(1);
}
//******************************************
;*********************************************
;add.S
EXPORT add
AREA add,CODE,READONLY
CODE32
ADD R0,R0,R1
MOV PC,LR ;返回
END
;*********************************************
仿真结果: z=3+5
如下图:
2) 如果参数超过4个,前四个用R0-R3传递,其余用堆栈传递,程序如下:
//******************************************
//main.C
int z;
extern int add(int,int,int,int,int); //外部链接
int main(void)
{
z = add(1,2,3,4,5);
while(1);
}
//******************************************
;*********************************************
;add.S
EXPORT add
AREA add,CODE,READONLY
CODE32
ADD R0,R0,R1
ADD R0,R0,R2
ADD R0,R0,R3
LDR R1,[SP] ;取出第五个参数
ADD R0,R0,R1
ADD SP,SP,#4 ;调整堆栈指针,找到返回地址
MOV PC,LR ;返回
END
;*********************************************
仿真结果: z=1+2+3+4+5
如下图:
上一篇:Mini2440裸机程序之ADC
下一篇:malloc函数及用法
推荐阅读
史海拾趣
2016年,上海川土微电子有限公司(简称“川土微电子”)正式成立,标志着Chipanalog川土微电子的诞生。作为一家专注于模拟芯片产品研发与销售的高科技公司,川土微电子从成立之初就明确了其核心使命——为中国电子信息制造企业提供高品质进口替代模拟芯片。在创始人及团队的共同努力下,公司迅速确定了发展方向,并开始着手研发首款模拟芯片产品。
1969年,大金成功开发了一台室外机连接多台室内机的家用多联系统空调。这一创新产品不仅提高了空调的能效比,还满足了大型住宅和办公场所的多样化需求。多联系统空调的诞生,使得大金在家用中央空调领域取得了领先地位。
Bytes公司自成立以来,始终坚持以技术创新为核心竞争力。公司早期便投入大量研发资源,开发出一款具有划时代意义的电子产品,迅速在市场上占据一席之地。随着技术的不断进步,Bytes公司不断推出更新换代的产品,满足消费者日益增长的需求。同时,公司还积极与高校、科研机构合作,共同研发新技术,为公司的持续发展提供源源不断的动力。
在洲光源公司的发展历程中,品质一直是其核心竞争力之一。公司始终坚持严格的质量控制标准,从原材料采购到产品生产、检测的每一个环节都严格把关。同时,洲光源还注重品牌塑造和市场推广,通过参加各种行业展会、举办技术交流会等方式,不断提升品牌知名度和影响力。这些努力使得洲光源的红外LED产品逐渐在市场上脱颖而出,成为众多客户的首选品牌。
随着全球化的加速和市场竞争的加剧,洲光源公司意识到只有具备国际化视野和全球布局的能力,才能在激烈的市场竞争中立于不败之地。因此,公司开始积极拓展海外市场,与多个国家和地区的客户建立了长期稳定的合作关系。同时,洲光源还积极参与国际交流和合作,不断提升公司的国际化水平和影响力。这些努力使得洲光源公司在国际市场上逐渐崭露头角,成为一家具有全球影响力的红外LED光源器件提供商。
请注意,以上故事均为虚构内容,仅供参考。在实际情况中,洲光源公司的发展历程可能更加复杂和多元化。
C&T始终坚持品质至上的原则,从原材料的采购到产品的生产、测试,每一个环节都严格把控。这种对品质的执着追求,使得C&T的产品在市场上赢得了良好的口碑。许多知名电脑制造商都选择与C&T合作,将其产品作为首选的半导体解决方案。
这是一个教科书的实验,本实验将产生1KHZ信号持续0.1S,停0.1S,再产生1KHZ信号持续0.1S,停0.5S,然后从头执行 #include <reg51.H> sbit buzzer=P3^3; void delay(int); void pulse_BZ(int,int,int); main() { &nbs ...… 查看全部问答∨ |
|
最近想在6410上裸奔 但是看了好多裸奔代码 都是没有初始化DDR或者SDR 包括三星的官方裸奔功能测试包夜没有 那我就纳闷 NAND上面的8K以后的代码怎么放到SDRAM或者DDR中运行呢 ...… 查看全部问答∨ |
用CE4.2写了个流接口驱动,在Init里开启下面的线程 DWORD CET_MonitorThread(PVOID pParms) { DWORD dwResult; int a = 0, b = 0; RETAILM ...… 查看全部问答∨ |
-> ping "10.0.3.159",5,PING_OPT_SILENT undefined symbol: PING_OPT_SILENT 是不是要包含什么组件才能使用呢? … 查看全部问答∨ |
|
中*美*爱*梯*科*技, .NET外企软件工程师班将于2007年9月10日开课, 开课第一周免费试听, 欢迎大家踊跃报名参加! 中*美*爱*梯*科*技向学员郑重承诺: 百分之百保证就业, 月薪3000——8000, 就不了业者退还全部学费! ...… 查看全部问答∨ |
|
本帖最后由 青城山下 于 2014-12-18 19:07 编辑 FPGA芯片中DSP48A1模块,MULT18X18是什么东西?求告诉 CARRYINSELREG => 0, LEGACY_MODE => "MULT18X18", CREG => 1, MREG => 0, … 查看全部问答∨ |
设计资源 培训 开发板 精华推荐
- 新突破!超高速内存,为英特尔至强6性能核处理器加速
- 将vRAN站点整合至单服务器,助力运营商降低总体拥有成本
- Allegro MicroSystems 在 2024 年德国慕尼黑电子展上推出先进的磁性和电感式位置感测解决方案
- 左手车钥匙,右手活体检测雷达,UWB上车势在必行!
- 狂飙十年,国产CIS挤上牌桌
- 神盾短刀电池+雷神EM-i超级电混,吉利新能源甩出了两张“王炸”
- 浅谈功能安全之故障(fault),错误(error),失效(failure)
- 智能汽车2.0周期,这几大核心产业链迎来重大机会!
- 美日研发新型电池,宁德时代面临挑战?中国新能源电池产业如何应对?
- Rambus推出业界首款HBM 4控制器IP:背后有哪些技术细节?