stm32汇编fcmp
时间: 2023-10-19 19:07:51 浏览: 36
在STM32汇编中,`FCMP`是用于比较两个浮点数的指令。它的语法格式如下:
```
FCMP <Sd>, <Sm>
```
其中,`<Sd>`表示目标寄存器,`<Sm>`表示源寄存器。这条指令会将目标寄存器和源寄存器中的浮点数进行比较,并将结果存储在协处理器的状态寄存器中。
比较结果有三种情况:
- 如果源寄存器中的浮点数小于目标寄存器中的浮点数,则状态寄存器的比较标志位被设置为小于(C=1,N=0,Z=0)。
- 如果源寄存器中的浮点数等于目标寄存器中的浮点数,则状态寄存器的比较标志位被设置为等于(C=0,N=0,Z=1)。
- 如果源寄存器中的浮点数大于目标寄存器中的浮点数,则状态寄存器的比较标志位被设置为大于(C=0,N=1,Z=0)。
下面是一个示例:
```
AREA Example, CODE, READONLY
ENTRY
; 设置 FPU 为启动状态
LDR R0, =0x4002104C
MOV R1, #0x08000000
STR R1, [R0]
; 将两个浮点数存储到寄存器中
VLDR S0, =3.14
VLDR S1, =2.71
; 比较这两个浮点数
FCMP S0, S1
; 检查比较结果
VMRS APSR_nzcv, FPSCR
BNE greater_than
BEQ equal_to
BLT less_than
greater_than
; 源寄存器中的浮点数大于目标寄存器中的浮点数
; 这里可以添加相应的代码
...
equal_to
; 源寄存器中的浮点数等于目标寄存器中的浮点数
; 这里可以添加相应的代码
...
less_than
; 源寄存器中的浮点数小于目标寄存器中的浮点数
; 这里可以添加相应的代码
...
END
```