这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 最近刚开始学ARM ,中间遇到一个问题请大家帮忙!

共10条 1/1 1 跳转至

最近刚开始学ARM ,中间遇到一个问题请大家帮忙!

菜鸟
2006-12-19 17:08:36     打赏

看到一些样板程序有一条语句
LDR R0,=0x3FF0000
不知道上面这个等号是什么意思?能起到什么样的作用?
先谢大家了!!!!

期待回音!!!




关键词: 最近     刚开始     中间     遇到     一个     问题     大家     帮忙    

院士
2006-12-19 17:11:00     打赏
2楼

等等啊~~

TX们,还木来~


菜鸟
2006-12-19 18:11:00     打赏
3楼

LDR R0,=0x3FF0000的意思就是把0x3FF0000这个数赋给R0

这是一种伪指令的写法。因为ARM的汇编对立即数的赋值有限制,所以0x3FF0000这个数无法用一条指令赋给寄存器。为了避免麻烦程序员自己去考虑立即数的限制,所以制定了这个伪指令LDR Rx, =0xXXXXXXXX。你只需要这么写,如果可以用一条指令完成,汇编器会把它变成相应的指令,如果不能用一条指令完成,汇编器会将它翻译成两条指令。


菜鸟
2006-12-19 22:08:00     打赏
4楼

如果安楼上的朋友这么说是否把:

LDR RO ,=0XFF30000

改成:

MOV RO ,#0XFF30000


菜鸟
2006-12-20 07:11:00     打赏
5楼

MOV 指令操作一个8位的数


菜鸟
2006-12-21 02:08:00     打赏
6楼
不能改成

MOV RO ,#0XFF30000

因为我说过0XFF30000这个数超过一条指令所能赋值的限制

如果是0xff000000就可以


菜鸟
2009-11-20 10:09:29     打赏
7楼

一条指令赋值有什么限制。0xff30000和0xff00000有什么不同吗?


菜鸟
2009-11-23 10:41:49     打赏
8楼
在ARM中用MOV指令的立即数必须符合8位图,如果不符合,只能用LDR Rn,=0xff30000这条伪指令

工程师
2009-12-16 08:59:37     打赏
9楼
MOV 指令的第二操作数要么是0~255之间的一个数,要么就是这个数循环移位偶数位(0,2,4,。。。。。。12)后的数。如果立即数不符合,可以用LDR指令加文字池解决,但文字池的距离离LDR指令不能超过4KB

菜鸟
2010-01-25 23:19:51     打赏
10楼
恩,是数的范围问题,但是看了好久

共10条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]