- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【Word版本下载可任意编辑】
PAGE
1 - / NUMPAGES 1
嵌入式汇编语言学习经验
近参与了一个项目,需要用嵌入式汇编写测试程序。汇编程序写过,C程序也写过,但是将它们混合起来写还是次,完全没有概念。只能上网找资料,自己慢慢摸索。 自己一直用Windows操作系统,但是我们的项目是在Linux系统上,这两者的汇编语言系统是不同的,windows一直是Intel汇编,而Linux是AtT汇编。为了调试的方便,我决定现在windows中尝试着写点嵌入式汇编,然后再在Linux中写(主要原因是自己对Linux调试不熟悉)。 首先遇到的个问题是,格式到底是什么。上网查资料,前篇一律,都是_asm_ _volatile_(…);格式,但是自己弄的时候总是不行,说明网络虽好,但是不可盲目相信。经过多番测试,我发现windows下嵌入式汇编的格式只有_asm关键字,也没有volatile;以前的括号现在也变成大括号,也没有引号。我自己写的一个简单测试程序为: #include #include //测试bsf指令 void test() { int value,index=32; _asm { mov eax,index bsf ebx,eax mov value,ebx } printf(value is %d/n,value); } void main() { printf(Hello World/n); test(); } Windows嵌入式汇编的特点是: 1. 汇编是Intel汇编,而不是ATT汇编; 2. 关键字是_asm,而不是其他,这个有可能和自己的环境有关,如果你自己重新定义宏,那就是你自己定义的关键字;3. 虽说有volatile关键字,但是用上却报错,具体我也不知道怎么用;4. 没有冒号指定输入输出,要输入和输出的数可以直接在汇编语言中使用;5. 汇编代码要用大括号包围,而不是小括号,而且也没有分号;6. 如果不用大括号包围,则必须每句汇编代码之前都有_asm关键字。 从上面的表达中,可以看出貌似windows嵌入式汇编要简单很多。 在windows中搞定之后,就要在Linux中开展测试。我首先做的就是直接复制在windows中的程序到Linux中,很明显自己的无知是要报错的。 有经过多番测试,得到在Linux中执行无误的代码为: #include void test() { int bsf=0,bsr=0,input=0x12345,flag; asm volatile (movl %3,%%eax/n movl %3,%%ebx/n bsf %3,%%cx/n movzwl %%cx,%0/n bsr %3,%%dx/n movzwl %%dx,%1/n pushf/n pop %2/n :=r(bsf),=r(bsr),=r(flag) :m(input) ); printf(bsf value is %d/n,bsf); printf(bsr value is %d/n,bsr); printf(flag is %x/n,flag); } int main() { printf(Hello World/n); test(); return 0; } 从构造来看,Linux下的要麻烦不少。首先用的汇编是windows程序员不熟悉的ATT汇编,而且还要定义输入输出,存放器用起来还要两个%……总之,比较麻烦。但是我没有贬低Linux的意思,只要用好了,功能还是很强大的。 Linux下嵌入式汇编的特点是: 1. 汇编语言是ATT,源操作数和目的操作数位置和Intel汇编相反,关于ATT汇编细节请参考其他文献;2. 嵌入式汇编的关键字也并不是_asm_ _volatile_,自己摸索出的正确的方式是:asm volatile,这个还是和自己机器的配置有个,如果该关键字不正确,大家可以测试其他类似的关键字,如asm_ ,__asm等,volatile一样;3. Linux下嵌入式汇编有输入输出和修改标识,放在汇编代码的末尾,用冒号隔开,个冒号后是输入
您可能关注的文档
- 嵌入式系统的远程抄表设计.docx
- 嵌入式系统的负压吸引器设计.docx
- 嵌入式系统的远程参数测量的设计.docx
- 嵌入式系统的自适应前照灯系统解析.docx
- 嵌入式系统的特点和Linux内核的实时应用分析.docx
- 嵌入式系统的稳压电源说明.docx
- 嵌入式系统的概述.docx
- 嵌入式系统的实时控制模块设计方案.docx
- 嵌入式系统的开发利器─Windows CE操作系统.docx
- 嵌入式系统的VGA接口设计.docx
- 8 黄山奇石(第二课时)课件(共22张PPT).pptx
- 22《纸船和风筝》教学课件(共31张PPT).pptx
- 17 松鼠 课件(共23张PPT).pptx
- 23《海底世界》课件(共28张PPT).pptx
- 21《大自然的声音》课件(共18张PPT).pptx
- 第12课《词四首——江城子 密州出猎》课件 2025—2026学年统编版语文九年级下册.pptx
- 第2课《济南的冬天》课件(共42张PPT) 2024—2025学年统编版语文七年级上册.pptx
- 17 跳水 第二课时 课件(共18张PPT).pptx
- 第六单元课外古诗词诵读《过松源晨炊漆公、约客》课件 统编版语文七年级下册.pptx
- 统编版六年级语文上册 22《文言文二则》课件(共27张PPT).pptx
最近下载
- 跨国公司经营与管理习题[30页].docx VIP
- 灌溉工程监理质量评估报告.docx VIP
- 常用油管、套管技术规格.pdf VIP
- CATTI三级笔译综合能力考试试题及答案解析(五).docx VIP
- (完整版)情态动词专项练习(含答案).docx VIP
- 2026-2031中国药用辅料市场投资策略研究报告.docx
- 众安在线财产保险股份有限公司附加恶性肿瘤质子重离子医疗保险(互联网2022版A款)费率表.docx VIP
- 2026-2031中国遥控玩具市场深度调查评估及投资方向研究.docx
- 利益联结机制合同8篇.docx VIP
- 新外研版高中英语选择性必修一单词表汉译英默写.docx VIP
原创力文档


文档评论(0)