新聞中心

51匯編語(yǔ)言指令集

作者: 時(shí)間:2016-11-23 來(lái)源:網(wǎng)絡(luò) 收藏
符號(hào)定義表

符號(hào) 含義
Rn R0~R7寄存器n=0~7
Direct 直接地址,內(nèi)部數(shù)據(jù)區(qū)的地址RAM(00H~7FH)
SFR (80H~FFH) B,ACC,PSW,IP,P3,IE,P2,SCON,P1,TCON,P0
@Ri 間接地址Ri=R0或R1 8051/31RAM地址(00H~7FH) 8052/32RAM地址(00H~FFH)
#data 8位常數(shù)
#data16 16位常數(shù)
Addr1616位的目標(biāo)地址
Addr11 11位的目標(biāo)地址
Rel 相關(guān)地址
bit 內(nèi)部數(shù)據(jù)RAM(20H~2FH),特殊功能寄存器的直接地址的位

指令介紹

指令字節(jié)周期動(dòng)作說(shuō)明

數(shù)據(jù)轉(zhuǎn)移指令
50.MOV A,Rn11將寄存器的內(nèi)容載入累加器
51.MOV A,direct 21將直接地址的內(nèi)容載入累加器
52.MOV A,@Ri 11將間接地址的內(nèi)容載入累加器
53.MOV A,#data21將常數(shù)載入累加器
54.MOV Rn,A 11將累加器的內(nèi)容載入寄存器
55.MOV Rn,direct 22將直接地址的內(nèi)容載入寄存器
56.MOV Rn,gdata 21將常數(shù)載入寄存器
57.MOV direct,A21將累加器的內(nèi)容存入直接地址
58.MOV direct,Rn22將寄存器的內(nèi)容存入直接地址
59.MOV direct1, direct2 32將直接地址2的內(nèi)容存入直接地址1
60.MOV direct,@Ri 22將間接地址的內(nèi)容存入直接地址
61.MOV direct,#data32將常數(shù)存入直接地址
62.MOV @Ri,A 11將累加器的內(nèi)容存入某間接地址
63.MOV @Ri,direct 22將直接地址的內(nèi)容存入某間接地址
64.MOV @Ri,#data 21將常數(shù)存入某間接地址
65.MOV DPTR,#data16 32將16位的常數(shù)存入數(shù)據(jù)指針寄存器
66.MOVC A,@A+DPTR 12(A) ←((A)+(DPTR))累加器的值再加數(shù)據(jù)指針寄存器的值為其所指定地址,將該地址的內(nèi)容讀入累加器
67.MOVC A,@A+PC 12(PC)←(PC)+1;(A)←((A)+(PC))累加器的值加程序計(jì)數(shù)器的值作為其所指定地址,將該地址的內(nèi)容讀入累加器
68.MOVX A,@Ri 12將間接地址所指定外部存儲(chǔ)器的內(nèi)容讀入累加器(8位地址)
69.MOVX A,@DPTR 12將數(shù)據(jù)指針?biāo)付ㄍ獠看鎯?chǔ)器的內(nèi)容讀入累加器(16位地址)
70.MOVX @Ri,A 12將累加器的內(nèi)容寫(xiě)入間接地址所指定的外部存儲(chǔ)器(8位地址)
71.MOVX @DPTR,A 12將累加器的內(nèi)容寫(xiě)入數(shù)據(jù)指針?biāo)付ǖ耐獠看鎯?chǔ)器(16位地址)
72.PUSH direct 22將直接地址的內(nèi)容壓入堆棧區(qū)
73.POP direct 22從堆棧彈出該直接地址的內(nèi)容
74.XCH A,Rn 11將累加器的內(nèi)容與寄存器的內(nèi)容互換
75.XCH A,direct 21將累加器的值與直接地址的內(nèi)容互換
76.XCH A,@Ri 11將累加器的值與間接地址的內(nèi)容互換
77.XCHD A,@Ri 11將累加器的低4位與間接地址的低4位互換


