MOV、LDR加载指令和LDR伪指令的区别

来源:互联网 发布:nginx css 不显示 编辑:程序博客网 时间:2024/04/27 18:09

1、MOV指令

MOV指令的语法格式:

 

Rd只能是寄存器

Op2寄存器或立即数

 

Op2为寄存器时:

MOV R0, R1

MOV R0, R1, LSL #4 ;将R1中的值逻辑左移4位放入R0

 

Op2为立即数

立即数就只能由0到255中得某个数经过循环右移偶数次(包含0次)得到

MOV R0,#0x20 ;正确

MOV R0,#0x200 ;正确

MOV R0,#0x201 ;不可

 

2、LDR伪指令

那么如果想给R0赋0x201怎么办呢?可以使用伪指令LDR,如果LDR第二个 操作数前有=,则是LDR伪指令

LDR R0,=#0x201 ;它会被汇编器转换成一条“相对PC的加载指令”

 

常用LDR为指令向某个内存地址写入一个值

;将5写入内存0x20000000处

COUNT EQU 0x20000000

LDR R0, =COUNT

MOV R1, #5

STR R1, [R0]

 

3、LDR加载指令

LDR指令用于从内存中读取数据放入寄存器

COUNT EQU 0x20000000

LDR R0, =COUNT

LDR R1, [R0]

0 0
原创粉丝点击