电工之家_电工基础知识学习网站
当前位置:电工之家 > 电子技术 > 正文

Thumb数据处理指令集详解

时间:2015-11-20 08:52 来源:电工之家

Thumb指令集可以看做ARM指令集的一个子集,其用于支持存储系统数据总线为16位的应用系统。Thumb指令长度为16位,这样,与32位的ARM指令集相比,有效地节省了系统的存储空间。但Thumb指令集中的数据处理指令的操作数仍然是32位的,指令寻址地址也是32位的。
    在实际应用中,若对系统的性能有较高要求,则选arm指令集和32位的memory;若对系统的功耗有较高要求时,则选Thumb指令集和16位的memory;一般将两者混合使用,根据系统不同部分的不同需求,选用合适的指令,发挥两者的优势。
    Thumb指令集由数据处理指令、跳转指令、Load/Store指令和软件中断指令4大类构成。
    数据处理指令

格 式 功 能
MOV Rd,imm_8; Rd=imm_8;Rd为R0~R7,imm_8为8位立即数
MOV Rd,Rn; Rd=Rn;Rd、Rn为R0~R15
MVN Rd,Rn; Rd=~Rn;Rd、Rn为R0~R7
NEG Rd,Rn; Rd=-Rn;Rd、Rn为R0~R7
ADD Rd,Rn,imm; Rd=Rn+imm;Rd为R0~R7,Rn为R0~R7或PC或SP;
Rn为PC或SP时,imm为10位立即数;
否则,imm为3位立即数
ADD Rd,Rn,Rm; Rd=Rn+Rm;Rd、Rn、Rm为R0~R7
ADD Rd,imm; Rd=Rd+imm;Rd为R0~R7或SP
Rd为SP时,imm为-508~+508间的4整数倍的数
否则,imm为8位立即数
ADD Rd,Rn; Rd=Rd+Rn;Rd、Rn为R0~R15
ADC Rd,Rn; Rd=Rd+Rn+carry;Rd、Rn为R0~R7,carry为进位标志值
SUB Rd,Rn,imm_3; Rd=Rn-imm_3;Rd、Rn为R0~R7,imm_3为3位立即数
SUB Rd,Rn,Rm; Rd=Rn-Rm;Rd、Rn、Rm为R0~R7,
SUB Rd,imm; Rd=Rd-imm;Rd为R0~R7或SP
Rd为SP时,imm为-508~+508间的4整数倍的数
否则,imm为8位立即数
SBC Rd,Rn; Rd=Rd-Rn-!carry;Rd、Rn为R0~R7,carry为进位标志值
MUL Rd,Rn; Rd=Rd×Rn;Rd、Rn为R0~R7
AND Rd,Rn; Rd=Rd&Rn;Rd、Rn为R0~R7
ORR Rd,Rn; Rd=Rd|Rn;Rd、Rn为R0~R7
EOR Rd,Rn; Rd=Rd^Rn;Rd、Rn为R0~R7
BIC Rd,Rn; Rd=Rd&(~Rn);Rd、Rn为R0~R7
ASR Rd,Rn; Rd=Rd算术右移Rn位;Rd、Rn为R0~R7
ASR Rd,Rn,imm_5; Rd=Rn算术右移imm_5位;Rd、Rn为R0~R7,
imm_5为1~32间的数值
LSL Rd,Rn; Rd=Rd逻辑左移Rn位;Rd、Rn为R0~R7
LSL Rd,Rn,imm_5; Rd=Rn逻辑左移imm_5位;Rd、Rn为R0~R7
LSR Rd,Rn; Rd=Rd逻辑右移Rn位;Rd、Rn为R0~R7
LSR Rd,Rn,imm_5; Rd=Rn逻辑右移imm_5位;Rd、Rn为R0~R7
ROR Rd,Rn; Rd=Rd循环右移Rn位;Rd、Rn为R0~R7
CMP Rn,Rm; 根据Rn-Rm的值,修改CPSR的状态标志位;
Rn、Rm为R0~R7
CMP Rn,imm_8; 根据Rn-imm_8的值,修改CPSR的状态标志位;
Rn为R0~R7
CMN Rn,Rm; 根据Rn+Rm的值,修改CPSR的状态标志位;
Rn、Rm为R0~R7
TST Rn,Rm; 根据Rn&Rm的值,修改CPSR的状态标志位;
Rn、Rm为R0~R7
    跳转指令
