打印

求教MSP430的汇编代码

[复制链接]
2523|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
msp430_hp|  楼主 | 2012-4-1 16:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟刚接触MSP430,老板丢来一段汇编代码,实在看不懂是什么用途。摘取其中一个数据处理的函数。
主要是不明白它的SWPB交换字节一般是做什么用的?还有一大堆的移位操作。搞明白了这个大概也就能知道它是什么用途了。
虚心求教。。。。

/////////////
// E4BC
     PUSH.W R6
// E4BE
     MOV.W  R13 , R6
// E4C0
     ADD.W  R6 , R6
// E4C2
     CMP.W  #0xFF01 , R6
// E4C6
     JC   0xE5A4
     
// E4C8
     MOV.W  R15 , R6
// E4CA
     ADD.W  R6 , R6
// E4CC
     CMP.W  #0xFF01 , R6
// E4D0
     JC   0xE4EA
     
// E4D2
     MOV.W  R15 , R6
// E4D4
     AND.W  #0x8000 , R6
// E4D8
     XOR.W  R6 , R13
// E4DA
     MOV.W  R13 , R6
// E4DC
     ADD.W  R6 , R6
// E4DE
     CMP.W  #0xFF00 , R6
// E4E2
     JNZ  0xE4EE
     
     
// E4E4
     MOV.W  R15 , R6
// E4E6
     ADD.W  R6 , R6
// E4E8
     JNZ  0xE5A4
     
// E4EA
     MOV.W  #FFFF , R13
// E4EC
     JMP   0xE5A4
     
     
     
// E4EE
     MOV.W  R15 , R6
// E4F0
     ADD.W  R6 , R6
// E4F2
     CMP.W  #0xFF00 , R6
// E4F6
     MOV.W  #0x7FFF , R6
     
     
// E4FA
     JNZ  0xE50C
     
     
// E4FC
     BIT.W  R6 , R13
// E4FE
     JZ   0xE4EA
     
     
// E500
     AND.W  #0x8000 , R13
// E504
     BIS.W  #0x7F80 , R13
// E508
     MOV.W  #0 , R12
// E50A
     JMP   0xE5A4
     
     
     
// E50C
     BIT.W  R6 , R13
// E50E
     JZ   0xE5A4
     
     
// E510
     BIT.W  R6 , R15
// E512
     JNZ  0xE518
     
     
     
// E514
     BIC.W  R6 , R13
// E516
     JMP   0xE508
     
     
     
     ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
// E518
     PUSH.W R10
// E51A
     PUSH.W R11
// E51C
     PUSH.W R8
// E51E
     MOV.W  R12 , R10
// E520
     MOV.W  R13 , R11
// E522
     BIS.W  #0x80 , R11
// E526
     ADD.W  R13 , R13
// E528
     SWPB R13
// E52A
     MOV.B  R13 , R8
// E52C
     MOV.W  #0 , R12
// E52E
     MOV.W  #0 , R13
// E530
     MOV.W  #0 , R6
// E532
     CMP.W  #0 , R14
// E534
     JZ   0xE550
     
     
// E536
     MOV.W  #1 , R6
// E538
     CMP.B  #0 , R14
// E53A
     JNZ  0xE540
     
     
// E53C
     SWPB R6
// E53E
     SWPB R14
     
     
// E540
     RRC.W R14
// E542
     JLO  0xE548
     
     
// E544
     ADD.W  R10 , R12
// E546
     ADDC.B  R11 , R13
// E548
     RRC.B R13
// E54A
     RRC.W R12
// E54C
     ADDC.W  R6 , R6
// E54E
     JLO  0xE540
     
     
// E550
     MOV.W  #2 , R6
// E552
     JZ   0xE556
// E554
     BIS.W  #1 , R6
// E556
     RRC.W R15
// E558
     JLO  0xE55E
// E55A
     ADD.W  R10 , R12
// E55C
     ADDC.B  R11 , R13
// E55E
     RRC.B R13
// E560
     RRC.W R12
// E562
     ADDC.B  R6 , R6
// E564
     JLO  0xE556
// E566
     AND.W  #0xFF , R15
// E56A
     ADD.W  R15 , R8
// E56C
     SUB.W  #0x7F , R8
// E570
     JN   0xE5BC
     
     
// E572
     CMP.W  #0xFF , R8
// E576
     JGE   0xE5C0
     
     
// E578
     ADD.W  R10 , R12
// E57A
     ADDC.B  R11 , R13
// E57C
     JLO  0xE5A8
     
     
// E57E
     ADD.W  #1 , R8
// E580
     CMP.B  #FFFF , R8
// E582
     JZ   0xE5C0
     
     
// E584
     ADD.W  R11 , R11
// E586
     RRC.B R8
// E588
     RRC.B R13
// E58A
     SWPB R8
// E58C
     BIS.W  R8 , R13
// E58E
     RRC.W R12
// E590
     JLO  0xE59E
// E592
     CMP.W  #0 , R6
// E594
     JNZ  0xE59A
// E596
     BIT.W  #1 , R12
// E598
     JZ   0xE59E
// E59A
     ADD.W  #1 , R12
// E59C
     ADDC.W  #0 , R13
// E59E
     POP.W  @R1+ , R8
// E5A0
     POP.W  @R1+ , R11
// E5A2
     POP.W  @R1+ , R10
// E5A4
     POP.W  @R1+ , R6
// E5A6
     RET
//

// E5A8
     CMP.W  #0 , R8
// E5AA
     JZ   0xE5B4
// E5AC
     RRA.W R6
// E5AE
     ADDC.W  R12 , R12
// E5B0
     ADDC.B  R13 , R13
// E5B2
     JMP   0xE584
// E5B4
     CMP.B  #FFFF , R13
// E5B6
     JNZ  0xE5BC
// E5B8
     CMP.W  #FFFF , R12
// E5BA
     JZ   0xE584
// E5BC
     MOV.W  #0 , R13
// E5BE
     JMP   0xE5C4
// E5C0
     MOV.W  #0xFF00 , R13
// E5C4
     ADD.W  R11 , R11
// E5C6
     RRC.W R13
// E5C8
     MOV.W  #0 , R12
// E5CA
     JMP   0xE59E

相关帖子

沙发
21IC之星| | 2012-4-1 17:09 | 只看该作者
反汇编的阿

使用特权

评论回复
板凳
msp430_hp|  楼主 | 2012-4-1 17:14 | 只看该作者
嗯,是的,让我弄明白这段代码,都没有用过汇编,搞得头大了。
或者能否指点一下应该怎么看汇编代码呢?

使用特权

评论回复
地板
joyme| | 2012-4-1 17:18 | 只看该作者
SWPB就是交换字节即高、低8位交换相对于:
unsigned int  x = (x>>8) + ((x & 0x00ff) << 8)

使用特权

评论回复
5
msp430_hp|  楼主 | 2012-4-1 17:28 | 只看该作者
这个操作我知道,但是为什么要这样用呢,一般用在什么场合呢?

使用特权

评论回复
6
jojojoy| | 2012-4-1 17:35 | 只看该作者
学过的东西 又还回去了。。。

使用特权

评论回复
7
msp430_hp|  楼主 | 2012-4-1 22:36 | 只看该作者
:(

使用特权

评论回复
8
batsong| | 2012-4-2 11:31 | 只看该作者
汇编代码,必须先知道大概啥功能,才能看懂,不然比较难搞

使用特权

评论回复
9
3C农民工| | 2013-11-25 15:04 | 只看该作者
我也在弄汇编

使用特权

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

本版积分规则

0

主题

7

帖子

0

粉丝