MSC51与ARM内核指令集

本文详细对比了MCS-51单片机指令集与ARM指令集的特点,从数据传送、算术操作、逻辑操作、控制转移、布尔变量操作、储存器访问、数据处理、转移、协处理器指令、杂项指令等方面进行了深入分析,并探讨了它们在实际应用中的区别与优劣。
摘要由CSDN通过智能技术生成

MCS-51

1、数据传送类指令(共29条)

助记符                   功能说明                                                      字节数   振荡周期

MOV   A,Rn                寄存器内容送入累加器                                 1        12

MOV   A,direct            直接地址单元中的数据送入累加器                 2        12

MOV   A,@Ri              间接RAM中的数据送入累加器                       1        12

MOV   A,#data8          8位立即数送入累加器                                   2        12

MOV   Rn,A                累加器内容送入寄存器                                  1        12

MOV   Rn,direct          直接地址单元中的数据送入寄存器                 2        24

MOV   Rn,#data8        8位立即数送入寄存器                                   2        12

MOV   direct,A            累加器内容送入直接地址单元                        2        12

MOV   direct,Rn          寄存器内容送入直接地址单元                        2        24

MOV   direct,direct      直接地址单元中的数据送入直接地址单元       3        24

MOV   direct,@Ri        间接RAM中的数据送入直接地址单元             2        24

MOV   direct,#data8    8位立即数送入直接地址单元                         3        24

MOV   @Ri,A              累加器内容送入间接RAM单元                       1        12

MOV   @Ri,direct        直接地址单元中的数据送入间接RAM单元      2        24

MOV   @Ri,#data8       8位立即数送入间接RAM单元                        2        12

MOV   DPTR,#data16   16位立即数地址送入地址寄存器                   3        24

MOVC  A,@A+DPTR    以DPTR为基地址变址寻址单元中的数据送入累加器      1        24

MOVC  A,@A+PC        以PC为基地址变址寻址单元中的数据送入累加器           1        24

MOVX  A,@Ri              外部RAM(8位地址)送入累加器                     1        24

MOVX  A,@DPTR        外部RAM(16位地址)送入累加器                   1        24

MOVX  @Ri,A              累加器送入外部RAM(8位地址)                     1        24

MOVX  @DPTR,A        累加器送入外部RAM(16位地址)                   1        24

PUSH   direct                直接地址单元中的数据压入堆栈                   2        24

POP     DIRECT            堆栈中的数据弹出到直接地址单元               2        24

XCH     A,Rn                  寄存器与累加器交换                                   1        12

XCH     A,direct             直接地址单元与累加器交换                         2        12

XCH     A,@Ri               间接RAM与累加器交换                               1        12

XCHD   A,@Ri               间接RAM与累加器进行低半字节交换           1        12

2、算术操作类指令(共24条)

助记符                   功能说明                                                      字节数   振荡周期

ADD   A,Rn                   寄存器内容加到累加器                                1        12

ADD   A,direct              直接地址单元加到累加器                             2        12

ADD   A,@Ri                 间接RAM内容加到累加器                           1        12

ADD   A,#data8             8位立即数加到累加器                                 2        12

ADDC  A,Rn                  寄存器内容带进位加到累加器                     1        12

ADDC  A,dirct                直接地址单元带进位加到累加器                 2        12

ADDC  A,@Ri                间接RAM内容带进位加到累加器                1        12

ADDC  A,#data8            8位立即数带进位加到累加器                      2        12

SUBB  A,Rn                   累加器带借位减寄存器内容                        1        12

SUBB  A,dirct                累加器带借位减直接地址单元                     2        12

SUBB  A,@Ri                累加器带借位减间接RAM内容                    1        12

SUBB  A,#data8             累加器带借位减8位立即数                         2        12

INC     A                        累加器加1                                                 1        12

INC     Rn                      寄存器加1                                                 1        12

INC     direct                  直接地址单元内容加1                                2        12

INC     @Ri                    间接RAM内容加1                                      1        12

INC     DPTR                 DPTR加1                                                  1        24

DEC   A                        累加器减1                                                 1        12

DEC   Rn                      寄存器减1                                                 1        12

DEC   direct                 直接地址单元内容减1                                  2        12

DEC   @Ri                   间接RAM内容减1                                       1        12

MUL   A,B                    A乘以B                                                      1        48

DIV    A,B                    A除以B                                                      1        48

DA     A                        累加器进行十进制转换                               1        12

3、逻辑操作类指令(共24条)

助记符                   功能说明                                                      字节数   振荡周期

ANL   A,Rn               累加器与寄存器相“与”                                    1       12

ANL   A,direct           累加器与直接地址单元相“与”                          2        12

ANL   A,@Ri             累加器与间接RAM内容相“与”                         1        12

