如果keil5的话,在汇编内调用c语言的变量,可以
创新互联主营大荔网站建设的网络公司,主营网站建设方案,App定制开发,大荔h5微信平台小程序开发搭建,大荔网站营销推广欢迎大荔等地区企业咨询
IMPORT (变量名)
LDR r0, =(变量名) //获得该变量地址到r0
LDR r0,[r0] //将r0其值作为地址,获取其地址指向的值
这样c中变量的值就传递到r0了
首先你得搞清楚s32 function(u32 VirtualAddr)编译后叫什么。一般来说可能会叫_function。
传递参数很简单,如果ax里放的就是参数,那么push ax,然后再调用就可以。
返回值如果我没有记错的话应该在AX里。如果返回值太长,就会放到堆栈里。
你想搞清楚如果跨语言编程,最好彻底明白C语言的机制。也就是写一段函数调用程序比如下面的
main()
{ int i;}
fu(int i)
{in j}
然后编译成汇编语言,好好研究一下。或者再复杂一点。请参考。
有什么问题再向我提问
Printf scanf
应该不能直接调用的。可以写出替代函数,
就以输出为例。将光标定位在下一个位置,向显存输入字符。用足够大的连续的空间存放字符串。
这样做成可以随时调用的子函数就好了。
还可以锻炼自己。
或者是反汇编一下VC的PRINTF 函数。
网站名称:汇编调用c语言函数 汇编语言调用c程序
文章路径:https://www.cdcxhl.com/article20/doipico.html
成都网站建设公司_创新互联,为您提供网站建设、全网营销推广、服务器托管、云服务器、面包屑导航、电子商务
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联