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

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

    关注

    6011

    文章

    44158

    浏览量

    624447
  • C语言
    +关注

    关注

    180

    文章

    7551

    浏览量

    131909
  • ASM
    ASM
    +关注

    关注

    1

    文章

    66

    浏览量

    18915

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

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

收藏 人收藏

    评论

    相关推荐

    如何将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 520次阅读
    不会用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 482次阅读
    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/卤化物测试报告

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

    oracle数据库ASM磁盘组掉线,ASM实例不能挂载。数据库管理员尝试修复数据库,但是没有成功。
    的头像 发表于 02-01 17:39 262次阅读
    【数据库数据恢复】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/卤化物测试报告

    redis的淘汰策略

    Redis是一种基于内存的键值存储系统,为了充分利用内存,Redis采用了一些淘汰策略来管理内存空间。淘汰策略的作用是当内存空间不足时,选择合适的数据对象进行淘汰,释放出更多的内存空间,以供后续
    的头像 发表于 12-04 16:23 384次阅读

    要被电压基准长期漂移和迟滞所蒙蔽

    电子发烧友网站提供《不要被电压基准长期漂移和迟滞所蒙蔽.pdf》资料免费下载
    发表于 11-22 11:00 0次下载
    不<b class='flag-5'>要被</b>电压基准长期漂移和迟滞所蒙蔽

    荷兰半导体设备制造商ASM上调2025年营收目标

    asm预计两年内销售额将从28亿至34亿欧元增加到30亿至36亿欧元。asm还重申了2023至2025年的总利润率为46%至50%,营业利润率为26至31%的目标。他还表示,将2026年至2027年设定了同样的目标,此后营业利润率将呈现上升趋势。
    的头像 发表于 09-27 09:45 636次阅读

    ASM通过SBTi验证净零排放目标

    半导体芯科技编译 SBTi已验证ASM到2035年实现净零排放的科学目标。 ASM是半导体行业第一家获得科学碳目标倡议SBTi对其净零目标验证的公司,这是通过SBTi流程获得的最雄心勃勃的目标指定
    的头像 发表于 09-14 15:44 279次阅读

    ASM330LHH汽车惯性模块的相关资料

    本文档旨在提供 ST ASM330LHH 汽车惯性模块相关的使用信息和应用提示。ASM330LHH 是系统级封装的 3D 数字加速度计和 3D 数字陀螺仪,具有数字 I²C/SPI 串口标准输出
    发表于 09-13 06:41

    错过就要被淘汰掉?这个电子测试超重要项目你了解多少?

    任何测试都会有误差的存在。假设我们现在有个项目:设计一个LNA,其噪声系数NF=2dB.测试误差为±0.5dB。这就意味着设计人员需将NF指标控制在1.5dB甚至更低,NF超1.5dB的产品在测试过程中就要被淘汰掉。如果将测试误差降低至±0.2dB,只要
    的头像 发表于 08-16 14:16 446次阅读
    错过就<b class='flag-5'>要被</b><b class='flag-5'>淘汰</b>掉?这个电子测试超重要项目你了解多少?

    数据库数据恢复-Oracle ASM故障数据恢复案例

    数据库数据恢复环境: Oracle数据库ASM磁盘组有4块成员盘。 数据库故障&分析: Oracle数据库ASM磁盘组掉线 ,ASM实例无法挂载,用户联系我们要求恢复oracle数据库。
    的头像 发表于 08-11 15:27 960次阅读
    数据库数据恢复-Oracle <b class='flag-5'>ASM</b>故障数据恢复案例

    AI时代,程序员真的要被淘汰了吗?如何才能提高竞争力?

    随着 ChatGPT 的横空出世,给全球带来了巨大冲击,各种大语言模型如雨后春笋不断出现。国外如谷歌 Bard、Anthropic 的 Claude,国内如百度文心一言、阿里通义千问、讯飞星火认知大模型、昆仑万维天工大模型等。
    的头像 发表于 08-01 15:17 951次阅读