0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ASM要被时代淘汰了吗

Q4MP_gh_c472c21 来源:TopSemic嵌入式 作者:Norman Guo 2021-11-16 15:38 次阅读

最近浏览一个挺流行的视频——X天学会单片机。内容确实通俗易懂,制作的比较用心。但其中的有个观点笔者不敢苟同,就是现在 C 语言已经强大到胜任所有任务,大家没有必要再去学习汇编语言了,直接从 C 学起就行了。

这种观点似乎有一定道理,我甚至怀疑现在是不是真的有很多同学不再学习汇编了。特别是现在大多数厂商都提供了完备的驱动代码的情况下,我们做项目基本上用不到写 ASM 代码了。

ASM 就要被时代淘汰了!可真的是这样吗?

下面我们结合两个实际工程中碰到的例子谈一下,掌握 ASM 语言对我们写出稳定高效代码的必要性。

我们看代码,主程序翻转 PORTA 的引脚 0,定时中断服务程序翻转 PORTA 的引脚 1。乍一看很难看出有什么问题。有不少同学就是这么中招儿的。这要是控制一些 LED 指示灯或蜂鸣器之类的还好,最多就是偶尔看着有点乱,或出点儿噪音。要是控制设备没准儿就要出大问题了。

有什么问题呢?因为中断发生时,主程序将在上一条正在执行中的语句执行完后中止运行。这里一定要注意,这里说的语句,不是一条 C 语句,而是一条 ASM 语句。我们在调试环境看一下反汇编。一条 C 语句被编译成了多条 ASM 语句。

