微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机之汇编指令系统

单片机之汇编指令系统

时间:06-08 来源:互联网 点击:

MCS-51单片机指令系统按功能来分有五种.

数据传送指令:

MOV Rn,#data ;立即寻址,data→Rn

MOV A,@Ri ;间接寻址,((Ri))→A,i=0,1

MOV direct,Rn ;寄存器寻址,(Rn)→direct

MOV @Ri,A ;寄存器寻址,(A)→(Ri)

MOV DPTR,#data16 ;把16位立即数传送到数据指针DPTR,高8位送DPH,低八位送DPL.

(例:MOV DPTR,#1234H;DPTR=1234H,DPH=12H,DPL=34H.)

MOVC A,@A+PC ;((A)+(PC)→A)

MOVX @DPTR,A ;寄存器间接寻址,(A)→(DPTR)

PUSH direct ;直接寻址.(SP)+1→SP,(direct)→SP

POP direct ;直接寻址,((SP))→direct,(SP-1)→SP

XCH A,Rn ;(A)←→(Rn)交换

XCHD A,@Rn ;(A)0~3←→((Rn))0~3

SWAP A ;(A)0~3←→(A)4~7

算术运算指令

ADD A,@Ri ;(A)+(Ri)→A,不带进位加法

ADDC A,Ri ;(A)+(Ri)+Cy→A

SUBB A,#data ;(A)-data-Cy→A

INC direct ;(direct)+1→direct,加一指令

DEC @Ri ;((Ri))-1→(Ri)

DA A ;十进制调整指令

MUL AB ;把A,B两个8位无符号数相乘,其16位积的低八位存入A,高八位存入B

,如果积大于255(0FFH),则置位溢出标志OV,进位标志Cy总是清零.

div AB ;A除以B.所得数的整数部分放入A,余数部分放入B

如果B为0,则A,B结果不变,置位溢出标志OV,进位标志Cy总是清零.

逻辑运算指令:

CLR A ;(A)=0

CPL A ;/A→A

RL A ;左循环移位1

RR A ;右循环移位1

RLC A ;A与Cy左循环移位1

RRC A ;A与Cy右循环移位1

ANL 逻辑与操作指令

ORL 逻辑或操作指令

XRL 逻辑异或操作指令

位操作指令:

MOV C,bit ;(bit)→Cy

CLR 清零

CPL 取反

SETB 置1

ANL 与

ORL 或

JC rel ;若Cy=1,则(PC)+2+rel→PC,若Cy=0,则(PC)+2→PC

JNC rel ;若Cy=1,则(PC)+2→PC,若Cy=0,则(PC)+2+rel→PC

JB bit,rel ;若(bit)=1,则(PC)+3+rel→PC,若(bit)=0,则(PC)+2→PC

JNB 与上相反

JBC bit,rel ;若(bit)=1,则(PC)+3+rel→PC且置(bit)=0,若bit=0,则(PC)+2→PC

控制转移指令:

AJMP addr ;绝对跳转指令

SJMP rel ;相对跳转指令,(PC)+2+rel→PC

LJMP addr16 ;长跳转指令,addr16→PC

JMP @A+DPTR ;间接跳转指令

JZ rel ;判零跳转指令,(A)=1,则(PC)+2+rel→PC,若A!=0,则(PC)+2→PC

JNZ rel ;与上相反

CJNE A,direct,rel;比较不相等跳转指令.执行过程为:a.(A)=(direct),则(PC)+3→(PC),Cy=0

b.(A)>(direct),则(PC)+3+rel→(PC),Cy=0

c.(A)(direct),则(PC)+3+rel→(PC),Cy=1

DJNZ Rn,rel ;减一不为零跳转指令 .执行过错为 a.(PC)+2→PC. b.(Rn)-1→direct c.若Rn!=0,则(PC)+rel→PC;若direct=0,则程序往下执行

ACALL addr ;短调用指令

LCALL addr ;长调用指令

RET ;从子程序返回指令

RETI ;从中断返回指令

NOP ;空操作指令

指令助记注释:

ADDC ---Add with Carry Flag

SUBB ---Subtract With Borrow

INC ---- Increment

DEC-------Decrement

MUL----Multiply

div----Divide

DA----Decimal Adjust

MOV----move

MOVX----move external RAM

MOVC----move code

XCH----Exchange

XCHD----Exchange low-order Digit

ANL----and logical

ORL----or logical

XRL----exclusive-or logical

CLR----clear

CPL----complement logical

RL----rotate left

RR---rotate right

ACALL----absolute subroutine call

LCALL----long subroutine call

RET----return from subroutine

RETI----return from interrupt

AJUMP----absolute jump

LJMP----long jump

SJMP----short jump

JZ----jump if accumulator is zero

JNZ----jump if not zero

JC----jump if carray flag is set

JB----jump if direct bit not set

CJNE----compare jmp if not equal

DJNZ----decrement jump if zero

NOP----no operation

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top