MCS-51 指令

伪指令就是告诉汇编软件如何把语言翻译成源代码
1.定位伪指令:ORG
2.定义字节伪指令:DB
3.定义字伪指令:DW
4.赋值伪指令:EQU
5.定义存储空间伪指令:DS
6.定义位地址符号伪指令:BIT
7.数据地址赋值伪指令:DATA
8.汇编结束伪指令:END

MCS-51 指令表

MCS-51指令中所用符号和含义

Rn——当前工作寄存器组的8个工作寄存器(n=0~7)。

Ri—— 可用于间接寻址的寄存器,只能是当前寄存器组中的2个寄存器R0、R1(i=0,1)。

direct——内部RAM中的8位地址(包括内部RAM低128单元地址和专用寄存器单元地址)。

#data——8位常数。

#data16——16位常数。

addr16——16位目的地址,只限于在LCALL和LJMP指令中使用。

addr11——11位目的地址,只限于在ACALL和AJMP指令中使用。

rel——相对转移指令中的8位带符号偏移量。

DPTR——数据指针,16位寄存器,可用作16位地址寻址。

SP——堆栈指针,用来保护有用数据。

bit——内部RAM或专用寄存器中的直接寻址位。

A——累加器。

B——专用寄存器,用于乘法和除法指令或暂存器。

C——进位标志或进位位,或布尔处理机中的累加器。

@——间接寻址寄存器的前缀标志,如@Ri,@DPTR。

        /——位操作数的前缀,表示对位操作数取反,如/bit。

(×)——以×的内容为地址的单元中的内容,X为表示指针的寄存器Ri(i=0、1)、DPTR、SP(Ri、DPTR、SP的内容均为地址)或直接地址单元。如:为了区别地址单元与立即数如30H单元与立即数30H,注释时,表述地址单元时用括号如(30H),立即数直接表示30H。

$——表示当前指令的地址。

<=>——表示数据交换。

←——箭头左边的内容被箭头右边的内容所代替。

指令系统是指一组指令,不出现相同的指令
   程序是指一组指令堆放在一起,并且能够完成一个功能。其中会出现相同的指令。

(1).MCS-51有8中寻址方式
   
   MCS-51汇编语言指令格式:
   [标点:]操作码(空格)[操作数1],[操作数2],[操作数3];[注释]
   
   第一部分是标号(可以没有)。它为用户定义的符号,标号实际上为符号地址,标号值代表这条指令在程序存储器中的存放地址,标号以字母开头,后跟1~8个英文字母或数字,并以冒号结尾。
   第二部分为操作码。他反映了指令功能,是汇编指令中唯一不可缺少的部分。
   第三部分为操作数。可以有1~3个操作数。它是给指令的操作提供数据或数据地址的。
   第四部分为注释。(可以没有)

寻址就是寻找指令中操作数或操作码所在的地址。

MCS-51的8种寻址方式:直接寻址,立即寻址,寄存器寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址,页面寻址。
    
    一、直接寻址是指在指令中直接给出操作数所在存储单元的地址。
        直接寻址访问以下三种存储空间:
        1.特殊功能寄存器 | 例:MOV A,P1     ;(P1)→A
        2.内部数据存储器的低128字节 | 例:MOV A,5AH    ;(5AH)→A
        3.位地址空间

    二、立即寻址即操作数以指令字节形式存放于程序存储器中
立即寻址的操作数存放的是操作数的数值;直接寻址的操作数存放的是操作数数值的地址。
    例:MOV A,5AH ;(5AH)→A [直接寻址]
        MOV A,#5AH ;5AH→A [立即寻址]

    三、寄存器寻址由指令指出某个寄存器为内容为操作数
    例:MOV A,R0 ;(R0)→A
    
    四、寄存器间接寻址将指定寄存器内容作为地址进行操作
    例:MOV A,@R0 ;((R0))→A

    五、变址寻址是基址寄存器加变址寄存器间接寻址的寻址方式,是以16位是程序计数器PC和数据指针DPTR作为基址寄存器,以8位的累加器作为变址寄存器,基址寄存器和变址寄存器的内容相加成新的16位的地址,该地址位操作数的地址。(该类寻址只有两条命令)
    MOVC A,@A+DPTR
    MOVC A,@A+PC

    六、相对寻址是以当前的程序计数器PC值加上指令中给定的偏移量rel所得的结果作为转移地址。
    目的地址=源地址+相对转移指令字节数+rel
