51單片機(jī)那些指令英文和中文的對(duì)照表
助記符 代碼 說(shuō)明
MOV A,Rn E8~EF 寄存器A
MOV A,direct E5 dircet 直接字節(jié)送A
MOV A,@Ri ER~E7 間接RAM送A
MOV A,#data 74 data 立即數(shù)送A
MOV Rn,A F8~FF A送寄存器
MOV Rn,dircet A8~AF dircet 直接字節(jié)送寄存器
MOV Rn,#data 78~7F data 立即數(shù)送寄存器
MOV dircet,A F5 dircet A送直接字節(jié)
MOV dircet,Rn 88~8F dircet 寄存器送直接字節(jié)
MOV dircet1,dircet2 85 dircet1 dircet2 直接字節(jié)送直接字節(jié)
MOV dircet,@Ro 86~87 間接RAM送直接字節(jié)
MOV dircet,#data 75 dircet data 立即數(shù)送直接字節(jié)
MOV @Ri,A F6~F7 A送間接RAM
MOV @Ri,#data 76~77 data 直接字節(jié)送間接RAM
MOV @Ri,#data 76~77 data 立即數(shù)送間接RAM
MOV DPTR,#data16 90 data 15~8 16位常數(shù)送數(shù)據(jù)指針
data7~0
MOVC A,@A+DPTR 93 由((A)+(DPTR))尋址的程序存貯
器字節(jié)選A
MOVC A,@A+PC 83 由((A)+(PC));尋址的程序存貯器字節(jié)送A
MOVX A,@Ri E2~E3 送外部數(shù)據(jù)(8位地址)送A
MOVX A,@DPTR E0 送外部數(shù)據(jù)(16位地址)送A
MOVX @Ri,A F2~F3 A送外部數(shù)據(jù)(8位地址)
MOVX @DPTR,A F0 A送外部數(shù)據(jù)(16位地址)
PUSH dircet C0 dircet 直接字節(jié)進(jìn)棧,SP加1
POP dircet D0 dircet 直接字節(jié)退棧,SP減1
XCH A,Rn C8~CF 交換A和寄存器
XCH A,dircet C5 dircet 交換A和直接字節(jié)
XCH A,@Ri C6~C7 交換A和間接RAM
XCH A,@Ri D6~D7 交換A和間接RAM的低位
SWAP A C4
算術(shù)操作 (A的二個(gè)半字節(jié)交換)
ADD A,Rn 28~2F 寄存器加到A
ADD A,dircet 25 dircet 直接字節(jié)加到A
ADD A,@Ri 26~27 間接RAM加到A
ADD A,#data 24data 立即數(shù)加到A
ADD A,Rn 38~3F 寄存器和進(jìn)位位加到A
ADD A,dircet 35dircet 直接字節(jié)和進(jìn)位位加到A
ADD A,@Ri 36~37 間接字節(jié)和進(jìn)位位加到A
ADD A,data 34 data 立即數(shù)和進(jìn)位位加到A
ADD A,Rn 98~9F A減去寄存器和進(jìn)位位
ADD A,dircet 95 dircet A減去直接字節(jié)和進(jìn)位位
ADD A,@Ri 36~37 間接RAM和進(jìn)位位加到A
ADD A,data 34 data 立即數(shù)和進(jìn)位位加到A
SUBB A,Rn 98~9F A減去寄存器和進(jìn)位位
SUBB A,dircet 95 dircet A減去直接字節(jié)和進(jìn)位位
SUBB A,@Ri 96~97 A減去間接RAM和進(jìn)位位
SUBB A,#data 94 data A減去立即數(shù)和進(jìn)位位
INC A 04 A加1
INC Rn 08~0F 寄存器加1
INC dircet 05 dircet 直接字節(jié)加1
INC @Ri 06~07 間接RAM加1
DEC A 14 A減1
DEC Rn 18~1F 寄存器減1
DEC dircet 15 dircet 直接字節(jié)減1
DEC @Ri 16~17 間接RAM減1
INC DPTR A3 數(shù)據(jù)指針加1
MUL AB A4 A乘以B
DIV AB 84 A除以B
DA A D4 A的十進(jìn)制加法調(diào)整
邏輯操作
ANL A,Rn 58~5F 寄存器“與”到A
ANL A,dircet 55 dircet 直接字節(jié)“與”到A
ANL A,@Ri 56~57 間接RAm“與”到A
ANL A,#data 54 data 立即數(shù)“與”到A
ANL dircet A 52 dircet A“與”到直接字節(jié)
ANL dircet,#data 53 dircet data 立即數(shù)“與”到直接字節(jié)
ORL A,Rn 48~4F 寄存器“或”到A
ORL A,dircet 45 dircet 直接字節(jié)“或”到A
ORL A,@Ri 46~47 間接RAM“或”到A
ORL A,#data 44 data 立即數(shù)“或”到A
ORL dircet,A 42 dircet A“或”到直接字節(jié)
ORL dircet,#data 43 dircet data 立即數(shù)“或”到直接字節(jié)
XRL A,Rn 68~6F 寄存器“異或”到A
XRL A,dircet 65 dircet 直接字節(jié)“異或”到A
XRL A,@Ri 66~67 間接RAM“異或”到A
XRL A,#data 64 data 立即數(shù)“異或”到A
XRL dircet A 62 dircet A“異或”到直接字節(jié)
XRL dircet,#data 63 dircet data 立即數(shù)“異或”到直接字節(jié)
CLR A E4 清零
CPL A F4 A取反
RL A 23 A左環(huán)移
RLC A 33 A通過(guò)進(jìn)位左環(huán)移
RR A 03 A右環(huán)移
RRC A 13 A通過(guò)進(jìn)位右環(huán)移
控制程序轉(zhuǎn)移
ACALL addr 11 *1 addr(a7~a0) 絕對(duì)子程序調(diào)用
LCALL addr 16 12 addr(15~8) 長(zhǎng)子程序調(diào)用
addr(7~0)
RET 22 子程序調(diào)用返回
RETI addr 11 32 中斷調(diào)用返回
AJMP addr 11 △1 addr(a7~a6) 絕對(duì)轉(zhuǎn)移
LJMP addr 16 02addr(15~8) 長(zhǎng)轉(zhuǎn)移
addr(7~0)
SJMP rel 80 rel 短轉(zhuǎn)移,相對(duì)轉(zhuǎn)移
JMP @A+DPTR 73 相對(duì)于DPTR間接轉(zhuǎn)移
JZ rel 60 rel A為零轉(zhuǎn)移
JNZ rel 70 rel A為零轉(zhuǎn)移
CJNE A,dircet,rel B5 dircet rel 直接字節(jié)與A比較,不等則轉(zhuǎn)移
CJNE A,#data,rel B4 data rel 立即數(shù)與A比較,不等則轉(zhuǎn)移
CJNE A,Rn,#data,rel B8~BF data rel 立即數(shù)與寄存器比較,不等則轉(zhuǎn)移
CJNE @Ri,#data,rel B6~B7 data rel 立即數(shù)與間接RAM比較,不等則轉(zhuǎn)移
DJNZ Rn,rel D8~DF rel 寄存器減1,不為零則轉(zhuǎn)移
DJNZ dircet,rel B5 dircet rel 直接字節(jié)減1,不為零則轉(zhuǎn)移
NOP 00 空操作
*=a10a9a8l
△=a10a9a80
布爾變量操作
CLR C C3 清零進(jìn)位
CLR bit C2 清零直接位
SETB C D3 置位進(jìn)位
SETB bit D2 置位直接位
CPL C B3 進(jìn)位取反
CPL bit B2 直接位取反
ANL C,bit 82 dit 直接數(shù)“與”到進(jìn)位
ANL C,/bit B0 直接位的反“與”到進(jìn)位
ORL C,bit 72 bit 直接位“或”到進(jìn)位
ORL C,/bit A0 bit 直接位的反“或”到進(jìn)位
MOV C,bit A2 bit 直接位送進(jìn)位
MOV bit,C 92 bit 進(jìn)位送直接位
JC rel 40 rel 進(jìn)位位為1轉(zhuǎn)移
JNC rel 50 rel 進(jìn)位位為0轉(zhuǎn)移
JB bit,rel 20 bit rel 直接位為1相對(duì)轉(zhuǎn)移
JNB bit,rel 30 bit rel 直接位為0相對(duì)轉(zhuǎn)移
JBC bit,rel 10 bit rel 直接位為1相對(duì)轉(zhuǎn)移,然后清零該位
[1]. 循環(huán)移位指令(4條)
RL A ;累加器A中的內(nèi)容左移一位
RR A ;累加器A中的內(nèi)容右移一位
RLC A ;累加器A中的內(nèi)容連同進(jìn)位位CY左移一位
RRC A ;累加器A中的內(nèi)容連同進(jìn)位位CY右移一位
[2]. 累加器半字節(jié)交換指令(1條)
SWAP A ; 累加器中的內(nèi)容高低半字節(jié)互換
[3]. 求反指令(1條)
CPL A ; 累加器中的內(nèi)容按位取反
[4]. 清零指令(1條)
CLR A ; 0→(A),累加器中的內(nèi)容清0
[5]. 邏輯與操作指令(6條)
ANL A,data ;累加器A中的內(nèi)容和直接地址單元中的內(nèi)容執(zhí)行與邏輯操作。結(jié)果存在寄存器A中。
ANL data,#data ;直接地址單元中的內(nèi)容和立即數(shù)執(zhí)行與邏輯操作。結(jié)果存在直接地址單元中。
ANL A,#data ;累加器A的內(nèi)容和立即數(shù)執(zhí)行與邏輯操作。結(jié)果存在累加器A中。
ANL A,Rn ;累加器A的內(nèi)容和寄存器Rn中的內(nèi)容執(zhí)行與邏輯操作。結(jié)果存在累加器A中。
ANL data,A ;直接地址單元中的內(nèi)容和累加器A的內(nèi)容執(zhí)行與邏輯操作。結(jié)果存在直接地址單元中。
ANL A,@Ri ;累加器A的內(nèi)容和工作寄存器Ri指向的地址單元中的內(nèi)容執(zhí)行與邏輯操作。結(jié)果存在累加器A中。
[6]. 邏輯或操作指令(6條)
這組指令的作用是將兩個(gè)單元中的內(nèi)容執(zhí)行邏輯或操作。如果直接地址是I/O地址,則為“讀—修改—寫”操作。
ORL A,data ;累加器A中的內(nèi)容和直接地址單元中的內(nèi)容執(zhí)行邏輯或操作。結(jié)果存在寄存器A中。
ORL data,#data ;直接地址單元中的內(nèi)容和立即數(shù)執(zhí)行邏輯或操作。結(jié)果存在直接地址單元中。
ORL A,#data ;累加器A的內(nèi)容和立即數(shù)執(zhí)行邏輯或操作。結(jié)果存在累加器A中。
ORL A,Rn ;累加器A的內(nèi)容和寄存器Rn中的內(nèi)容執(zhí)行邏輯或操作。結(jié)果存在累加器A中。
ORL data,A ;直接地址單元中的內(nèi)容和累加器A的內(nèi)容執(zhí)行邏輯或操作。結(jié)果存在直接地址單元中。
ORL A,@Ri ;累加器A的內(nèi)容和工作寄存器Ri指向的地址單元中的內(nèi)容執(zhí)行邏輯或操作。結(jié)果存在累加器A中。
[7]. 邏輯異或操作指令(6條)
XRL A,data ;累加器A中的內(nèi)容和直接地址單元中的內(nèi)容執(zhí)行邏輯異或操作。結(jié)果存在寄存器A中。
XRL data,#data ;直接地址單元中的內(nèi)容和立即數(shù)執(zhí)行邏輯異或操作。結(jié)果存在直接地址單元中。
XRL A,#data ;累加器A的內(nèi)容和立即數(shù)執(zhí)行邏輯異或操作。結(jié)果存在累加器A中。
XRL A,Rn ;累加器A的內(nèi)容和寄存器Rn中的內(nèi)容執(zhí)行邏輯異或操作。結(jié)果存在累加器A中。
XRL data,A ;直接地址單元中的內(nèi)容和累加器A的內(nèi)容執(zhí)行邏輯異或操作。結(jié)果存在直接地址單元中。
XRL A,@Ri ;累加器A的內(nèi)容和工作寄存器Ri指向的地址單元中的內(nèi)容執(zhí)行邏輯異或操作。結(jié)果存在累加器A中
控制轉(zhuǎn)移類指令分析
[1]. 無(wú)條件轉(zhuǎn)移指令(4條)
LJMP addr16 ;addr16→(PC),給程序計(jì)數(shù)器賦予新值(16位地址)
AJMP addr11 ;(PC)+2→(PC),addr11→(PC10-0)程序計(jì)數(shù)器賦予新值(11位地址),(PC15-11)不改變
SJMP rel ;(PC)+ 2 + rel→(PC)當(dāng)前程序計(jì)數(shù)器先加上2再加上偏移量給程序計(jì)數(shù)器賦予新值
JMP @A+DPTR ;(A)+ (DPTR)→(PC),累加器所指向地址單元的值加上數(shù)據(jù)指針的值給程序計(jì)數(shù)器賦予新值
[2]. 條件轉(zhuǎn)移指令(8條)
JZ rel ; A=0,(PC)+ 2 + rel→(PC),累加器中的內(nèi)容為0,則轉(zhuǎn)移到偏移量所指向的地址,否則程序往下執(zhí)行
JNZ rel ; A≠0,(PC)+ 2 + rel→(PC),累加器中的內(nèi)容不為0,則轉(zhuǎn)移到偏移量所指向的地址,否則程序往下執(zhí)行
CJNE A, data, rel ; A≠(data),(PC)+ 3 + rel→(PC),累加器中的內(nèi)容不等于直接地址單元的內(nèi)容,則轉(zhuǎn)移到偏移量所指向的地址,否則程序往下執(zhí)行
CJNE A, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),累加器中的內(nèi)容不等于立即數(shù),則轉(zhuǎn)移到偏移量所指向的地址,否則程序往下執(zhí)行
CJNE Rn, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),工作寄存器Rn中的內(nèi)容不等于立即數(shù),則轉(zhuǎn)移到偏移量所指向的地址,否則程序往下執(zhí)行
CJNE @Ri, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),工作寄存器Ri指向地址單元中的內(nèi)容不等于立即數(shù),則轉(zhuǎn)移到偏移量所指向的地址,否則程序往下執(zhí)行
布爾變量操作指令分析
[1]. 位傳送指令(2條)
MOV C,bit ;bit→CY,某位數(shù)據(jù)送CY
MOV bit,C ;CY→bit,CY數(shù)據(jù)送某位
[2]. 位置位復(fù)位指令(4條)
CLR C ; 0→CY,清CY
CLR bit ; 0→bit,清某一位
SETB C ; 1→CY,置位CY
SETB bit ; 1→bit,置位某一位
[3]. 位運(yùn)算指令(6條)
ANL C,bit ;(CY)∧(bit)→CY
ANL C,/bit ;(CY)∧( )→CY
ORL C,bit ;(CY)∨(bit)→CY
ORL C,/bit ;(CY)∧()→CY
CPL C ;()→CY
CPL bit ;()→bir
[4]. 位控制轉(zhuǎn)移指令(5)
JC rel ; (CY)=1轉(zhuǎn)移,(PC)+2+rel→PC,否則程序往下執(zhí)行,(PC)+2→PC。
JNC rel ; (CY)=0轉(zhuǎn)移,(PC)+2+rel→PC,否則程序往下執(zhí)行,(PC)+2→PC。
JB bit, rel ; 位狀態(tài)為1轉(zhuǎn)移。
JNB bit, rel ; 位狀態(tài)為0轉(zhuǎn)移。
JBC bit, rel ; 位狀態(tài)為1轉(zhuǎn)移,并使該位清“0”。
評(píng)論