算數(shù)運(yùn)算指令
1.ADD A,Rn 11將累加器與寄存器的內(nèi)容相加,結(jié)果存回累加器
2.ADD A,direct 21將累加器與直接地址的內(nèi)容相加,結(jié)果存回累加器
3.ADD A,@Ri 11將累加器與間接地址的內(nèi)容相加,結(jié)果存回累加器
4.ADD A,#data21將累加器與常數(shù)相加,結(jié)果存回累加器
5.ADDC A,Rn 11將累加器與寄存器的內(nèi)容及進(jìn)位C相加,結(jié)果存回累加器
6.ADDC A,direct 21將累加器與直接地址的內(nèi)容及進(jìn)位C相加,結(jié)果存回累加器
7.ADDC A,@Ri 11將累加器與間接地址的內(nèi)容及進(jìn)位C相加,結(jié)果存回累加器
8.ADDC A,#data 21將累加器與常數(shù)及進(jìn)位C相加,結(jié)果存回累加器
9.SUBB A,Rn 11將累加器的值減去寄存器的值減借位C,結(jié)果存回累加器
10.SUBB A,direct 21將累加器的值減直接地址的值減借位C,結(jié)果存回累加器
11.SUBB A,@Ri 11將累加器的值減間接地址的值減借位C,結(jié)果存回累加器
12.SUBB A,#data 21將累加器的值減常數(shù)值減借位C,結(jié)果存回累加器
13.INC A 11將累加器的值加1
14.INC Rn 11將寄存器的值加l
15.INC direct 21將直接地址的內(nèi)容加1
16.INC @Ri 11將間接地址的內(nèi)容加1
17.INC DPTR11數(shù)據(jù)指針寄存器值加1
說(shuō)明:將16位的DPTR加1,當(dāng)DPTR的低字節(jié)(DPL)從FFH溢出至00H時(shí),會(huì)使高字節(jié)(DPH)加1,不影響任何標(biāo)志位
18.DEC A 11將累加器的值減1
19.DEC Rn 11將寄存器的值減1
20.DEC direct 21將直接地址的內(nèi)容減1
21.DEC @Ri 11將間接地址的內(nèi)容減1
22.MUL AB 14將累加器的值與B寄存器的值相乘,乘積的低位字節(jié)存回累加器,高位字節(jié)存回B寄存器
說(shuō)明:將累加器A和寄存器B內(nèi)的無(wú)符號(hào)整數(shù)相乘,產(chǎn)生16位的積,低位字節(jié)存入A,高位字節(jié)存入B寄存器。如果積大于FFH,則溢出標(biāo)志位(OV)被設(shè)定為1,而進(jìn)位標(biāo)志位為0
23.DIV AB 14將累加器的值除以B寄存器的值,結(jié)果的商存回累加器,余數(shù)存回B寄存器
說(shuō)明:無(wú)符號(hào)的除法運(yùn)算,將累加器A除以B寄存器的值,商存入A,余數(shù)存入B。執(zhí)行本指令后,進(jìn)位位(C)及溢出位(OV)被清除為0
24.DA A 11將累加器A作十進(jìn)制調(diào)整,
若(A) 3-0>9或(AC)=1,則(A) 3-0←(A)3-0+6
若(A) 7-4>9或 (C)=1,則(A) 7-4←(A)7-4+6

邏輯運(yùn)算指令
25.ANL A,Rn 11將累加器的值與寄存器的值做AND的邏輯判斷,結(jié)果存回累加器
26.ANL A,direct21將累加器的值與直接地址的內(nèi)容做AND的邏輯判斷,結(jié)果存回累加器
27.ANL A,@Ri 11將累加器的值與間接地址的內(nèi)容做AND的邏輯判斷,結(jié)果存回累加器
28.ANL A,#data 21將累加器的值與常數(shù)做AND的邏輯判斷,結(jié)果存回累加器
29.ANL direct,A 21將直接地址的內(nèi)容與累加器的值做AND的邏輯判斷,結(jié)果存回該直接地址
30.ANL direct,#data 32將直接地址的內(nèi)容與常數(shù)值做AND的邏輯判斷,結(jié)果存回該直接地址
31.ORL A,Rn11將累加器的值與寄存器的值做OR的邏輯判斷,結(jié)果存回累加器
32.ORL A,direct 21將累加器的值與直接地址的內(nèi)容做OR的邏輯判斷,結(jié)果存回累加器
33.ORL A,@Ri 11將累加器的值與間接地址的內(nèi)容做OR的邏輯判斷,結(jié)果存回累加器
34.ORL A,#data 21將累加器的值與常數(shù)做OR的邏輯判斷,結(jié)果存回累加器
35.ORL direct,A 21將直接地址的內(nèi)容與累加器的值做OR的邏輯判斷,結(jié)果存回該直接地址
36.ORL direct,#data 32將直接地址的內(nèi)容與常數(shù)值做OR的邏輯判斷,結(jié)果存回該直接地址
37.XRL A,Rn 11將累加器的值與寄存器的值做XOR的邏輯判斷,結(jié)果存回累加器
38.XRL A,direct 21將累加器的值與直接地址的內(nèi)容做XOR的邏輯判斷,結(jié)果存回累加器
39.XRL A,@Ri 11將累加器的值與間接地扯的內(nèi)容做XOR的邏輯判斷,結(jié)果存回累加器
40.XRL A,#data 21將累加器的值與常數(shù)作XOR的邏輯判斷,結(jié)果存回累加器
41.XRL direct,A 21將直接地址的內(nèi)容與累加器的值做XOR的邏輯判斷,結(jié)果存回該直接地址
42.XRL direct,#data 32將直接地址的內(nèi)容與常數(shù)的值做XOR的邏輯判斷,結(jié)果存回該直接地址
43.CLR A 11清除累加器的值為0
44.CPL A 11將累加器的值反相
45.RL A 11將累加器的值左移一位
46.RLC A 11將累加器含進(jìn)位C左移一位
47.RR A 11將累加器的值右移一位
48.RRC A 11將累加器含進(jìn)位C右移一位
49.SWAP A 11將累加器的高4位與低4位的內(nèi)容交換。(A)3-0←(A)7-4

