首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AVR函数计算

AVR函数计算
EN

Stack Overflow用户
提问于 2015-04-14 21:29:41
回答 1查看 82关注 0票数 0

我正在寻找这个功能的代码或AVR的帮助。或者,如果不是代码,我能得到一些如何做的线索吗?

代码语言:javascript
复制
R20 = (4 * R16 + 3 * R17 - R18) / 8

现在我有这样的东西:

代码语言:javascript
复制
.org 0x0000

start:
.DEF ANSL = R0
.DEF ANSH = R1  
.DEF    A = R19
.DEF    B = R21
.DEF    C = R22
.DEF    D = R20

        ldi A, 4
        ldi B, 3
        ldi C, 8

        ldi R16, 5
        ldi R17, 10
        ldi R18, 58

        MUL A,R16   (4 * R16)
        MUL B,R17   (3 * R17)
        add A,B     (4 * R16 + 3*R17)
        sub A, R18  (4 * R16+3*R17 - R18)

我不确定它的代码是否正确。

EN

回答 1

Stack Overflow用户

发布于 2015-04-22 21:47:02

当乘/除2的幂时,用移位操作替换MUL和DIV指令:

代码语言:javascript
复制
MOV r20, r17    ; start with r17*3
LSL r17         ; left shift is multiply by 2
ADD r20, r17    ; now r20 is 3* r17 (r17 + 2*r17)

LSL r16         ; each left shift is a multiplication by 2
LSL r16         ; 
ADD r20, r16    ; now r20 is 3* r17 + 4* r16

SUB r20, r18    ; now r20 is 3* r17 + 4* r16 - r18

LSR r20         ; each right shift is a division by 2
LSR r20
LSR r20
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29628670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档