ANL   A,#data8         累加器与8位立即数相“与”                               2        12

ANL   direct,A           直接地址单元与累加器相“与”                          2        12

ANL   direct,#data8   直接地址单元与8位立即数相“与”                     3        24

ORL   A,Rn              累加器与寄存器相“或”                                     1        12

ORL   A,direct          累加器与直接地址单元相“或”                           2        12

ORL   A,@Ri            累加器与间接RAM内容相“或”                          1        12

ORL   A,#data8        累加器与8位立即数相“或”                                2        12

ORL   direct,A          直接地址单元与累加器相“或”                           2        12

ORL   direct,#data8  直接地址单元与8位立即数相“或”                      3        24

XRL   A,Rn               累加器与寄存器相“异或”                                 1        12

XRL   A,direct          累加器与直接地址单元相“异或”                        2        12

XRL   A,@Ri            累加器与间接RAM内容相“异或”                       1        12

XRL   A,#data8        累加器与8位立即数相“异或”                             2        12

XRL   direct,A           直接地址单元与累加器相“异或”                       2        12

XRL   direct,#data8   直接地址单元与8位立即数相“异或”                  3        24

CLR   A                    累加器清0                                                      1        12

CPL   A                    累加器求反                                                     1        12

RL     A                    累加器循环左移                                              1        12

RLC   A                    累加器带进位循环左移                                    1        12

RR     A                    累加器循环右移                                              1        12

RRC   A                   累加器带进位循环右移                                    1        12

SWAP A                   累加器半字节交换                                          1        12

4、控制转移类指令(共17条)

助记符                   功能说明                                                      字节数   振荡周期

ACALL addr11           绝对短调用子程序                                          2        24

LACLL  addr16          调用子程序                                                 3        24

RET                          子程序返回                                                    1        24

RETI                         中断返回                                                        1        24

AJMP  addr11            绝对短转移                                                    2        24

LJMP  addr16            长转移                                                           3        24

SJMP  rel                   相对转移                                                       2        24

JMP   @A+DPTR        相对于DPTR的间接转移                                1        24

JZ       rel                    累加器为零转移                                            2        24

JNZ     rel                    累加器非零转移                                            2        24

CJNE  A,direct,rel        累加器与直接地址单元比较,不等则转移       3        24

CJNE  A,#data8,rel       累加器与8位立即数比较,不等则转移           3        24

CJNE  Rn,#data8,rel     寄存器与8位立即数比较,不等则转移(相等则执行本指令的下一条指令)                                                                                               3        24

DJNZ    Rn,rel                寄存器减1,非零转移                                 3        24

DJNZ    direct,rel           直接地址单元减1,非零转移                        3        24

NOP                             空操作                                                       1        12

5、布尔变量操作类指令(共17条)

助记符                   功能说明                                                      字节数   振荡周期

CLR     C               清进位位                                                           1        12

CLR     bit              清直接地址位                                                    2        12

SETB    C              置进位位                                                           1        12

SETB    bit             置直接地址位                                                     2        12

CPL     C               进位位求反                                                         1        12

CPL     bit              直接地址位求反                                                  2        12

ANL     C,bit           进位位和直接地址位相“与”                                  2        24

ANL     C,bit           进位位和直接地址位的反码相“与”                        2        24

ORL     C,bit           进位位和直接地址位相“或”                                  2        24

ORL     C,bit           进位位和直接地址位的反码相“或”                        2        24

MOV    C,bit            直接地址位送入进位位                                      2        12

MOV    bit,C           进位位送入直接地址位                                       2        24

JC       rel               进位位为1则转移(CY=O不转移,=1转移)            2        24

JNC     rel               进位位为0则转移(和上面相反)                        2        24

JB       bit,rel           直接地址位为1则转移                                        3        24

JNB     bit,rel           直接地址位为0则转移                                        3        24

JBC     bit,rel           直接地址位为1则转移,该位清零                       3        24

ARM

1、ARM储存器访问指令

助记符                                      功能说明

LDR         R0,[R1]              将存储器地址为R1的字数据读入寄存器R0。

LDRB       R0,[R1]             将存储器地址为R1的字节数据读入寄存器R0,并将R0的高24位清零。

LDRH       R0,[R1]             将存储器地址为R1的半字数据读入寄存器R0,并将R0的高16位清零。

STR         R0,[R1],#8        将R0中的字数据写入以R1为地址的存储器中,并将新地址R1+8写入R1。