布爾代數(shù)運(yùn)算
78.CLR C 11清除進(jìn)位C為0
79.CLR bit 21清除直接地址的某位為0
80.SETB C 11設(shè)定進(jìn)位C為1
81.SETB bit 21設(shè)定直接地址的某位為1
82.CPL C 11將進(jìn)位C的值反相
83.CPL bit 21將直接地址的某位值反相
84.ANL C,bit 22將進(jìn)位C與直接地址的某位做AND的邏輯判斷,結(jié)果存回進(jìn)位C
85.ANL C,/bit 22將進(jìn)位C與直接地址的某位的反相值做AND的邏輯判斷,結(jié)果存回進(jìn)位C
86.ORL C,bit22將進(jìn)位C與直接地址的某位做OR的邏輯判斷,結(jié)果存回進(jìn)位C
87.ORL C,/bit 22將進(jìn)位C與直接地址的某位的反相值做OR的邏輯判斷,結(jié)果存回進(jìn)位C
88.MOV C,bit21將直接地址的某位值存入進(jìn)位C
89.MOV bit,C 22將進(jìn)位C的值存入直接地址的某位
90.JC rel 22若進(jìn)位C=1則跳至rel的相關(guān)地址
91.JNC rel 22若進(jìn)位C=0則跳至rel的相關(guān)地址
92.JB bit,rel32若直接地址的某位為1,則跳至rel的相關(guān)地址
93.JNB bit,rel 32若直接地址的某位為0,則跳至rel的相關(guān)地址
94.JBC bit,rel 32若直接地址的某位為1,則跳至rel的相關(guān)地址,并將該位值清除為0

程序跳躍
95.ACALL addr11 22調(diào)用2K程序存儲(chǔ)器范圍內(nèi)的子程序
96.LCALL addr1632調(diào)用64K程序存儲(chǔ)器范圍內(nèi)的子程序
97.RET 12從子程序返回
98.RETI 12從中斷子程序返回
99.AJMP addr11 22絕對(duì)跳躍(2K內(nèi))
100.LJMP addr1632長(zhǎng)跳躍(64K內(nèi))
101.SJMP rel 22短跳躍(2K內(nèi))-128~+127字節(jié)
102.JMP @A+DPTR 12跳至累加器的內(nèi)容加數(shù)據(jù)指針?biāo)傅南嚓P(guān)地址
103.JZ rel 22累加器的內(nèi)容為0,則跳至rel所指相關(guān)地址
104.JNZ rel22累加器的內(nèi)容不為0,則跳至rel所指相關(guān)地址
105.CJNE A,direct,rel 32將累加器的內(nèi)容與直接地址的內(nèi)容比較,不相等則跳至rel所指的相關(guān)地址
106.CJNE A,#data,rel32將累加器的內(nèi)容與常數(shù)比較,若不相等則跳至rel所指的相關(guān)地址
107.CJNE @Rn,#data,rel32將寄存器的內(nèi)容與常數(shù)比較,若不相等則跳至rel所指的相關(guān)地址
108.CJNE @Ri,#data,rel 32將間接地址的內(nèi)容與常數(shù)比較,若不相等則跳至rel所指的相關(guān)地址
109.DJNZ Rn,rel 22將寄存器的內(nèi)容減1,不等于0則跳至rel所指的相關(guān)地址
110.DJNZ direct,rel 32將直接地址的內(nèi)容減1,不等于0則跳至rel所指的相關(guān)地址
111.NOP 11無(wú)動(dòng)作


掌握常用的匯編語(yǔ)言偽指令及其應(yīng)用
1、匯編起始偽指令ORG
格式 :[標(biāo)號(hào):]ORG 16位地址
例 : ORG 0050H
MAIN: MOV SP,#50H
-----------
2、匯編結(jié)束偽指令END
格式 :[標(biāo)號(hào):]END [表達(dá)式]

3、字節(jié)數(shù)據(jù)定義偽指令DB
格式 :[標(biāo)號(hào):]DB D1,D2,.....
例 : DB "How are you!"
DB -2,-4,-6,8,10,18

4、字定義偽指令DW
格式 :[標(biāo)號(hào):]DW 16位數(shù)據(jù)表
例 : ORG 1000H
WORD: DW 324AH,3CH
匯編后 :(1000H)=32H,(1001H)=4AH
(1002H)=00H,(1003H)=3CH

5、空間定義偽指令DS
ORG 3000H
BUF: DS 50
............
6、賦值偽指令EQU
格式 :符號(hào)名EQU表達(dá)式
COOLER EQU P1.0
HEATER EQU P1.2
VALUE EQU 40H
........
SETB COOLER
CLR HEATER
MOV VALUE,A
7、位地址符號(hào)定義偽指令BIT
QIDONG BIT P1.0
FLAG BIT 20H
格式:字符名稱(chēng)BIT位地址
功能:將位地址賦予所規(guī)定的字符名稱(chēng)


關(guān)鍵詞: 51匯編語(yǔ)言指令

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