分享

STC汇编指令表

 永恒0852 2012-04-12
单片机指令功能一览表
助记符                  代码                     说明
MOV    A,Rn              E8~EF                    寄存器A
MOV    A,direct          E5 dircet                直接字节送A
MOV    A,@Ri             ER~E7                    间接RAM送A
MOV    A,#data           74 data                  立即数送A
MOV    Rn,A              F8~FF                    A送寄存器
MOV    Rn,dircet         A8~AF dircet             直接字节送寄存器   
MOV    Rn,#data          78~7F data               立即数送寄存器
MOV    dircet,A          F5 dircet                A送直接字节
MOV    dircet,Rn         88~8F dircet             寄存器送直接字节
MOV    dircet1,dircet2   85 dircet1 dircet2       直接字节送直接字节
MOV    dircet,@Ro        86~87                    间接RAM送直接字节
MOV    dircet,#data      75 dircet data           立即数送直接字节
MOV    @Ri,A             F6~F7                    A送间接RAM
MOV    @Ri,#data         76~77 data               直接字节送间接RAM
MOV    @Ri,#data         76~77 data               立即数送间接RAM
MOV    DPTR,#data16      90 data 15~8             16位常数送数据指针   
                        data7~0               
MOVC   A,@A+DPTR         93                       由((A)+(DPTR))寻址的程序存贮
                                                器字节选A
MOVC   A,@A+PC           83                       由((A)+(PC));寻址的程序存贮器字节送A
MOVX   A,@Ri             E2~E3                    送外部数据(8位地址)送A
MOVX   A,@DPTR           E0                       送外部数据(16位地址)送A
MOVX   @Ri,A             F2~F3                    A送外部数据(8位地址)
MOVX   @DPTR,A           F0                       A送外部数据(16位地址)
PUSH   dircet            C0 dircet                直接字节进栈,SP加1     
POP    dircet            D0 dircet                直接字节退栈,SP减1
XCH    A,Rn              C8~CF                    交换A和寄存器  
XCH    A,dircet          C5 dircet                交换A和直接字节
XCH    A,@Ri             C6~C7                    交换A和间接RAM                    
XCH    A,@Ri             D6~D7                    交换A和间接RAM的低位
SWAP   A                 C4               


算术操作                                        (A的二个半字节交换)
ADD    A,Rn              28~2F                     寄存器加到A
ADD    A,dircet          25 dircet                 直接字节加到A
ADD    A,@Ri             26~27                     间接RAM加到A
ADD    A,#data           24data                    立即数加到A
ADD    A,Rn              38~3F                     寄存器和进位位加到A
ADD    A,dircet          35dircet                  直接字节和进位位加到A
ADD    A,@Ri             36~37                     间接字节和进位位加到A
ADD    A,data            34 data                   立即数和进位位加到A
ADD    A,Rn              98~9F                     A减去寄存器和进位位
ADD    A,dircet          95 dircet                 A减去直接字节和进位位
ADD    A,@Ri             36~37                     间接RAM和进位位加到A
ADD    A,data            34 data                   立即数和进位位加到A
SUBB   A,Rn              98~9F                     A减去寄存器和进位位
SUBB   A,dircet          95 dircet                 A减去直接字节和进位位
SUBB   A,@Ri             96~97                     A减去间接RAM和进位位
SUBB   A,#data           94 data                   A减去立即数和进位位
INC    A                 04                        A加1
INC    Rn                08~0F                     寄存器加1
INC    dircet            05 dircet                 直接字节加1
INC    @Ri               06~07                     间接RAM加1
DEC    A                 14                        A减1
DEC    Rn                18~1F                     寄存器减1
DEC    dircet            15 dircet                 直接字节减1
DEC    @Ri               16~17                     间接RAM减1
INC    DPTR              A3                        数据指针加1
MUL    AB                A4                        A乘以B
DIV    AB                84                        A除以B
DA     A                 D4                        A的十进制加法调整