STR         R0,[R1,#8]        将R0中的字数据写入以R1+8为地址的存储器中。

STRB       R0,[R1]           将寄存器R0中的字节数据写入以R1为地址的存储器中。

STRH       R0,[R1]           将寄存器R0中的半字数据写入以R1为地址的存储器中。

STMFD    R13!,{R0,R4-R12,LR}      将寄存器列表中的寄存器(R0,R4到R12,LR)存入堆栈。

LDMFD    R13!,{R0,R4-R12,PC}     将堆栈内容恢复到寄存器(R0,R4到R12,LR)。

SWP        R0,R1,[R2]        将R2所指向的存储器中的字数据传送到R0,同时将R1中的字数据传送到R2所指向的存储单元。

SWPB      R0,R1,[R2]        将R2所指向的存储器中的字节数据传送到R0,R0的高24位清零,同时将R1中的低8位数据传送到R2所指向的存储单元。

PLD

2、ARM数据处理指令

助记符                                       功能说明

LSL(ASL)   操作数              按操作数指定的数量向左移位,低位用零来填充。

LSR           操作数              按操作数指定的数量向右移位,左端用零来填充。

ASR           操作数              按操作数指定的数量向右移位,左端用第31位的值来填充。

ROR          操作数              按操作数指定的数量向右循环移位,左端用右端移出的位填充。

RRX           操作数              按操作数指定的数量向右循环移位,左端用进位标志位C填充。

ADD          R0,R1,R2          R0 = R1 + R2

SUB           R0,R1,R2          R0 = R1 - R2

RSB

ADC          R1,R2,R3          R1 = R2 + R3,带进位

SBC

RSC          R0,R1,R2          R0 = R2 - R1 - !C

AND          R0,R0,#3           该指令保持R0的0、1位,其余位清零。

ORR         R0,R0,#3           该指令设置R0的0、1位,其余位保持不变。

EOR         R0,R0,#3           该指令反转R0的0、1位,其余位保持不变。

BIC           R0,R0,#%1011   该指令清除 R0 中的位 0、1、和 3,其余的位保持不变。

MOV         R1,R0                将寄存器R0的值传送到寄存器R1

MVN         R0,#0            将立即数0取反传送到寄存器R0中,完成后R0=-1

CMP         R1,R0           将寄存器R1的值与寄存器R0的值相减,并根据结果设置CPSR的标志位

CMN         R1,R0           将寄存器R1的值与寄存器R0的值相加,并根据结果设置CPSR的标志位

TST          R1,#0xffe      将寄存器R1的值与立即数0xffe按位与,并根据结果设置CPSR的标志位

TEQ         R1,R2           将寄存器R1的值与寄存器R2的值按位异或,并根据结果设置CPSR的标志位

CLZ

MUL         R0,R1,R2            R0 =R1 × R2

MLA         R0,R1,R2,R3       R0 = R1 × R2 + R3

SMULL     R0,R1,R2,R3       R0 = (R2 × R3)的低32位          R1 = (R2 × R3)的高32位

SMLAL     R0,R1,R2,R3       R0= (R2 × R3)的低32位+R0     R1 = (R2 × R3)的高32位+R1

UMULL     R0,R1,R2,R3       R0=(R2 × R3)的低32位            R1 = (R2 × R3)的高32位

UMLAL     R0,R1,R2,R3       R0= (R2 × R3)的低32位+R0     R1 = (R2 × R3)的高32位+R1

3、ARM转移指令

助记符                                       功能说明

B              Label                  程序无条件跳转到标号Label处执行

BL            Label                  当程序无条件跳转到标号Label处执行时,同时将当前的PC值保存到R14中

BX            R7                      跳转到R7所指定的目标地址

BLX         目标地址

4、ARM协处理器指令

助记符                                       功能说明

CDP       P3,2,C12,C10,C3,4  该指令完成协处理器P3的初始化

LDC       P3,C4,[R0]            将ARM处理器的寄存器R0所指向的存储器中的字数据传送到协处理器P3的

                                         寄存器C4中。

STC        P3,C4,[R0]           将协处理器P3的寄存器C4中的字数据传送到ARM处理器的寄存器R0所指向

                                         的存储器中。

MCR       P3,3,R0,C4,C5,6   该指令将ARM处理器寄存器R0中的数据传送到协处理器P3的寄存器C4和C5中。

MCRR

MRC       P3,3,R0,C4,C5,6    该指令将协处理器P3的寄存器中的数据传送到ARM处理器寄存器中。

MRRC

LDC

STC

5、杂项ARM指令

助记符                                       功能说明

SWI         0x02                     该指令调用操作系统编号位02的系统例程。

MRS       R0,CPSR               传送CPSR的内容到R0

MSR       CPSR,R0               传送R0的内容到CPSR

BKPT      16位立即数            BKPT指令产生软件断点中断,可用于程序的调试。

6、ARM伪指令

助记符                                       功能说明

ADR

ADRL

LDR

NOP

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值