刘帅嵌入式系统-LDRH半字节数据读取指令

刘帅嵌入式系统-LDRH半字节数据读取指令_第1张图片
LDRH指令用于从内存中将一个16位的半字节数据读取到指令中的目标寄存器中。并将寄存器的高16位清零。如果指令中的内存地址不是半字对齐的,指令会产生不可预知的结果。

指令的编码格式

刘帅嵌入式系统-LDRH半字节数据读取指令_第2张图片

指令的语法格式

LDR{< cond >}H < Rd >, < post_indexed_addressing_mode >

其中:

  • < cond >为指令执行的条件码。当< cond >忽略时,指令为无条件执行。
  • < Rd >为目标寄存器。
  • < post_indexed_addressing_mode >为指令的寻址方式。

指令操作的伪代码

if ConditionPassed(cond) then
	if address[0] == 0
        data = Memory[address,2]
    else  /* address[0] == 1*/
    	data = UNPREDICTABLE
    	Rd = data

指令的使用

LDRH指令通常的用法有以下两种:

  • 用于从内存中读取16位半字数据到通用寄存器中,然后可在该寄存器中对数据进行一定的操作。
  • 当PC作为指令中的目标寄存器时,指令可以实现程序跳转的功能。

示例

LDRH R0, [R1]		;将内存单元R1中的半字数据读取到R0中,R0中高16位设置成0
LDRH R0, [R1,#2]	;将内存单元R1+2中的半字数据读取到R0中,R0中高16位设置成0
LDRH R0, [R1,R2]	;将内存单元R1+R2中的半字数据读取到R0中,R0中高16位设置成0
LDRH R0, [R1],#2	;将内存单元R1中的半字数据读取到R0中,R0中高16位设置成0,R1=R1+2

你可能感兴趣的:(ARM)