gpt4 book ai didi

c - ARM 汇编程序 - 如何使用 CMP、BLT 和 BGT?

转载 作者:太空狗 更新时间:2023-10-29 17:08:57 25 4
gpt4 key购买 nike

问你们一个小问题,在我的循环中,我需要使用 CMP 、 BLT 和 BGT 来比较一些值。如何在以下循环中使用所述指令?

我正在尝试使用 BGT 、 BLT 和 CMP ,因为我需要它们来使我的应用程序正常工作。问题是我不知道如何使用它们。如果我想使用 CMP 比较 r6 和 r4 并将差值放入 r7,我该怎么做?同样的问题,如果我想在 r7 小于 0 时使用 BLT,我该怎么做?

  BGT ??????? ; branch if greater than 5
CMP ???????? ; compare r6 with r4 , put difference into r7
BLT ???????? ;branch if r7 is less than 0
BGT ???????? ;branch if r7 is greater than 0

这是我的整个循环:

LoopStart

BL WaitBUT1
BL readTemp
BL checkTemp
BGT ??????? ; branch if greater than 5
BL errorVal
CMP ???????? ; compare r6 with r4 , put difference into r7
BLT ???????? ;branch if r7 is less than 0
BL FanOn
BL errorLedOn
BL systemLedOn
BL heaterOn
BGT ???????? ;branch if r7 is greater than 0
BL FanOff
BL errorLedOff
BL systemLedOff
BL heaterOff
BL WaitBUT2
BL FanOff
BL errorLedOff
BL systemLedOff
BL heaterOff

B LoopStart

最佳答案

如果不首先以某种方式设置条件寄存器,则不能执行条件分支。这可以通过 cmp 来完成或者通过添加 s大多数指令。查看 ARM 程序集文档了解详细信息。快速示例:

分支如果r0大于 5:

cmp r0, #5 ;Performs r0-5 and sets condition register
bgt label_foo ;Branches to label_foo if condition register is set to GT

比较 r6r4 , 将差异放入 r7 , 分支如果 r7 < 0 :

subs r7, r6, r4 ;Performs r7 = r6 - r4 and sets condition register
blt label_bar ;Branches to label_bar if r7 < 0 (in which case r6 < r4)

关于c - ARM 汇编程序 - 如何使用 CMP、BLT 和 BGT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10601264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com