格 式 功 能
B{cond} label PC=label;
若有cond,则label必须在当前指令的-256~+256字节范围内;
否则,label必须在当前指令的-2KB~+2KB范围内
BL label R14=PC+4,PC=label;
label必须在当前指令的-4MB~+4MB范围内
BX Rn PC=Rn,且切换处理器状态
    Load/Store指令
格 式 功 能
LDR Rd,[Rn,imm]; Rd=地址(Rn+imm)中的字数据;Rd为R0~R7,Rn为R0~R7或SP或PC;若Rn为PC或SP,imm为5位立即数,否则imm为8位立即数
LDR Rd,[Rn,Rm]; Rd=地址(Rn+Rm)中的字数据;Rd、Rn、Rm为R0~R7
LDRH Rd,[Rn,imm_5]; Rd=地址(Rn+imm_5)中的无符号半字数据;Rd、Rn为R0~R7,imm_5为5位立即数
LDRH Rd,[Rn,Rm]; Rd=地址(Rn+Rm)中的无符号半字数据;Rd,Rn,Rm为R0~R7
LDRB Rd,[Rn,imm_5]; Rd=地址(Rn+imm_5)中的无符号字节数据;Rd、Rn为R0~R7
LDRB Rd,[Rn,Rm]; Rd=地址(Rn+Rm)中的无符号字节数据;Rd,Rn,Rm为R0~R7
LDRSH Rd,[Rn,Rm]; Rd=地址(Rn+Rm)中的有符号半字数据;Rd,Rn,Rm为R0~R7
LDRSB Rd,[Rn,Rm]; Rd=地址(Rn+Rm)中的有符号字节数据;Rd,Rn,Rm为R0~R7
LDR Rd,label; Rd=地址(label)中的字数据;Rd为R0~R7
STR Rd,[Rn,imm]; 地址(Rn+imm)处的字数据=Rd;Rd为R0~R7,Rn为R0~R7或SP或PC;若Rn为PC或SP,imm为5位立即数,否则imm为8位立即数
    软件中断指令
格 式 功 能
SWI 8位立即数 8位立即数为中断号

看过《Thumb数据处理指令集详解》的人还看了以下文章
电缆线路的敷设方式及施工技术要求 电缆线路的敷设方式及施工技术要求
电缆线路的敷设方式及施工技术要求...
过零点检测信号的特点 过零点检测信号的特点
在数字电压表如上海电表厂生产的PZ28型。它用于测量O至2伏直流电压,精度为O点5%。其中检测电路中的采样时间内,对被测电压值进行双向积分,然后过零点又反向积分。将这段信号转换为脉冲值。用表中基准电压的cPU脉冲作开门计数至零点,所检测出多少个脉冲。...
收音机输入电压提高电路要做哪些改动 收音机输入电压提高电路要做哪些改动
首先要明确这个输入电压是指信号电压还是整机工作电压。 若是信号过强可采用电阻分压的方式予以衰减,以防大信号阻塞或失真。 如果要提高整机工作电压,就要看是集成电路还是分立元件。对于集成电路收音机可查一下它的允许工作电压是多少。比如单片集成电路...
线圈在电路中起什么作用 线圈在电路中起什么作用
线圈又称电感。一般是由漆包线绕制而成,被广泛地应用在电力系统、仪器设备和电子电路中。 电感在电路中的作用主要有谐振、滤波、感应、自感和励磁等。 一、谐振 谐振电路一般由电感和电容组成,分并联谐振和串联谐振。并联谐振在谐振频率点呈高阻抗,可以获...
电子技术的主要知识 电子技术的主要知识
一、半导体 1、半导体的有关概念 1)半导体 半导体是导电能力介于导体与绝缘体之间的一种物体。纯净的半导体是四价元素,呈晶体结构,内部原子按一定规律整齐排列。在高温或光照下,其电子冲破束缚,成为自由电子。电子跑出后留下的空位称为空穴。半导体有电...