电子产业
数字化服务平台

扫码下载
手机洽洽

  • 微信小程序

    让找料更便捷

  • APP

    随时找料

    即刻洽谈

    点击下载PC版
  • 公众号

    电子元器件

    采购信息平台

  • 移动端

    生意随身带

    随时随地找货

  • 华强商城公众号

    一站式电子元器件

    采购平台

  • 芯八哥公众号

    半导体行业观察第一站

Thumb指令集 -

来源: 作者:华仔 浏览:351

标签:

摘要:Thumb指令集可以看做ARM指令集的一个子集,其用于支持存储系统数据总线为16位的应用系统。Thumb指令长度为16位,这样,与32位的ARM指令集相比,有效地节省了系统的存储空间。但Thumb指令集中的数据处理指令的操作数仍然是32位的,指令寻址地址也是32位的。 在实际应用中,若对系统的性能有较高要求,则选arm指令集和32位的memory;若对系统的功耗有较高要求时,则选Thumb指令集和

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~R15MVN Rd,Rn;Rd=~Rn;Rd、Rn为R0~R7NEG Rd,Rn;Rd=-Rn;Rd、Rn为R0~R7ADD 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~R7ADD 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~R15ADC 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~R7AND Rd,Rn;Rd=Rd&Rn;Rd、Rn为R0~R7ORR Rd,Rn;Rd=Rd|Rn;Rd、Rn为R0~R7EOR Rd,Rn;Rd=Rd^Rn;Rd、Rn为R0~R7BIC Rd,Rn;Rd=Rd&(~Rn);Rd、Rn为R0~R7ASR Rd,Rn;Rd=Rd算术右移Rn位;Rd、Rn为R0~R7ASR 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~R7LSL Rd,Rn,imm_5;Rd=Rn逻辑左移imm_5位;Rd、Rn为R0~R7LSR Rd,Rn;Rd=Rd逻辑右移Rn位;Rd、Rn为R0~R7LSR Rd,Rn,imm_5;Rd=Rn逻辑右移imm_5位;Rd、Rn为R0~R7ROR Rd,Rn;Rd=Rd循环右移Rn位;Rd、Rn为R0~R7CMP Rn,Rm;根据Rn-Rm的值,修改CPSR的状态标志位;
Rn、Rm为R0~R7CMP Rn,imm_8;根据Rn-imm_8的值,修改CPSR的状态标志位;
Rn为R0~R7CMN Rn,Rm;根据Rn+Rm的值,修改CPSR的状态标志位;
Rn、Rm为R0~R7TST Rn,Rm;根据Rn&Rm的值,修改CPSR的状态标志位;
Rn、Rm为R0~R7跳转指令格 式 功 能 B{cond} labelPC=label;
若有cond,则label必须在当前指令的-256~+256字节范围内;
否则,label必须在当前指令的-2KB~+2KB范围内 BL labelR14=PC+4,PC=label;
label必须在当前指令的-4MB~+4MB范围内 BX RnPC=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~R7LDRH 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~R7LDRB Rd,[Rn,imm_5];Rd=地址(Rn+imm_5)中的无符号字节数据;Rd、Rn为R0~R7LDRB Rd,[Rn,Rm];Rd=地址(Rn+Rm)中的无符号字节数据;Rd,Rn,Rm为R0~R7LDRSH Rd,[Rn,Rm];Rd=地址(Rn+Rm)中的有符号半字数据;Rd,Rn,Rm为R0~R7LDRSB Rd,[Rn,Rm];Rd=地址(Rn+Rm)中的有符号字节数据;Rd,Rn,Rm为R0~R7LDR Rd,label;Rd=地址(label)中的字数据;Rd为R0~R7STR Rd,[Rn,imm];地址(Rn+imm)处的字数据=Rd;Rd为R0~R7,Rn为R0~R7或SP或PC;若Rn为PC或SP,imm为5位立即数,否则imm为8位立即数软件中断指令格 式 功 能 SWI 8位立即数 8位立即数为中断号

型号 厂商 价格
EPCOS 爱普科斯 /
STM32F103RCT6 ST ¥461.23
STM32F103C8T6 ST ¥84
STM32F103VET6 ST ¥426.57
STM32F103RET6 ST ¥780.82
STM8S003F3P6 ST ¥10.62
STM32F103VCT6 ST ¥275.84
STM32F103CBT6 ST ¥130.66
STM32F030C8T6 ST ¥18.11
N76E003AT20 NUVOTON ¥9.67
Baidu
map