购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.4 寄存器传输指令

本节介绍寄存器传输指令,下面对这些指令进行详细说明。

1.MOVS<Rd>,#imm8

该指令将[7:0]位所指定的立即数imm8(范围为0~255)写到寄存器Rd中。该汇编助记符指令的机器码格式如图4.6所示。从该指令格式的机器码格式可知,Rd寄存器的使用范围为R0~R7。

图4.6 MOVS<Rd>,#imm8指令的机器码格式

指令MOVS R1,#0x14,其机器码为(2114) 16 。该指令将立即数0x14的内容写到寄存器R1中。并且更新APSR寄存器中的标志N、Z和C,但不修改标志V。

注: (2114)的下标16表示2114为十六进制数。

2.MOV<Rd>,<Rm>

该指令将寄存器Rm的内容写到寄存器Rd中。该汇编助记符指令的机器码格式如图4.7所示。从该指令的机器码格式可知,Rm可用的寄存器范围为R0~R15,Rd可用的寄存器范围为R0~R7。当Rd和D组合在一起使用时,可用的寄存器范围扩展到R0~R15。

图4.7 MOV<Rd>,<Rm>指令的机器码格式

指令MOV R0,SP,其机器码为(4668) 16 ,将SP的内容写到寄存器R0中,不更新APSR寄存器中的标志。

3.MOVS<Rd>,<Rm>

该指令将寄存器Rm的内容复制到寄存器Rd中,并且更新APSR寄存器中的标志Z和N,该汇编助记符指令的机器码格式如图4.8所示。从该指令的机器码格式可知,Rm可用的寄存器范围为R0~R7,Rd可用的寄存器范围为R0~R7。

图4.8 MOVS<Rd>,<Rm>指令的机器码格式

指令MOVS R0,R1,其机器码为(0008) 16 。该指令将寄存器R1的内容复制到寄存器R0中,并且更新APSR寄存器中的标志N和Z,并不修改标志C和V。

4.MRS<Rd>,<SpecialReg>

该指令是32位的Thumb指令,将由SpecialReg标识的特殊寄存器内容写到寄存器Rd中。该指令不影响APSR寄存器中的任何标志位。该汇编助记符指令的机器码格式如图4.9所示。从该指令的机器码格式可知,可用的Rd寄存器范围为R0~R15。

图4.9 MRS<Rd>,<SpecialReg>指令的机器码格式

SYSm的定义如表4.2所示。

表4.2 SYSm的定义

指令MRS R1,CONTROL,其机器码为(F3EF8514) 16 。该指令将CONTROL寄存器的内容写到寄存器R1中。

5.MSR<SpecialReg>,<Rn>

该指令将寄存器Rn中的内容写到SpecialReg标识的特殊寄存器中。该指令影响APSR寄存器中的标志N、Z、C和V。该汇编助记符指令的机器码格式如图4.10所示。从该指令的机器码格式可知,可用的Rn寄存器的范围为R0~R15。

图4.10 MSR<SpecialReg>,<Rn>指令的机器码格式

指令MSR APSR,R0,其机器码为(F3808800) 16 ,将寄存器R0的内容写到APSR寄存器中。

思考与练习4.3:说明以下指令实现的功能。

(1)MOVS R0,#0x000B_______________________________________

(2)MOVS R1,#0x0________________________________________

(3)MOV R10,R12________________________________________

(4)MOVS R3,#23________________________________________

(5)MOV R8,SP________________________________________ lKHnuFyVWe29MNvAI32e5pDHr4F1rlCXeDjjTAewbRtOPQ5xjHZxEOF8dBWVO8jZ

点击中间区域
呼出菜单
上一章
目录
下一章
×