文档库 最新最全的文档下载
当前位置:文档库 › 80C51指令系统

80C51指令系统

80C51指令系统
80C51指令系统

80C51单片机指令系统

来自常信院3#731 v罗

1、数据传送类指令

MOV A,#date(8位立即数送累加器)

MOV direct,#date(8位立即数送直接寻址单元)

MOV @Ri,#date(8位立即数送Ri间接寻址单元)

MOV Rn,#date(8位立即数送寄存器)

MOV DPTR,#date16(16位立即数送DPTR)

MOV direct2,direct1(直接寻址数据送直接寻址单元)

MOV direct,@Ri(Ri间接寻址数据送直接寻址单元)

MOV direct,Rn(寄存器内容送直接寻址单元)

MOV @Ri,direct(直接寻址数据送Ri间接寻址单元)

MOV Rn,direct(直接寻址数据送寄存器)

MOV A,direct(直接寻址数据送累加器)

MOV A,@Ri(Ri间接寻址数据送累加器)

MOV A,Rn(寄存器内容送累加器)

MOV direct,A(累加器内容送直接寻址单元)

MOV @Ri,A(累加器内容送Ri间接寻址单元)

MOV Rn,A(累加器内容送寄存器)

MOVX A,@Ri(Ri间接寻址的外部RAM单元读)(不常用)

MOVX @Ri,A(Ri间接寻址的外部RAM单元写)(不常用)

MOVX A,@DPTR(DPTR间接寻址的外部RAM单元读)

MOVX @DPTR,A(DPTR间接寻址的外部RAM单元写)

MOVC A,@A+DPTR(程序存储器读)

MOVC A,@A+PC(程序存储器读)(不常用)

整字节交换指令

XCH A,Rn(寄存器寻址字节交换)

XCH A,direct(直接寻址字节交换)

XCH A,@Ri(Ri间接寻址字节交换)

半字节交换指令

XCHD A,@Ri(Ri间接寻址半字节交换)注解:是低四位交换

SWAP A(累加器内容高低半字节交换)注解:高四位与低四位交换

PUSH direct(进栈)

POP direct(出栈)

2、算数运算类指令

ADD A,#date(立即数加法)

ADD A,direct(直接寻址加法)

ADD A,@Ri(间接寻址加法)

ADD A,Rn(寄存器寻址加法)

ADDC A,#date(立即数带进位加法)注解:CY取决于上一步)

ADDC A,direct(直接寻址带进位加法)

ADDC A,@Ri(间接寻址带进位加法)

ADDC A,Rn(寄存器寻址带进位加法)

SUBB A,#date(立即数带借位减法)

SUBB A,direct(直接寻址带借位减法)

SUBB A,@Ri(间接寻址带借位减法)

SUBB A,Rn(寄存器寻址带借位减法)

INC A(累加器加1)

INC direct(直接寻址单元加1)

INC @Ri(间接寻址单元加1)

INC Rn(寄存器加1)

INC DPTR(16位数据指针加1)

DEC A(累加器减1)

DEC direct(直接寻址单元减1)

DEC @Ri(间接寻址单元减1)

DEC Rn(寄存器减1)

MUL AB(乘法)注解:低位字节送A,高位字节送B,CY,总是被清0,若OV=1,表示乘积大于255,分别存放在B与A中;否则,表示乘积小于或等于255,只存放在A 中,B 中的内容为0。

DIV AB(除法)注解:被除数置于累加器A中,除数置于寄存器B中,指令执行后,商存于A中,余数存于B中,CY总是被清0,当除数为0(B=0)时,OV置1,表明除法无意义,其他情况OV都被清0,除法可正常进行。

DA A(十进制调整)注解:加6调整

3、逻辑运算及移位类指令

ANL direct,A(累加器与直接寻址单元逻辑“与”)

ANL direct,#date(立即数与直接寻址单元逻辑“与”)

ANL A,#date(立即数与累加器逻辑“与”)

ANL A,direct(直接寻址单元与累加器逻辑“与”)

ANL A,@Ri(间接寻址单元与累加器逻辑“与”)

ANL A,Rn(寄存器与累加器逻辑“与”0

ORL direct,A(累加器与直接寻址单元逻辑“或”)

ORL direct,#date(立即数与直接寻址单元逻辑“或”)

ORL A,#date(立即数与累加器逻辑“或”)

ORL A,direct(直接寻址单元与累加器逻辑“或”)

ORL A,@Ri(间接寻址单元与累加器逻辑“或”)

ORL A,Rn(寄存器与累加器逻辑“或”)

XRL direct,A(累加器与直接寻址单元“异或”)

XRL direct,#date(立即数与直接寻址单元“异或“)

XRL A,#date(立即数与累加器“异或”)

XRL A,direct(直接寻址单元与累加器“异或”)

XRL A,@Ri(间接寻址单元与累加器“异或”)

XRL A,Rn(寄存器与累加器“异或”)

CLR A(累加器清0)

CPL A(累加器按位取反)注解;实际为逻辑“非”运算

RL A(累加器内容循环左移)

RR A(累加器内容循环右移)

RLC A(通过CY循环左移)

RRC A(通过CY 循环右移)

4、控制转移类指令

LJMP addr16(无条件长转移)

AJMP addr11(无条件绝对转移)

SJMP rel(无条件短转移)

JMP @A+DPTR(无条件间接转移)

JZ rel(累加器判0转移)

JNZ rel(累加器判非0转移)

CJNZ A,#date,rel(累加器内容与立即数比较,不等则转移)

CLNZ A,direct,rel(累加器内容与直接寻址单元比较,不等则转移)注解:若程序顺序执行,则左操作数=-右操作数;若程序转移且(CY)=0,则左操作数>右操作数;若程序转移且(CY)=1,则左操作数<右操作数。就是得判CY。

DJNZ Rn,rel(寄存器减1条件转移)

DJNZ direct,rel(直接寻址单元减1条件转移)注解:所得结果为0时,程序顺序执行,结果不为0,则程序转移。

ACALL addr11(绝对调用)

LCALL addr16(长调用)

RET(子程序返回)

RETI(中断服务子程序返回)

NOP(空操作)

5、位操作指令

MOV C,bit(指定位内容送CY)

MOV bit,C(CY内容送指定位)

SETB C(CY置1)

SEYB bit(指定位置1)

CLR C(CY清0)

CLR bit(指定位清0)

ANL C,bit(指定位与CY逻辑“与”)

ANL C,/bit(指定位的反语CY逻辑“与”)

ORL C,bit(指定位CY逻辑“或”)

ORL C,/bit(指定位的反与CY“或”)

CPL C(CY取反)

CPL bit(指定位取反)

JC rel(CY=1转移)

JNC rel(CY=0转移)

JB bit,rel(指定位状态为1转移)

JNB bit,rel(指定位状态为0转移0

JBC bit,rel(指定位状态为1转移,并使该位清0)

2010年12月7日星期一

相关文档