逻辑操作
ANL    A,Rn              58~5F                     寄存器“与”到A
ANL    A,dircet          55 dircet                 直接字节“与”到A
ANL    A,@Ri             56~57                     间接RAm“与”到A
ANL    A,#data           54 data                   立即数“与”到A
ANL    dircet A          52 dircet                 A“与”到直接字节
ANL    dircet,#data      53 dircet data            立即数“与”到直接字节  
ORL    A,Rn              48~4F                     寄存器“或”到A
ORL    A,dircet          45 dircet                 直接字节“或”到A
ORL    A,@Ri             46~47                     间接RAM“或”到A
ORL    A,#data           44 data                   立即数“或”到A
ORL    dircet,A          42 dircet                 A“或”到直接字节
ORL    dircet,#data      43 dircet data            立即数“或”到直接字节
XRL    A,Rn              68~6F                     寄存器“异或”到A
XRL    A,dircet          65 dircet                 直接字节“异或”到A
XRL    A,@Ri             66~67                     间接RAM“异或”到A
XRL    A,#data           64 data                   立即数“异或”到A
XRL    dircet A          62 dircet                 A“异或”到直接字节
XRL    dircet,#data      63 dircet data            立即数“异或”到直接字节
CLR    A                 E4                        清零
CPL    A                 F4                        A取反
RL     A                 23                        A左环移
RLC    A                 33                        A通过进位左环移
RR     A                 03                        A右环移
RRC    A                 13                        A通过进位右环移


控制程序转移
ACALL addr 11           *1 addr(a7~a0)                绝对子程序调用
LCALL addr 16           12 addr(15~8)                 长子程序调用
                        addr(7~0)                    
RET                     22                            子程序调用返回
RETI   addr 11           32                            中断调用返回
AJMP   addr 11           △1 addr(a7~a6)               绝对转移
LJMP   addr 16           02addr(15~8)                  长转移
                        addr(7~0)                    
SJMP   rel               80 rel                        短转移,相对转移
JMP    @A+DPTR           73                            相对于DPTR间接转移
JZ     rel               60 rel                        A为零转移
JNZ    rel               70 rel                        A为零转移
CJNE   A,dircet,rel      B5 dircet rel                 直接字节与A比较,不等则转移
CJNE   A,#data,rel       B4 data rel                   立即数与A比较,不等则转移
CJNE   A,Rn,#data,rel    B8~BF data rel                立即数与寄存器比较,不等则转移
CJNE   @Ri,#data,rel     B6~B7 data rel                立即数与间接RAM比较,不等则转移
DJNZ   Rn,rel            D8~DF rel                     寄存器减1,不为零则转移
DJNZ   dircet,rel        B5 dircet rel                 直接字节减1,不为零则转移
NOP                     00                            空操作
*=a10a9a8l               
△=a10a9a80               


布尔变量操作
CLR    C                 C3                            清零进位
CLR    bit               C2                            清零直接位
SETB   C                 D3                            置位进位
SETB   bit               D2                            置位直接位
CPL    C                 B3                            进位取反
CPL    bit               B2                            直接位取反
ANL    C,bit             82 dit                        直接数“与”到进位
ANL    C,/bit            B0                            直接位的反“与”到进位
ORL    C,bit             72 bit                        直接位“或”到进位
ORL    C,/bit            A0 bit                        直接位的反“或”到进位
MOV    C,bit             A2 bit                        直接位送进位
MOV    bit,C             92 bit                        进位送直接位
JC     rel               40 rel                        进位位为1转移
JNC    rel               50 rel                        进位位为0转移
JB     bit,rel           20 bit rel                    直接位为1相对转移
JNB    bit,rel           30 bit rel                    直接位为0相对转移
JBC    bit,rel           10 bit rel                    直接位为1相对转移,然后清零该位


[1]. 循环移位指令(4条)
RL A      ;累加器A中的内容左移一位
RR A      ;累加器A中的内容右移一位
RLC A    ;累加器A中的内容连同进位位CY左移一位
RRC A    ;累加器A中的内容连同进位位CY右移一位

[2]. 累加器半字节交换指令(1条)
SWAP A   ; 累加器中的内容高低半字节互换

[3]. 求反指令(1条)
CPL A     ; 累加器中的内容按位取反

[4]. 清零指令(1条)
CLR A     ; 0→(A),累加器中的内容清0

[5]. 逻辑与操作指令(6条)
ANL A,data     ;累加器A中的内容和直接地址单元中的内容执行与逻辑操作。结果存在寄存器A中。
ANL data,#data   ;直接地址单元中的内容和立即数执行与逻辑操作。结果存在直接地址单元中。
ANL A,#data    ;累加器A的内容和立即数执行与逻辑操作。结果存在累加器A中。
ANL A,Rn       ;累加器A的内容和寄存器Rn中的内容执行与逻辑操作。结果存在累加器A中。
ANL data,A     ;直接地址单元中的内容和累加器A的内容执行与逻辑操作。结果存在直接地址单元中。
ANL A,@Ri     ;累加器A的内容和工作寄存器Ri指向的地址单元中的内容执行与逻辑操作。结果存在累加器A中。

