MOVS r0,#0x03 什么意思,MOVS和MOV有什么区别?

2025-05-07 13:07:38
推荐回答(2个)
回答1:

MOVS 里的S其实只是一个影响标志位的参数,加了S表示这个MOV指令会影响CPSR(当前程序状态寄存器)中的标志位,至于标志位详细可以自行翻资料看看 N位 结果是否为负数,C位:进位移位借位溢出位 V位:overflow位 Z位:结果是否为0 。
你这里的程序的话 看这一句应该是 非零立即数赋值0x03给寄存器R0,所以0标志位会清零,表示结果不为0,所以会影响标志位,所以加了S参数。

回答2:

#ADDR0代表一个8位立即数,这条指令就是把这个数送到R0寄存器中。
比如:
MOV R0,#40H