指令按寻址方式分有 7种寻址方式,直接寻址(direct)、立即寻址(#20H) 、寄存器寻址(Rn)、寄存器间接寻址(@Ri)、相对寻址(rel)、寄存器变址寻址(@A+PC)、位寻址 ( ACC.1)
指令按功能上分有5种 ,传送类指令 、算术运算类指令、逻辑运算及移位类指令、控制转移类指令、位操作类指令。其指令三大属性:功能属性、空间属性(指令站用的字节数)、时间属性(指令执行的机器周期数)。
一、数据传送指令(28):
使用最频繁的一类指令,通用格式:
MOV <目的操作数>,<源操作数>
属“复制”性质,而不是“搬家”。数据传送类指令不影响标志位:Cy、Ac和OV,影响奇偶标志位P。
1.内部RAM数据传送指令(16条)
(1)以累加器为目的操作数的指令(4条)
MOV A,Rn ; (Rn)→A,n=0~7
MOV A,@Ri ; ((Ri))→A,i=0,1
MOV A,direct ;(direct)→A
MOV A,#data ; #data→A
(2) 以Rn为目的操作数的指令(3条)
MOV Rn,A ; (A)→Rn,n=0~7
MOV Rn,direct ;(direct)→Rn,n=0~7
MOV Rn,#dat ; #data→Rn,n=0~7
功能:是把源操作数的内容送入当前一组工作寄存器区的R0~R7中的某一个寄存器。
(3)以直接地址direct为目的操作数的指令(5条)
MOV direct,A ; (A)→direct
MOV direct,Rn;(Rn)→direct, n=0~7
MOV direct1,direct2;
MOV direct,@Ri ; ((Ri))→direct
MOV direct,#data; #data→direct
功能:把源操作数送入直接地址指出的存储单元。direct指的是内部RAM或SFR的地址。
(4)以寄存器间接地址为目的操作数的指令(3条)
MOV @Ri,A ;(A)→((Ri)),i=0,1
MOV @Ri,direct ; (direct)→((Ri))
MOV @Ri,#data ; #data→((Ri))
(5)16位数传送指令 (1条)
MOV DPTR,#data16 ; #data16→DPTR
唯一的16位数据的传送指令 ,立即数的高8位送入DPH,立即数的低8位送入DPL。
2.堆栈操作指令(2条)
MCS-51内部RAM中可以设定一个后进先出(LIFO-Last In First Out)的区域称作堆栈。堆栈指针SP指出堆栈的栈顶位置。进栈指令
PUSH direct
先将栈指针SP加1,然后把direct中的内容送到栈指针SP指示的内部RAM单元中。
出栈指令
POP direct
SP指示的栈顶(内部RAM单元)内容送入direct字节单元中,栈指针SP减1。
3.累加器A与外部数据存储器传送指令(4)
MOVX A,@DPTR ;((DPTR))→A,读外部RAM/IO
MOVX A,@Ri ;((Ri))→A,读外部RAM/IO
MOVX @DPTR,A;(A)→((DPTR)),写外部RAM/IO
MOVX @Ri,A ;(A)→((Ri)),写外部RAM/IO
功能:读外部RAM存储器或I/O中的一个字节,或