佛科院单片机原理2——80C51指令系统

一、算术运算符:

  1. 标志位:

(1)Cy:最高位溢出

(2)OV:最高位和次高位其中之一有溢出

(3)AC:低四位向高四位进位

(4)P:偶数个1为0

  1. 标志位的作用:

(A)Cy:ADDC,运算时加上Cy,实现高于低八位的加法;低八位运算时用ADD,或者将Cy置零再用ADDC

  1. 十进制调整指令DA:

(1)这是用于BCD码加法的指令(如果不懂BCD码,建议先了解一下)

(2)根据AC、Cy和A,将A进行”加6修正“

二、控制转移符:

  1. PC与转移指令:

(1)PC中存放的是要执行的下一条指令的地址,而不是当前指令的地址

(2)为什么AJMP的操作中有PC<-PC+2,而LJMP中没有写?

其实在执行这两种指令时PC都发生了变化,但是区别在于AJMP是改变11位地址,如果PC+2会对高三位的地址有影响;而LJMP是改变16位 地址即整个PC,导致之前无论对PC有什么操作都不会对之后影响了

  1. 子程序调用与返回指令:

(1)在调用子程序后一定要记得返回

(2)在执行调用操作时,会将在主程序执行的PC进行压栈保护

三、指令汇总:

  1. 数据传输:

(1)MOV:内部传输

(2)MOVX:累加器A与外部存储器,以DPTR作为地址指针,或以Ri和P2作为地址指针

(3)MOVC:累加器A与程序存储器,以A和DPTR作为地址指针,或以A和PC作为地址指针

  1. 字节交换:

(1)XCH:将A与某地址的一个字节数据交换

(2)XCHD:将A低四字节与某地址的四字节数据交换

  1. 堆栈操作:

(1)PUSH:进栈

(2)POP:出栈

  1. 对A操作:

(1)ADD:不带进位加法,将A与某地址数据相加存到A中

(2)ADDC:与ADD区别是加上Cy进位

(3)SUBB:带借位减法,将A作为被减数存到A中

(4)MUL:A*B

(5)DIV:A/B(B不能为零)

(6)DA:十进制调整指令

(7)CLR:清零

(8)CPL:取反

(9)SWAP:高低字节交换

(10)RL:循环左移

(11)RLC:带进位循环左移

(12)RR:循环右移

(13)RRC:带进位循环右移

  1. 运算指令:

(1)INC:数据加一

(2)DEC:数据减一

(3)ANL:逻辑与

(4)ORL:逻辑或

(5)XRL:逻辑异或

  1. 转移指令:(对PC操作)

(1)AJMP:短转移(11位)

(2)LJMP:长转移

(3)SJMP:目标地址是PC+2+rel

(4)JMP:目标地址是A+DPTR

(5)JZ:A=0时转移,目标地址是PC+2+rel

(6)JNZ:A!=0时转移,目标地址是PC+2+rel

(7)DJNZ:减零不为零转移,目标地址是PC+3+rel

(8)CJNE:比较不相等转移,目标地址是PC+3+rel

  1. 子程序调用:

(1)ACALL:短调用

(2)LCALL:长调用

(3)RET:子程序返回

(4)RETI:中断返回

  1. 位条件转移:

(1)JC:Cy= 1

(2)JNC:Cy= 0

(3)JB:某位为1

(4)JNB

(5)JBC:某位为1,位清零转移

  1. 伪代码:

(1)起始伪代码ORG:设置程序存储器的起始地址

(2)END:表示程序结束

(3)DQU(或"="):等于define

(4)DB:从标号指定的地址开始,在程序存储器中定义字节数据

(5)DW:类似于DB,不过是定义字(两个字节)数据,高位先存

(6)DS:从标号指定的地址开始,保留相应的地址单元

(7)DATA:类似于EQU

(8)BIT:位地址赋名

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值