[6]. 逻辑或操作指令(6条)
这组指令的作用是将两个单元中的内容执行逻辑或操作。如果直接地址是I/O地址,则为“读—修改—写”操作。

ORL A,data     ;累加器A中的内容和直接地址单元中的内容执行逻辑或操作。结果存在寄存器A中。
ORL data,#data   ;直接地址单元中的内容和立即数执行逻辑或操作。结果存在直接地址单元中。
ORL A,#data    ;累加器A的内容和立即数执行逻辑或操作。结果存在累加器A中。
ORL A,Rn       ;累加器A的内容和寄存器Rn中的内容执行逻辑或操作。结果存在累加器A中。
ORL data,A     ;直接地址单元中的内容和累加器A的内容执行逻辑或操作。结果存在直接地址单元中。
ORL A,@Ri     ;累加器A的内容和工作寄存器Ri指向的地址单元中的内容执行逻辑或操作。结果存在累加器A中。

[7]. 逻辑异或操作指令(6条)
XRL A,data     ;累加器A中的内容和直接地址单元中的内容执行逻辑异或操作。结果存在寄存器A中。
XRL data,#data   ;直接地址单元中的内容和立即数执行逻辑异或操作。结果存在直接地址单元中。
XRL A,#data    ;累加器A的内容和立即数执行逻辑异或操作。结果存在累加器A中。
XRL A,Rn       ;累加器A的内容和寄存器Rn中的内容执行逻辑异或操作。结果存在累加器A中。

XRL data,A     ;直接地址单元中的内容和累加器A的内容执行逻辑异或操作。结果存在直接地址单元中。
XRL A,@Ri     ;累加器A的内容和工作寄存器Ri指向的地址单元中的内容执行逻辑异或操作。结果存在累加器A中

控制转移类指令分析


[1]. 无条件转移指令(4条)
LJMP addr16      ;addr16→(PC),给程序计数器赋予新值(16位地址)
AJMP addr11      ;(PC)+2→(PC),addr11→(PC10-0)程序计数器赋予新值(11位地址),(PC15-11)不改变
SJMP rel          ;(PC)+ 2 + rel→(PC)当前程序计数器先加上2再加上偏移量给程序计数器赋予新值
JMP @A+DPTR    ;(A)+ (DPTR)→(PC),累加器所指向地址单元的值加上数据指针的值给程序计数器赋予新值


[2]. 条件转移指令(8条)
JZ rel   ; A=0,(PC)+ 2 + rel→(PC),累加器中的内容为0,则转移到偏移量所指向的地址,否则程序往下执行
JNZ rel    ; A≠0,(PC)+ 2 + rel→(PC),累加器中的内容不为0,则转移到偏移量所指向的地址,否则程序往下执行

CJNE A, data, rel      ; A≠(data),(PC)+ 3 + rel→(PC),累加器中的内容不等于直接地址单元的内容,则转移到偏移量所指向的地址,否则程序往下执行
CJNE A, #data, rel     ; A≠#data,(PC)+ 3 + rel→(PC),累加器中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行
CJNE Rn, #data, rel   ; A≠#data,(PC)+ 3 + rel→(PC),工作寄存器Rn中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行
CJNE @Ri, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),工作寄存器Ri指向地址单元中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行

布尔变量操作指令分析

[1]. 位传送指令(2条)
MOV C,bit         ;bit→CY,某位数据送CY
MOV bit,C         ;CY→bit,CY数据送某位

[2]. 位置位复位指令(4条)
CLR C            ; 0→CY,清CY
CLR bit           ; 0→bit,清某一位
SETB C           ; 1→CY,置位CY
SETB bit          ; 1→bit,置位某一位

[3]. 位运算指令(6条)
ANL C,bit         ;(CY)∧(bit)→CY
ANL C,/bit         ;(CY)∧( )→CY
ORL C,bit         ;(CY)∨(bit)→CY
ORL C,/bit         ;(CY)∧()→CY
CPL C            ;()→CY
CPL bit           ;()→bir

[4]. 位控制转移指令(5)
JC rel             ; (CY)=1转移,(PC)+2+rel→PC,否则程序往下执行,(PC)+2→PC。
JNC rel           ; (CY)=0转移,(PC)+2+rel→PC,否则程序往下执行,(PC)+2→PC。
JB bit, rel         ; 位状态为1转移。
JNB bit, rel        ; 位状态为0转移。
JBC bit, rel        ; 位状态为1转移,并使该位清“0”。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多