LDRH r1, [r5,#0x14] (1)

EORS r1,r1,r4 (2)

STRH r1,[r5,#0x14] (3)

我们看到一条 C 语句实际上编译为 3 句 ASM,(1)把 PORTA 当前内容读进 r1,(2)最低位通过异或取反,(3)把取反后的值输出至 PORTA。如果中断恰好发生在 (1)或 (2)的执行期间,那么中断服务程序对 PORTA 引脚 1 的操作,会被主程序中语句(3)覆盖掉。

要避免这种情况,可以在操作 IO 端口(或其它类似的操作)前禁止中断,操作完之后再允许中断。在一些有位带(Bit Map)的单片机里,对单个引脚的操作可以通过位带区操作,避免各引脚之间互相影响。

汇编语言的使用,还可以大幅度的提高代码的效率。即使现在编译器的效率已经挺高了,但毕竟机器还是要比人笨一点儿。

举个例子,有不少工程里面需要用到浮点运算。如果直接调用浮点运算库,可以轻松的完成任务。但这样有一个限制,就是运算过程一直以最大的精度来运算,相当浪费 MCU 的时间。

我们的应用可能并不需要这么高的精度,而是需要尽快的完成运算并保留一定精度即可。在此情况下,如果我们用嵌入 ASM 做运算,可以通过减少迭代运算次数 (精度和迭代运算次数成正比)达到快速完成运算。在发动机控制等分秒必争的领域,有时候这样做是很有必要的。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6035

    文章

    44554

    浏览量

    634624
  • C语言
    +关注

    关注

    180

    文章

    7604

    浏览量

    136683
  • ASM
    ASM
    +关注

    关注

    1

    文章

    68

    浏览量

    19038

原文标题:ASM真要被扫进历史的垃圾堆了吗?

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    数据库数据恢复—Oracle ASM实例无法挂载的数据恢复案例

    Oracle数据库数据恢复环境&故障: Oracle ASM磁盘组由4块磁盘组成。Oracle ASM磁盘组掉线 ,ASM实例不能mount。 Oracle数据库故障分析&恢复
    的头像 发表于 10-28 11:26 153次阅读
    数据库数据恢复—Oracle <b class='flag-5'>ASM</b>实例无法挂载的数据恢复案例

    ASM推出全新PE2O8碳化硅外延机台

    全新推出的PE2O8碳化硅外延机台是对行业领先的ASM单晶片碳化硅外延机台产品组合(包含适用于6英寸晶圆的 PE1O6 和适用于8英寸晶圆的 PE1O8)的进一步增强。该机台采用独立双腔设计,兼容6
    发表于 10-17 14:21 152次阅读
    <b class='flag-5'>ASM</b>推出全新PE2O8碳化硅外延机台

    ASM推出全新PE2O8碳化硅外延机台

    全新推出的PE2O8碳化硅外延机台是对行业领先的ASM单晶片碳化硅外延机台产品组合(包含适用于6英寸晶圆的 PE1O6 和适用于8英寸晶圆的 PE1O8)的进一步增强。该机台采用独立双腔设计,兼容6
    发表于 10-17 14:11 366次阅读
    <b class='flag-5'>ASM</b>推出全新PE2O8碳化硅外延机台

    换电要被超快充淘汰了?

    当超快充已经可以实现「充电5分钟,续航增加200多公里」时,就会出现一种声音: 超快充技术发展这么快 换电马上就要被淘汰了? —— 错! 蔚来「可充也可换」,给你多一种选择 最好的服务体系不应只提供
    的头像 发表于 09-13 11:20 437次阅读

    电感很烫是短路了吗

    电子发烧友网站提供《电感很烫是短路了吗.docx》资料免费下载
    发表于 09-04 11:31 0次下载

    ASM330LHH使用FIFO阈值中断输出时工作异常的原因?

    GPIO_Pin){ if(GPIO_Pin == IMU_INT1_Pin) {asm330lhh_fifo_read(); }}void asm
    发表于 07-22 06:06

    车路云协同,这次它真的来了吗

    随着科技的快速发展,“车路云协同”正在悄然发生变化。我们离科幻电影《机械公敌》中威尔•史密斯驾驶的汽车能准确甄别交通状况并调整行驶状态的时代就要来了吗?背景说明“车路协同”已经不是什么新鲜名词
    的头像 发表于 06-13 08:25 508次阅读
    车路云协同,这次它真的来<b class='flag-5'>了吗</b>?

    如何将ASM集成到PSoC5LP项目中?

    : CPU_PSoC_5_Asm
    发表于 05-24 06:26

    采用ASM330LHH惯导模块输出异常的原因?

    硬件设备:单相机+IMU 融合算法:open_vins ASM330LHH设置ASM330LHH_XL_ODR_104Hz,ASM330LHH_2g,ASM330LHH_125dps
    发表于 03-25 06:06

    不会用AI的人被淘汰?讯飞AI鼠标AM30助你迎接AI时代

    不会用AI的人被淘汰?讯飞智能鼠标助你迎接AI时代 随着AI时代的到来,人们对于智能助手的需求也日益增长。 想在这个竞争激烈的时代中不被淘汰
    的头像 发表于 03-23 13:44 714次阅读
    不会用AI的人被<b class='flag-5'>淘汰</b>?讯飞AI鼠标AM30助你迎接AI<b class='flag-5'>时代</b>

    AI时代怎么样不被淘汰?讯飞AI鼠标助力你在AI时代成长

    AI时代怎么样不被淘汰?讯飞AI鼠标助力你在AI时代成长 随着人工智能的发展,AI时代已经悄然而至。在这个时代,不会使用AI技术的人将面临被
    的头像 发表于 03-23 11:41 689次阅读
    AI<b class='flag-5'>时代</b>怎么样不被<b class='flag-5'>淘汰</b>?讯飞AI鼠标助力你在AI<b class='flag-5'>时代</b>成长

    铅框架-ASM C7025 RoHS/卤化物测试报告

    电子发烧友网站提供《铅框架-ASM C7025 RoHS/卤化物测试报告.pdf》资料免费下载
    发表于 02-05 09:55 0次下载
    铅框架-<b class='flag-5'>ASM</b> C7025 RoHS/卤化物测试报告

    铅框架-ASM TECH A194 RoHS/卤化物测试报告

    电子发烧友网站提供《铅框架-ASM TECH A194 RoHS/卤化物测试报告.pdf》资料免费下载
    发表于 02-05 09:54 0次下载
    铅框架-<b class='flag-5'>ASM</b> TECH A194 RoHS/卤化物测试报告

    【数据库数据恢复】Oracle数据库ASM实例无法挂载的数据恢复案例

    oracle数据库ASM磁盘组掉线,ASM实例不能挂载。数据库管理员尝试修复数据库,但是没有成功。
    的头像 发表于 02-01 17:39 518次阅读
    【数据库数据恢复】Oracle数据库<b class='flag-5'>ASM</b>实例无法挂载的数据恢复案例

    铅框架-ASM A 板块RoHS/卤化物测试报告

    电子发烧友网站提供《铅框架-ASM A 板块RoHS/卤化物测试报告.pdf》资料免费下载
    发表于 01-31 10:16 0次下载
    铅框架-<b class='flag-5'>ASM</b> A 板块RoHS/卤化物测试报告