收藏 分销(赏)

单片机指令汇总.doc

上传人:pc****0 文档编号:7451285 上传时间:2025-01-05 格式:DOC 页数:5 大小:67KB 下载积分:10 金币
下载 相关 举报
单片机指令汇总.doc_第1页
第1页 / 共5页
单片机指令汇总.doc_第2页
第2页 / 共5页


点击查看更多>>
资源描述
单片机指令汇总 摘要:单片机实用指令及意义。 关键词:单片机 指令     Rn:  表示当前寄存器区的8个工作寄存器R0~R7     Ri:   表示当前寄存器区的R0或R1,可作地址指针即间址寄存器(i=0或1)     @:   为间接寄存器或基址寄存器的前缀.     Direct: 表示8位内部数据存储单元的地址.它可以是内部RAM的单元地址0~127.特殊功能     寄存器SFR的地址(128~255)或名称,     A:    累加器ACC.     B:     .特殊功能寄存器B,用于MUL和DIV指令中.     C:     进位位Cy.     #data:  表示包含在指令中的单字节(8位)立即数.如果用16位进制表示,后缀字母为”H”,数据范围00~0FFH,不得一字母开头;如果用16进制表示无须任何后缀,但必须在0~255之间.     #data16: 表示包含在指令中的双字节(16位)立即数.     Adda16: 表示16位的目的地址.用于LCALL和LJMP指令中,目的地址范围是从0000H~FFFFH的整个64KB存储地址空间.     Adda11:  表示11位的目的地址.用于ACALL和AJMP的指令中,目的地址必须和下一条指令第一个字节同处一页.     Rel:    表示8位带符号的相对偏移量.用语SJMP和所有的条件转移指令中.偏移量相对于下一条指令的第一个字节计算,在-128~+127范围内取值.     DPTR:   为数据指针,可用作16位的地址寄存器.     /:      加在位操作的前面,表示对该位进行非运算.     bit:     表示内部可寻址位或特殊功能寄存器中的直接寻址位.     “(x):     寄存器或地址单元中的内容.     ((x)):   有x见解寻址的单元中的内容.     <-:    表示将箭头右边的内容传送至箭头的左边.     $:     当前指令的地址. 单片机指令系统     (一) 内部数据传送指令        (1) 以累加器A为目的的传送指令:     MOV            A,   #data      ;(A)<-data     MOV            A,   direct     ;(A)<-(direct)     MOV            A,   Rn         ;(A)<-(Rn)     MOV            A,   @Ri       ;(A)<- ((Ri))              (2) 以通用寄存器Rn为目的的传送指令:     MOV            Rn,        A           ;(Rn)<-(A)     MOV            Rn,              direct     ; (Rn)<(direct)-     MOV            Rn,        #data:     ; (Rn)<-(data)     (3) 以直接地址为目的的传送指令:     MOV            direct,    A           ;(direct)<-(A)     MOV            direct,    Rn         ; (direct)<-(Rn)     MOV            direct,    direct2   ; (direct)<-(direct2)     MOV            direct,    @Ri       ; (direct)<-((Rn))     MOV            direct,    #data      ; (direct)<-data     (4) 以寄存器间接地址为目的的传送指令:     MOV            @Ri,      A           ;((Ri))<-(A)     MOV            @Ri,      direct     ;((Ri))<-(direct)     MOV            @Ri,      #data      ;((Ri))<-data     (二) 数据指针赋值指令(16位数据传送指令)     MOV            DPTR,   #data16;     (三) 片外数据传送指令     MOVX          A,          @Ri       ;(A)<-((Ri))片外     MOVX          A,          @DPTR ;(A)<-((DPTR))片外     MOVX          @Ri,      A           ;((Ri))片外<-(A)     MOVX          @DPTR, A           ;((DPTR))片外<-(A)     (四) ROM数据访问指令(查表指令)     MOVC          A,          @A+DPTR    ;(A)<-((A)+(DPTR))rom     MOVC          A,          @A+PC        ;(PC)<-(PC)+1,(A)<-((A)+(PC))rom     (五) 堆栈操作指令     PUSH            direct     ;(SP)<-(SP)+1,(SP)<-(direct)                         堆栈指针先加1,将数据压入栈顶     POP              direct     ;(direct)<-(SP),(SP)<-(SP)-1                         将数据从栈顶弹出存入direct,SP再减1     (六) 数据交换指令     (1)整字节(8位)交换指令:     XCH             A,   Rn  ;A和Rn中的数互换     XCH             A,   direct     ;A和direct单元中的数互换     XCH             A,   @Ri       ;A和Ri间址单元中的数互换     (2)半字节交换指令:     XCHD           A,   @Ri       ;A的低4位Ri间接单元的低4位互换,高4位不动     (3)累加器高低半字节交换指令:     SWAP           A,                 ;A的高4位(D7~D4)和低4位(D3~D0)互换     (七) 加法指令     (1)不带Cy加法指令:     ADD             A,   Rn         ;(A)<-(A)+(Rn)     ADD             A,   direct     ; (A)<-(A)+(direct)     ADD             A,   @Ri       ; (A)<-(A)+((Ri))     ADD             A,   #data      ; (A)<-(A)+data     (2)带进位加法指令:     ADDC           A,   Rn         ;(A)<-(A) +Cy+(Rn)     ADDC           A,   direct     ; (A)<-(A) +Cy+(direct)     ADDC           A,   @Ri       ; (A)<-(A) +Cy+((Ri))     ADDC           A,   #data      ; (A)<-(A) +Cy+data     (3)加1指令:     INC              A,                 ;(A)<-(A)+1     INC              Rn                ;(Rn)<-(Rn)+1     INC              @Ri              ;((Ri))<-((Ri))+1     INC              direct            ;(direct)<-(direct)+1     INC              DPTR           ;(FPTR)<-(DPTR)+1     (八) 减法指令     (1)带进位减法指令:     SUBB            A,   Rn         ;(A)<-(A) -Cy-(Rn)     SUBB            A,   direct     ; (A)<-(A) -Cy-(direct)     SUBB            A,   @Ri       ; (A)<-(A) -Cy-((Ri))     SUBB            A,   #data      ; (A)<-(A) -Cy-data     (2)减1指令:     DEC             A                  ;(A)<-(A)-1     DEC             direct            ;(direct)<-(durect)-1     DEC             Rn                ;(Rn)<-(Rn)-1     DEC             @Ri              ;((Ri))<-((Ri))-1     (九) 乘除指令     (1)乘法指令     MUL             AB                ;(B)(A)<-(A)*(B)     指令功能是把累加器A和特殊功能寄存器B中两个8位无符号整数相乘,并把积的高8位字节存入B寄存器,低8位字节存入累加器A.     (2)除法指令     DIV              AB                ;A/B,商存入A,余数存入B     指令的功能是把累加器A中的8位无符号整数除以寄存器B中的8位无符号整数商的整数部分存入累加器A中,余数保留在B中.     (十) 十进制调整指令     DA               A           (十一) 逻辑运算指令     (1)   逻辑与运算指令:     ANL             A,   Rn         ;(A)<-(A)∧(Rn)     ANL             A,   direct     ; (A)<-(A)∧(direct)     ANL             A,   @Ri       ; (A)<-(A)∧((Ri))     ANL             A,   #data      ; (A)<-(A)∧data     ANL             direct,    A    ;(direct)<-(A)∧(direct)     ANL             direct,    #data;(direct<-(direct)∧data     (2)   逻辑或运算指令:     ORL             A,   Rn         ;(A)<-(A)∨(Rn)     ORL             A,   direct     ; (A)<-(A)∨(direct)     ORL             A,   @Ri       ; (A)<-(A)∨((Ri))     ORL             A,   #data      ; (A)<-(A)∨data     ORL             direct,    A    ;(direct)<-(A)∨(direct)     ORL             direct,    #data; (direct)<-(direct)∨data     (3)   逻辑异或运算指令:     XRL             A,   Rn         ;(A)<-(A)⊙(Rn)     XRL             A,   direct     ; (A)<-(A)⊙(direct)     XRL             A,   @Ri       ; (A)<-(A)⊙((Ri))     XRL             A,   #data      ; (A)<-(A)⊙data     XRL             direct,    A    ;(direct)<-(A)⊙(direct)     XRL             direct,    #data; (direct)<-(direct)⊙data     (4)   累加器清0和去反指令     CLR              A           ;(A)<-0  (累加器清0指令)     CLR              A           ;(A)<-(A) (累加器取反指令)     (5)   累加器移位指令:     不带进位Cy循环左移:  RL           A    ;Dn+1<-Dn,D0<-D7                   D7 D6 D5 D4 D3 D2 D1 D0     不带进位Cy循环右移:       RR         A    :Dn+1->Dn,D0<-D7       D7 D6 D5 D4 D3 D2 D1 D0     带进位Cy循环左移:    RLC         A           ;Cy<-D7,Dn+1<-Dn,D0<-Cy       D7 D6 D5 D4 D3 D2 D1 D0     带进位Cy循环右移:          RRC      A           ;Cy->D7,Dn+1->Dn,D0->Cy     (十二) 控制转移指令     [1] 无条件转移指令:     (1) 长转移指令    LJMP            addr16          ;(PC)<-addr16       (2) 绝对转移指令AJMP            addr11           ;(PC)<-(PC)+2,(PC)10~0<-addr11                  (3) 短转移指令    SJMP            rel                 ;(PC)<-(PC)+2+rel     (4) 变址寻址转移指令JMP              @A+DPTR    ;(PC)<-(A)+(DPTR)          [2] 条件转移指令:     (1) 累加器判0转移指令:     JZ          rel          ;如果(A)=0,跳转到目标语句,否则顺序执行     JNZ       rel          ;如果(A)≠0,跳转到目标语句,否则顺序执行     (2) 比较转移指令:     CJNZ     A,   #data,     rel   ;如果(A)≠data,则跳转到目标语句,否则程序顺序执行     CJNZ     A    direct,    rel   ; 如果(A)≠(direct),则跳转到目标语句,否则程序顺序执行     CJNZ     Rn  #data,     rel   ; 如果(A)≠data,则跳转到目标语句,否则程序顺序执行     CJNZ     @Ri       #data,     rel   ; 如果(A)≠data,则跳转到目标语句,否则程序顺序执行     (3) 循环控制转移指令:     DJNZ     Rn, rel   ;(Rn)先减1,如减1后(Rn)≠0,则跳转到目标语句;否则顺序执行     DJNZ     firect,     rel   ; (direct)先减1,如减1后(direct)≠0,则跳转到目标语句;否则顺序执行     (十三) 子程序调用和返回指令     (1) 绝对调用指令:     ACALL         addr11         (2) 长调用指令:     LCALL          addr16     (3) 返回指令:     RET       子程序返回     RETI     中断服务程序返回     (十四) 空操作指令     NOP      空操作指令是一条特殊指令,单片机在执行该指令时不进行任何操作,只是消耗1个机器周期的时间,所以该指令长用于延时程序.软件陷阱程序等     (十五) 位操作类指令     (1) 位传送指令:     MOV     C,bit                    ;(Cy)<-(bit),bit位的状态不变     MOV     bit,C                    ; (bit) <- (Cy),Cy位的状态不变     (2) 位置位和复位指令:     SETB     C                  ;(Cy)<-1     SETB     bit                 ;(bit)<-1     CLR       C                  ;(Cy)<-0     CLR       bit                 ;(bit)<-0     (3) 位运算指令:     ANL      C,bit                    ;(Cy)<-(Cy)∧(bit),Cy位和bit位相与,结果赋给Cy     ANL      C,/bit            ;(Cy)<-(Cy)∧(bit),Cy位和bit位相与,结果赋给Cy     ORL      C,bit                    ;(Cy)<-(Cy)∨(bit),Cy位和bit位相或,结果赋给Cy     ORL      C,/bit            ;(Cy)<-(Cy) ∨(bit),Cy位和bit位相或,结果赋给Cy     CPL       C                  ; (Cy)<-(Cy),Cy位取反     CPL       bit                 ;(bit)<-(bit),bit位取反     (4) 位测试转移指令:     (1) 以Cy位状态为条件的转移指令     JC         rel                 ;如果Cy位=1,跳转到目标语句,否则顺序执行     JNC       rel                 ;如果Cy位=0,跳转到目标语句,否则顺序执行     (2) 以指定位状态为条件的转移指令:     JB          bit,  rel          ;如果bit=1,跳转到目标语句,否则顺序执行     JNB       bit,  rel          ;如果bit=0,跳转到目标语句,否则顺序执行     JBC       bit,  rel          ;如果bit=1,跳转到目标语句,同时将bit位清0;否则顺序执行
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服