打印
[PIC®/AVR®/dsPIC®产品]

AVR单片机 内联汇编的请教

[复制链接]
1717|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
elephant00|  楼主 | 2024-12-10 10:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在读别人的程序中 有下面一段代码~~
__asm__ __volatile__ (
              "1: sbiw %0,1" "\n\t" // 2 cycles
              "brne 1b" : "=w" (us) : "0" (us) // 2 cycles
      );

想问一下  "brne 1b" 中的1b是什么意思~~ 是跳转到1:位置吗??如果是 B代表什么意思啊

使用特权

评论回复
评论
xch 2024-12-11 09:43 回复TA
跟踪一下反汇编就好理解。编译能不能通过还另说。先证明它没错再琢磨。反正老子看不懂这b 
沙发
laocuo1142| | 2024-12-10 10:56 | 只看该作者
Branch(跳转)指令的一部分

使用特权

评论回复
板凳
ynwa| | 2024-12-10 15:19 | 只看该作者
在C项目中嵌入汇编用的就是汇编指令本身。如果你对汇编指令不了解,建议你查阅AVR汇编指令集手册:https://ww1.microchip.com/downloads/aemDocuments/documents/MCU08/ProductDocuments/ReferenceManuals/AVR-InstructionSet-Manual-DS40002198.pdf

使用特权

评论回复
地板
xch| | 2024-12-11 09:22 | 只看该作者
看样子是GCC 编译器。__asm__ 是GCC 内联汇编指令。

使用特权

评论回复
5
xch| | 2024-12-12 12:41 | 只看该作者
本帖最后由 xch 于 2024-12-12 12:42 编辑

  be:        8a e0               ldi        r24, 0x0A        ; 10
  c0:        01 97               sbiw        r24, 0x01        ; 1
  c2:        f1 f7               brne        .-4              ; 0xc0 <main+0x2>
  c4:        ff cf               rjmp        .-2              ; 0xc4 <main+0x6>

//GCC编译后产生的汇编代码

使用特权

评论回复
6
zhuotuzi| | 2024-12-13 14:27 | 只看该作者
怎么还在用汇编

使用特权

评论回复
7
lcczg| | 2024-12-16 09:37 | 只看该作者
"1b" 是一个相对跳转的标签,其中 "b" 代表 "backwards","1" 代表跳转的位置。所以 "1b" 的意思是向后跳转到第一个标签。应该是这个意思

使用特权

评论回复
8
598330983| | 2025-1-12 18:16 | 只看该作者
怎么还在用汇编啊,我看MCC生成的代码有一些通过宏定义到了汇编指令。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1007

主题

3305

帖子

7

粉丝