数据传送指令
1.基本传送指令
MOV指令是形式最简单、用得最多的指令,它可以实现CPU内部数据之间的数据传送、寄存器和内存之间的数据传送,还可以把一个立即数送给CPU的寄存器或者内存单元。
(1)目的操作数不允许为立即数;
(2)除源操作数为立即数的情况外,两个操作数中必有一个是寄存器;
(3)不允许在两个内存单元之间或者两个段寄存器之间直接传送数据;
(4)MOV指令不影响标志寄存器中的标志位。
2.堆栈操作指令
堆栈是以先进后出方式工作的存储区。在程序调用和中断处理过程时,分表要保存返回地址和断点地址;在进入子程序和中断处理后,还需要保留通用寄存器的值;子程序返回和中断处理返回时,则要恢复通用寄存器的值,并分别将返回地址或断点地址恢复到指令指针寄存器中。
PUSH是把字压入栈,POP是把字弹出栈。
SP的内容任何时候都指向当前的栈顶。
3.交换指令
MCS-51系统中,只能和累加器A进行字节交换
XCH A,Rn;
算数运算类指令
1、加法指令
(1)普通加法 ADD 目的操作数 源操作数
(2)带进位的加法 ADDC 目的操作数 源操作数
(3)加一指令 INC 操作数;
2、减法指令
在MCS-51系统中,只有带借位的减法指令,没有不带借位的减法指令
在第一次使用SUBB钱,要首先将CY清零。CLR C
(1)借位减法指令 SUBB 目的操作数 源操作数
(2)减1指令 DEC 操作数
3、乘法指令
(1)MUL 无符号乘法指令
MUL AB
本指令将累加器A和寄存器B中两个8位无符号数相乘,16位积的低8位存于A,高8位存于B中,进位标志总是清零。
4、除法指令
(2)DIB AB
被除数存于A中,除数存于B中,相除之后,商存于累加器A,余数存于累加器B中,清零CY和OV标志(只有除数为0,才会置为OV)
5、十进制调整指令(BCD码调整)
在MCS-51系统中,BCD码加法的调整指令为
DA A
逻辑操作类指令
1.逻辑与
ANL 目的操作数, 源操作数
对目的操作数与源操作数按位与运算
2.逻辑或
ORL 目的操作数, 源操作数
对目的操作数与源操作数按位或
3.逻辑疑惑
XRL 目的操作数,源操作数
4.逻辑求反
CPL A;将A诸位求反
CLR A;将A清零
RL A;各位一次左移,并将最高位移动至最低位
RLC A; 带进位的循环左移
RR A;各位依次右移,并将最低位移动至最高位
RRC A;带进位的循环右移指令
程序控制类指令
1.转移指令
(1)无条件转移指令
LJMP addr16;长转移指令
AJMP addr11;短跳转移指令 先将PC内容加2,PC高5位与11位地址addr11拼装成16位绝对地址。
SJMP rel;短跳转指令。
JMP @A + DPTR;间接跳转指令,
(2)条件转移指令
①累加器判零跳转指令
JZ rel;当A全0,则跳转至PC+2+rel
JNZ rel;当A不是全0,则跳转至PC+2+rel
②比较条件转移指令
CJNE 比较值1,比较值2,跳转偏移量
③减一条件转移指令
DJNZ Rn,rel;
2.调用和返回指令
(1)调用指令
①短调用指令
ACALL addr11
②长调用指令
LCALL addr16
(2)返回指令 RET
布尔位操作指令
MCS-51系统在硬件上有一个布尔处理器。
1、位传送指令
MOV C,bit
MOV bit,C
2、位清零以及位置位指令
CLR bit;清零
SETB bit;置位
3、位运算指令
ANL ORL CPL
4、位控制转移指令
(1)以CY内容为条件的转移指令
JC rel
JNC rel
JB bit,rel
JNB bit,rel
JBC bit,rel ;若bit=1;则跳转,且bit置0,否则执行下一指令