例:JC 75H ;(PC)+2+75H→PC

    七、位寻址不仅可以进行按字节单位进行存储和操作,还可以按位的单位进行存储和操作
    例:MOV C,01H ;01H为位地址

    八、页面寻址:当用R0,R1作为地址指针访问片外RAM时的寻址方式。
     例:MOVX @R0,A   ;(A)→0A001H

(2).MCS-51的指令系统

      一.数据传送类指令
      这类指令有:MOV,MOVX,MOVC,XCH,XCHD,SWAP,POP,PUSH
      MOV是移动指令,例子上面已有列出。
      查表指令:MOVC
          1.MOVC A,@A+PC     ;((A)+(PC))→A
          2.MOVC A,@A+DPTR     ;((A)+(DPTR))→A

      MOVX是累加器A与片外数据存储器传送指令
      堆栈操作指令
      1.PUSH direct   ;直接寻址,(SP)+1→SP,(direct)→(SP)
      2.POP direct   ;直接寻址,((SP))→direct,(SP)-1=SP
      交换指令
      1.XCH A,Rn ;即操作数进行交换
      2.XCHD A,@Ri   ;半字节交换指令,即累加器A中的底四位与操作数中的底四位进行交换
      3.SWAP A   ;自身半字节交换指令,即累加器A中底四位与高四位进行交换。
      
      二.算术运算指令
      这类指令有:ADD,ADDC,INC,SUBB,DEC,DA,MUL,DIV
      ADD是不带进位的加法指令 |例:ADD A,70H      ;(A)+(70H)→A
      ADDC是带进位的加法指令 |例:ADDC A,R0       ;(A)+(R0)+CY→A
      CY是进位标志 
      SUBB是带进位的减法指令 |例:SUBB A,Rn       ;(A)-(Rn)-CY→A
      增量指令 |例:INC A   ;(A)+1→A
      减量指令 |例:DEC A   ;(A)-1→A  
 
      乘法指令 |例:MUL AB ;A*B的位数少于8位,则OV=0;否则OV=1
      除法指令 |例:DIV AB ;就是A除B,结果的商放在A中,余数放在B中

      三.逻辑运算类指令
      这类指令有:CLR,CPL,RL,RLC,RR,RRC,ANL,ORL,XRL
      CLR是清零操作,CPL是取非操作   
      RL是左循环移位1位,RR是右循环移位1位,
      RLC是累加器A与进位标志CY一起向左循环移位1位,RRC是累加器A与进位标志CY一起向右循环移位1位 
      ANL是逻辑与运算,ORL是逻辑或运算,XRL是逻辑异或运算
     
      四.位操作类指令
      这类指令有:MOV,CLR,CPL,SETB,ANL,ORL,JC,JNC,JB,JNB,JBC
      MOV是位变量传送指令
      CLR,CPL,SETB是位变量修改指令
      ANL,ORL是位变量逻辑运算指令
      JC,JNC,JB,JNB,JBC是位变量条件转移指令,这些指令是对PC或bit先进行判断,然后进行操作

      五.控制转移类指令
      这类指令有:AJMP,SJMP,LJMP,JZ,JNZ,CJNE,DJNZ,ACALL,LCALL,RET,RETI,NOP
      1.无条件跳转指令 
       AJMP是绝对短跳转指令,在程序存储器中每个2K的空间内进行跳转,但是不能从一个2K空间跳倒另一个2K空间里
       SJMP是相对短跳转指令,在程序存储器里,以当前位子为中心进行-128~127范围的跳转
       LJMP是长跳转指令,在64K的程序存储器里任意跳转
JMP间接跳转指令
       
       2.条件转移指令
       判零跳转指令:
       1.JZ rel ;当(A)=0时,执行跳转操作。2.JNZ rel ;当(A)!=0时,执行跳转操作
       比较不相等跳转指令:
       1.CJNE A,direct,rel ;当A与direct相等的时候不执行跳转;当A>direct的时候,执行跳转,CY至0;当A<direct的时候,执行跳转操作,CY至1
       减1不为0跳转指令:DJNZ
       调用返回指令:短调用指令,ACALL addr11
                                     长调用指令,LCALL addr16
       从子程序返回指令:RET
       从子程序返回指令:RET
       从中断返回指令:RETI
       空操作指令:NOP   ;(PC)+1→PC   即这个指令就是没有任何效果

 
posted @ 2013-03-18 15:21  顶顶顶顶  阅读(1615)  评论(0编辑  收藏  举报