②在KILE软件的菜单中,选择Project-->Options for  Target 'Target 1',-->Listing选择Assembly code就能生产*.LST文件。在LST文件中就有生产的汇编代码。如果便于直观查看,在调试时,选择Disassembly可以单步调试擦看C-->汇编的转换。

③C转汇编的实际过程是,C--->汇编,C--->HEX--->汇编,后面的这个叫反汇编。再有了LST,那么如何转呢?

1、汇编和C语言都一样,通常都是程序模块化写程序,那么汇编和C都按照模块化转过来。

2、注意不要堆栈溢出,比如CALL不要用得过多,多添加jmp跳转。

3、修改完毕后,注意时间的匹配、注意代码书写的优化。

4、如果是改为不同芯片的使用,PIC<--->51、AVR<--->51、430<---->51等待都要注意汇编指令功能相似,但是格式有变,仔细修改反复运行几次方能得到理想效果。

5、综上,C<--->汇编,无论你是正转还是反转,你必须对要转成的语言非常熟悉,实际上你懂原理,基本上都能重写一遍,只是通过这样的转换,能极大地提高效率,修修改改就完事。

④C语言调用汇编子程序,把汇编语句嵌入C代码中,或把汇编封装起来。按如下设置:

1、在Project Workspace中右键.c文件,并写勾选Options for File中的两项,Generate Assembler SRC File和Assemble SRC File(勾选后成实线勾)

2、代码书写有这样两种格式:(仿真时在.src文件中我们能看到整体编译后的汇编)

#pragma ASM
MOV A, #0xAA
MOV P1, A
#pragma ENDASM

或者

__asm  MOV A, #0x33

__asm  MOV P2, A

3、若要把汇编直接改为C这个没办法,只能按汇编语句逐步用C修改,把寄存器的位配置好,时间达到要求,按汇编的时序改就简单可靠了。

4、对于ARM你就自认倒霉吧,动不动就用C直接调用汇编子程序(为了效率)。尽量别把底层汇编改了。

关于C转汇编(转自网上)的更多相关文章

  1. VS的 X64下的汇编编译

    参考博客 VS编译64位汇编时报错:error C4235: 使用了非标准扩展: 不支持在此结构上使用“_asm”关键字 在用VS2013编译内联汇编时,报如下错误: 错误    5    error ...

  2. 冷知识:达夫设备(Duff's Device)效率真的很高吗?

    ID:技术让梦想更伟大 作者:李肖遥 wechat链接:https://mp.weixin.qq.com/s/b1jQDH22hk9lhdC9nDqI6w 相信大家写业务逻辑的时候,都是面向if.el ...

  3. 使用DOSBox在Win7_x64下搭建汇编环境

    1. 软件安装 1. debug.exe,masm.exe,link.exe,edit.com等汇编工具,一般32位的windows系统有自带,但64位系统下并没有,而且将32位系统下的工具拷贝到64 ...

  4. 在64位windows 7上安装汇编调试工具debug.exe的方法

    最近我在研究汇编,书中介绍的调试工具还是基于WinXP 32bit时代中自带debug.exe进行调试,但是64bit的Windows XP.Vista.Win7.Win8都已经不自带这个工具了,网上 ...

  5. 汇编Ring 3下实现 HOOK API

    [文章标题]汇编ring3下实现HOOK API [文章作者]nohacks(非安全,hacker0058) [作者主页]hacker0058.ys168.com [文章出处]看雪论坛(bbs.ped ...

  6. Win32汇编环境配置

    放假了,发现自己知识面窄,趁有时间就打算折腾下Win32汇编.其实在学校也上过汇编课,是基于dos的.那时老师不务正业,老跟我们讲政治经济文化,唯独不怎么讲课;再加上自己的问题,导致了dos汇编学得好 ...

  7. 第一个嵌入汇编的C程序

    最近两天开始学习linux内核,看了赵炯博士的<linux内核完全注释>感觉受益匪浅.今天看到第三章 嵌入汇编部分,于是写了一个小程序试验了一下,用gcc编译通过.代码如下: #inclu ...

  8. 内联汇编和JMP到内联函数注意事项

    对于jmp类型的hook, 如果自己的过程没有使用_declspec(naked),那么系统会自动给添加一些额外的代码,控制堆栈平衡,但是这些额外的代码会破坏被hook函数的堆栈. 对于call类型的 ...

  9. 从汇编来看c语言之变量

    1.基础研究 对如图程序进行编译连接,再用debug加载. 我们在偏移地址1fa处查看main函数的内容: 执行到1fd处,发现n的偏移地址为01a6,段地址存储在ds寄存器里,为07c4. 再查看函 ...

随机推荐

  1. Rails : css或js文件无法成功预编译或调用jquery类插件时预编译问题

    调用bootstrap css框架时,将bootstrap文件夹放入 vendor/assets/下 bootstrap文件结构如下:    [shenma@localhost demo]$ ls v ...

  2. VR全景项目外包团队— VR/AR相关领域介绍和VR全景案例

    VR/AR相关领域这里我要说的一点就是硬件.诚然,硬件的确很难搞,国内在这方面就是荒漠,所以,如果你有信心,完全可以开拓一片蓝海.注意我是说真正的硬件,那些把Google的纸盒子拿来改改就能融资千万的 ...

  3. Adaptive Decontamination of the Training Set: A Unified Formulation for Discriminative Visual Tracking

    Martin Danelljan 判决类追踪模型是由训练样本学习得到,但是为了适应目标和背景的变化sample set在每一帧中都会更新. 令(xjk, yjk)表示第k帧k={1,2,...,t}中 ...

  4. Python多线程、进程入门1

    进程是资源的一个集合, 1.一个应用程序,可以有多进程和多线程 2.默认一个程序是单进程单线程 IO操作使用多线程提高并发 计算操作使用多进程提高并发 进程与线程区别 1.线程共享内存空间,进程的内存 ...

  5. bzoj1553: XOR网络

    Description   计算给定范围内有多少种输入可以使输出为1. 我们假设3 < n < 100, 3 < m < 3000,而且网络中的门是用1到m之间的数任意编号的. ...

  6. 关于Windows2008服务器设置MIME后仍然无法播放MP4的解决方法

    最近遇到了一个非常邪门的故障,重新安装了Windows2008服务器后 Mp4无法正常播放: 整个互联网中关于设置MP4的方法基本都是教你如何在IIS中设置MIME 本文讨论的不是如何教你设置MIME ...

  7. (C++) LNK2019: unresolved external symbol.

    Error 33 error LNK2019: unresolved external symbol "\xxx.obj yyy.Native 仔细看看错误信息,后来发现尽然是构造函数的一个 ...

  8. css相对定位+浮动实现元素位置互换

    1.设置元素透明度 opacity:0.5; // w3c filter:alpha(opacity=50); //IE 2 position:relative; float:left; 一起使用的效 ...

  9. JavaScript 命名规则

    来源 :http://www.codelifter.com/main/tips/tip_020.shtml The following are the rules for naming JavaScr ...

  10. Java:国际化

    Java的国际化: 资源文件的命名可以有如下三种形式:baseName _ language _country.properties baseName _language.properties bas ...