• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >嵌入式开发 > Thumb指令集

Thumb指令集

作者:汇编爱好者 字体:[增加 减小] 来源:互联网 时间:2017-06-17

汇编爱好者通过本文主要向大家介绍了arm指令集,risc,thumb,thumb 2指令集,thumb指令集的特点等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
</div>     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位立即数为中断号
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Thumb指令集

相关文章

  • 2017-06-05 求助帖。。。关于MSP430F5529在energia上开发的问题
  • 2017-06-05 震荡电路比较怪
  • 2017-06-05 USB驱动编译的问题
  • 2017-06-05 新人求助求助
  • 2017-06-05 iTOP4412能在WIN10上用吗
  • 2017-06-05 为什么我的系统里的internet信息服务节点里没有ftp这个子节点?该怎么安装呢?请指点。
  • 2017-06-05 美国赛普拉斯公司(Cypress)EZ-USBFX2LPUSB20基于CY7C68013开发教程
  • 2017-06-05 centos的dns首次解析失败的困惑
  • 2017-06-05 googleagps数据解析
  • 2017-06-05 小菜鸟100分求救!求[物理地址与线性转换]的c++代码。

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 本人想做一个项目,有关口通讯的,望高手指点
    • 求文件系统驱动例子
    • 嵌入式系统的应用领域
    • CC2530程序烧写,显示ErrorinHEXfileverification
    • 如何通过底层的寄存器来控制modem
    • 用超级终端测试:数据已经送到了读缓冲区,就是在超级终端不显示。但当我断开连接时,数据显示。请各位大虾帮帮忙,是什么原因?
    • 怎么用批处理停用ipv4协议
    • 关于ITRON的问题
    • 怎样的到显卡的DeviceObject参数
    • WDM开发出来的驱动程序中访问设备的符号连接从哪找

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有