單片機之匯編指令系統(tǒng)
MCS-51單片機指令系統(tǒng)按功能來分有五種.
數(shù)據(jù)傳送指令:
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位立即數(shù)傳送到數(shù)據(jù)指針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位無符號數(shù)相乘,其16位積的低八位存入A,高八位存入B
,如果積大于255(0FFH),則置位溢出標志OV,進位標志Cy總是清零.
DIV AB ;A除以B.所得數(shù)的整數(shù)部分放入A,余數(shù)部分放入B
如果B為0,則A,B結果不變,置位溢出標志OV,進位標志Cy總是清零.
邏輯運算指令:
CLR A ;(A)=0
CPL A ;/A→A
RL A ;左循環(huán)移位1
RR A ;右循環(huán)移位1
RLC A ;A與Cy左循環(huán)移位1
RRC A ;A與Cy右循環(huán)移位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;比較不相等跳轉指令.執(zhí)行過程為: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 ;減一不為零跳轉指令 .執(zhí)行過錯為 a.(PC)+2→PC. b.(Rn)-1→direct c.若Rn!=0,則(PC)+rel→PC;若direct=0,則程序往下執(zhí)行
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
擴展閱讀:PIC單片機指令周期計算