版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第三講:指令系統(tǒng)本講重點:本講重點: 尋址方式;尋址方式; MCS-51MCS-51指令集;指令集; 指令系統(tǒng)分類5151系列單片機指令集含有系列單片機指令集含有111111條指令條指令 每條指令在執(zhí)行時要花去一定的每條指令在執(zhí)行時要花去一定的時間時間,以機器,以機器周期為單位。按指令周期為單位。按指令執(zhí)行時間執(zhí)行時間分類:分類:單周期單周期(64(64條條););雙周期雙周期(45(45條條););4 4周期周期(2(2條條) )按指令的按指令的功能功能分類,可分為分類,可分為5 5大類:大類:數(shù)據(jù)傳送類數(shù)據(jù)傳送類(2929條);條);算術(shù)運算類算術(shù)運算類(2424條)條)邏輯運算及移位類邏
2、輯運算及移位類(2424););控制轉(zhuǎn)移類控制轉(zhuǎn)移類(1717條)條)位操作類位操作類(1717條)條)每條指令在程序存儲器每條指令在程序存儲器ROMROM中占據(jù)一定的中占據(jù)一定的空間空間,以字節(jié)為單位。按指令以字節(jié)為單位。按指令所占字節(jié)數(shù)所占字節(jié)數(shù)分類:分類:單字節(jié)單字節(jié)(49(49條條););雙字節(jié)雙字節(jié)(46(46條條););3 3字節(jié)字節(jié)(16(16條條) )ASM-51指令的格式方括符方括符 表示可選項表示可選項標號標號代表指令所在地址,代表指令所在地址,1-81-8個字母個字母/ /數(shù)字,數(shù)字,“: :”結(jié)尾結(jié)尾操作碼操作碼就是指令功能助記符,指令實體就是指令功能助記符,指令實體目
3、的操作數(shù)目的操作數(shù)源操作數(shù)源操作數(shù)注釋注釋,以,以“; ;”開頭開頭 標號標號: : 操作碼操作碼 目的操作數(shù)目的操作數(shù), ,源操作數(shù)源操作數(shù); ;注釋注釋 51單片機尋址方式七種尋址方式51單片機指令的尋址方式寄存器尋址寄存器尋址直接尋址直接尋址寄存器間接尋址寄存器間接尋址立即尋址立即尋址變址尋址變址尋址( (基址寄存器基址寄存器+ +變址寄存器間接尋址變址寄存器間接尋址) )位尋址位尋址相對尋址相對尋址尋址方式:尋址方式:指令按地址獲得操作數(shù)的方式指令按地址獲得操作數(shù)的方式七種尋址方式七種尋址方式, ,一條指令可能含多種尋址方式一條指令可能含多種尋址方式寄存器尋址寄存器尋址從從寄存器寄存器
4、中讀取操作數(shù)中讀取操作數(shù)或或存放操作數(shù)進存放操作數(shù)進寄存器寄存器例:例:MOV AMOV A,B B ; (A A) (B B) MOV 30HMOV 30H,R0R0 ;(30H30H)(R0R0) MOV AMOV A,R1 R1 ; (A A) (R1R1)直接尋址直接尋址指令中指令中直接直接給出了操作數(shù)所在給出了操作數(shù)所在單元的地址或名稱單元的地址或名稱 例:例:MOV R1MOV R1,1FH1FH ;(R1) (R1) (1FH1FH) MOV 30HMOV 30H,4AH4AH ;(30H)(30H)(4AH4AH)在本單片機中規(guī)定:訪問特殊功能寄存器在本單片機中規(guī)定:訪問特殊功
5、能寄存器SFRSFR只能只能采用直接尋址方式。例如:采用直接尋址方式。例如:MOV A, SP MOV A, SP ; (A) (SP) (A) (SP) MOV A, 81H MOV A, 81H ; (A) (SP)(A) (SP) MOV P1, #5AH MOV P1, #5AH ; (P1)(#5AH) (P1)(#5AH) MOV 90H,#5AH MOV 90H,#5AH ; (P1)(#5AH)(P1)(#5AH) MOV B, 30H MOV B, 30H ; (B) (30H) (B) (30H) SFRSFR的地址見的地址見P49P49表表3-43-4相同相同相同相同在本
6、單片機中訪問特殊功能寄存器在本單片機中訪問特殊功能寄存器SFRSFR只能只能采用直采用直接尋址方式的接尋址方式的原因:原因:SFRSFR分布在分布在80H80H0FFH0FFH范圍內(nèi)范圍內(nèi),而而5252系列系列單片機有單片機有256256字節(jié)的片內(nèi)字節(jié)的片內(nèi)RAM,RAM,其中的其中的80H80H0FFH0FFH的的RAMRAM與與SFRSFR所占所占地址重疊地址重疊。MOV A, 90HMOV A, 90H 等效于等效于 MOV A,MOV A, P1 P1 屬直接尋址屬直接尋址 MOV A, MOV A, R0R0 ; 事先已知事先已知 (R0) = #90H(R0) = #90H 執(zhí)行的
7、操作:執(zhí)行的操作:A (90H)A (90H) 屬寄存器間接尋址屬寄存器間接尋址, , 隨意寫的指令如:隨意寫的指令如:MOV A, 85HMOV A, 85H 則是非法的!則是非法的! 于是規(guī)定:于是規(guī)定: 80H80H0FFH0FFH范圍內(nèi)的范圍內(nèi)的RAMRAM只能用只能用寄存器寄存器間接尋址間接尋址方式,而方式,而SFRSFR只能用只能用直接尋址直接尋址方式。方式。從而從而解決了地址沖突的問題。例如:解決了地址沖突的問題。例如:存儲器配置(片內(nèi)RAM)l89C89C5151片內(nèi)片內(nèi)RAMRAM 128128字節(jié)字節(jié)(00H00H7FH7FH)l89C89C5252片內(nèi)片內(nèi)RAMRAM 2
8、56256字節(jié)字節(jié)(00H00H0FFH0FFH)00H00H20H20H2FH2FH7FH7FH1FH1FH30H30H80H80HFFHFFH52子系列才有子系列才有的的RAM區(qū)區(qū)普通普通RAM區(qū)區(qū)位尋址區(qū)位尋址區(qū)工作寄存器區(qū)工作寄存器區(qū)SFR分布在分布在80H-FFH其中其中92個位個位可位尋址可位尋址80H80HFFHFFH89C51 128128字節(jié)字節(jié)89C52 256256字節(jié)字節(jié)只能直接尋址只能直接尋址只能寄存器間接尋址只能寄存器間接尋址寄存器間接尋址寄存器間接尋址寄存器中的寄存器中的內(nèi)容內(nèi)容是一個是一個地址地址,由該,由該地址地址單元單元尋址到所需的尋址到所需的操作數(shù)操作數(shù)注
9、意注意:1 1)“間接間接”表示某寄存器中的表示某寄存器中的“內(nèi)容內(nèi)容”只是一個只是一個“單元地址單元地址”,這個地址單元中存放的,這個地址單元中存放的數(shù)據(jù)數(shù)據(jù)才才是要找的是要找的“操作數(shù)操作數(shù)”。2 2)符號符號“ ”表示表示“在在”,其,其含義含義與與讀音讀音皆同皆同“atat”。例:例: MOV R1MOV R1,#30H ;(R1) #30H ;(R1) 立即數(shù)立即數(shù)30H30H MOV R1MOV R1,#30H ;(R1) #30H ;(R1) 立即數(shù)立即數(shù)30H30H MOV R1MOV R1,#0FH ;#0FH ;(30H)(30H)立即數(shù)立即數(shù)0FH0FH MOV AMOV
10、 A,R1 ;R1 ;(A)(30H)=#0FH(A)(30H)=#0FH立即尋址立即尋址操作數(shù)直接就出現(xiàn)在指令中操作數(shù)直接就出現(xiàn)在指令中例:例:MOV AMOV A,#64H #64H ;(A) (A) 立即數(shù)立即數(shù) 64H64H ADD AADD A,#05H#05H ;(A)(A)(A)+(A)+立即數(shù)立即數(shù) 05H05H注意:注意:符號符號“# #”表明其后跟的是表明其后跟的是立即數(shù)立即數(shù), , 立即數(shù)立即數(shù)就是數(shù)字量本身。就是數(shù)字量本身。變址尋址變址尋址 也稱為也稱為: : 基址寄存器基址寄存器+ +變址寄存器變址寄存器間接尋址間接尋址以以1616位的位的地址指針寄存器地址指針寄存器
11、DPTRDPTR或或 1616位的位的PCPC寄存器為寄存器為基址寄存器基址寄存器,以,以累加器累加器 A A 為變址寄存器為變址寄存器,兩者中的,兩者中的“內(nèi)容內(nèi)容”形成一個形成一個1616位的位的“地址地址”,該,該“地址地址”所所指的存儲單元中的內(nèi)容才是操作數(shù)。指的存儲單元中的內(nèi)容才是操作數(shù)。例例: : 設:設:A A中已存有中已存有#A4H#A4H,DPTRDPTR中已存有中已存有#1234H#1234H MOVC AMOVC A, A+DPTRA+DPTR;(A A)(A)+(DPTR)(A)+(DPTR)操作:操作:將將A4HA4H+ +1234H1234H= =12D8H12D8
12、H單元中的單元中的數(shù)數(shù)放進累加器放進累加器A A位尋址位尋址指令中直接給出了操作數(shù)所在的指令中直接給出了操作數(shù)所在的位地址位地址。例:例: CLR P1.0CLR P1.0 ;(P1.0) 0(P1.0) 0 SETB ACC.7SETB ACC.7 ;(ACC.7) 1(ACC.7) 1 CPL CCPL C ;( C ) NOT( C )( C ) NOT( C )注意注意: 1 1)位地址里的數(shù)據(jù)只可能是位地址里的數(shù)據(jù)只可能是一個一個 0 0 或或 1 1 2 2)有的位地址十分明確有的位地址十分明確, ,如如 P1.0, ACC.7P1.0, ACC.7等等, , 有的位地址則有的位地
13、址則“不太明確不太明確”,如:,如: MOV AMOV A,17H17H ; (A)(17H),17H ; (A)(17H),17H是是字節(jié)地址字節(jié)地址 MOV ACC.0MOV ACC.0,17H 17H ;(ACC.0)(;(ACC.0)(17H17H),),這里這里ACC.0ACC.0 是是位地址位地址所以該指令中的所以該指令中的17H17H是是2222H H單元的第單元的第7 7位位l片內(nèi)片內(nèi)RAMRAM中有中有128128個位個位可按位尋址的位,可按位尋址的位,位位地址:地址:00H00H7FH7FH分布分布在:在:20H20H2FH2FH單元;單元;l另外,在另外,在SFRSFR中
14、還有中還有9292個位個位可按位尋址可按位尋址00H00H20H20H2FH2FH7FH7FH1FH1FH30H30H80H80HFFHFFH52子系列才有子系列才有的的RAM區(qū)區(qū)普通普通RAM區(qū)區(qū)位尋址區(qū)位尋址區(qū)工作寄存器區(qū)工作寄存器區(qū)27H22H21H20H26H24H25H23H28H07 06 05 04 03 02 01 000F 0E 0D 0C 0B 0A 09 0817 16 15 14 13 12 11 101F 1E 1D 1C 1B 1A 19 1827 26 25 24 23 22 21 202F 2E 2D 2C 2B 2A 29 2837 36 35 34 33 3
15、2 31 303F 3E 3D 3C 3B 3A 39 3847 46 45 44 43 42 41 402FH7F 7E 7D 7C 7B 7A 79 78位地址位地址總共總共128個可個可按位按位尋址尋址的位的位單元地址單元地址17D7 D6 D5 D4 D3 D2 D1 D0相對尋址相對尋址當前當前PCPC值加上指令中規(guī)定的偏移量值加上指令中規(guī)定的偏移量 relrel,構(gòu)成實際,構(gòu)成實際的操作數(shù)地址的操作數(shù)地址例:例: SJMP relSJMP rel 操作:跳轉(zhuǎn)到的操作:跳轉(zhuǎn)到的目的地址目的地址 = = 當前當前1616位位PCPC值值 + + rel rel注意注意:1 1)“當前當
16、前PCPC值值”指程序中指程序中下一條指令所在的首地址下一條指令所在的首地址, 是一個是一個1616位數(shù);位數(shù);2 2)符號符號“relrel”表示表示“偏移量偏移量”, ,是一個帶符號的單是一個帶符號的單字字 節(jié)數(shù)節(jié)數(shù), ,范圍是范圍是: :-128-128+127+127(80H(80H7FH), 7FH), 在實際編程中,在實際編程中,“relrel” 通常用標號代替通常用標號代替MCS-51指令集功能分五類,共111條指令MCS-51MCS-51指令集指令集(五大類功能)(五大類功能)數(shù)據(jù)數(shù)據(jù)傳送傳送類指令:類指令: (2929條條)算術(shù)算術(shù)運算類指令:運算類指令: (2424條條)邏
17、輯邏輯運算及移位類指令:運算及移位類指令: (2424條條)控制控制轉(zhuǎn)移轉(zhuǎn)移類指令:類指令: (1717條條)位位操作(布爾操作)類指令:(操作(布爾操作)類指令:(1717條條)內(nèi)部存儲器間傳送:內(nèi)部存儲器間傳送: (MOVMOV1616條)條)外部數(shù)據(jù)存儲器與累加器間傳送外部數(shù)據(jù)存儲器與累加器間傳送: : (MOVXMOVX4 4條)條)程序存儲器向累加器傳送:程序存儲器向累加器傳送: (MOVCMOVC2 2條)條)數(shù)據(jù)交換:(數(shù)據(jù)交換:(XCHXCH,XCHDXCHD,SWAPSWAP5 5條)條)堆棧操作:堆棧操作: (PUSHPUSH,POPPOP2 2條)條)(一)數(shù)據(jù)傳送類指令
18、(5種/29條)Acc 累加器累加器Direct 直接尋址直接尋址Ri 間接尋址間接尋址Rn 寄存器寄存器#data 立即數(shù)立即數(shù)RnRn: R0R0R7R7RiRi: R0R0,R1R1#data#data:8 8位立即數(shù)位立即數(shù)#data16#data16:1616位立即數(shù)位立即數(shù)directdirect:直接地址直接地址relrel: 8 8位帶符號偏移量位帶符號偏移量(一)數(shù)據(jù)傳送類指令(5種/29條)內(nèi)部存儲器間傳送指令內(nèi)部存儲器間傳送指令 (16(16條條) ): MOV MOV 類指令的類指令的操作方向操作方向總是總是后面后面的的操作數(shù)操作數(shù) 指向指向前面前面的操作數(shù)的操作數(shù)!例
19、例: :MOV AMOV A,30H 30H (A A)(30H30H) 數(shù)據(jù)傳送類指令(續(xù)) 內(nèi)部數(shù)據(jù)存儲器間傳送內(nèi)部數(shù)據(jù)存儲器間傳送 (16(16條條) )(續(xù))(續(xù)): :如如: : MOV AMOV A, #32H #32H (A)=32H(A)=32HMOV 32HMOV 32H,#32H #32H (32H)=32H (32H)=32H MOV DPTR, #2345H MOV DPTR, #2345H (DPTR(DPTR)=2345H)=2345H8 8位立即數(shù)傳送指令(位立即數(shù)傳送指令(4 4條)條)MOV AMOV A, #data #data (A)(A) #data#d
20、ataMOV directMOV direct,#data #data (direct)(direct) #data #data MOV Rn,#data MOV Rn,#data ( (Rn)Rn) #data #data MOV MOV Ri,#data Ri,#data (Ri) (Ri) #data#data1616位立即數(shù)傳送指令位立即數(shù)傳送指令1 1條條 MOV DPTRMOV DPTR,#data16#data16數(shù)據(jù)傳送類指令(續(xù)) 內(nèi)部數(shù)據(jù)存儲器間傳送內(nèi)部數(shù)據(jù)存儲器間傳送 (16(16條條) )(續(xù))(續(xù)): :與與A A 有關(guān)的(有關(guān)的(6 6條)條)MOV AMOV A,
21、 Rn MOV Rn,ARn MOV Rn,AMOV AMOV A, directdirect MOV direct, A MOV direct, A MOV AMOV A, Ri MOV Ri MOV Ri, A Ri, A 內(nèi)部內(nèi)部RAMRAM傳送指令(傳送指令(5 5條)條)MOV direct1MOV direct1,direct2 direct2 MOV directMOV direct,RnRnMOV Rn,directMOV Rn,direct MOV MOV Ri,directRi,directMOV direct,RiMOV direct,Ri數(shù)據(jù)傳送類指令(續(xù)) 外部數(shù)據(jù)存
22、儲器與累加器間傳送外部數(shù)據(jù)存儲器與累加器間傳送 (4(4條條):):MOVXMOVX類指令可在類指令可在累加器累加器與以與以 DPTRDPTR或或 RiRi所代表的所代表的外部外部 RAMRAM 之間進行數(shù)據(jù)傳送。之間進行數(shù)據(jù)傳送。例如例如: : MOVX AMOVX A, DPTR DPTR (A)(A) (DPTR(DPTR)MOVX AMOVX A, Ri Ri (A)(A) (Ri) (Ri) MOVX MOVX DPTR, A DPTR, A (DPTR(DPTR) ) ( (A) A) MOVX MOVX Ri, A Ri, A (Ri) (Ri) ( (A)A)程序存儲器向累加器
23、傳送指令(程序存儲器向累加器傳送指令(2 2條):條): MOVC AMOVC A, A+DPTRA+DPTR MOVC AMOVC A, A+PCA+PC 通常稱為查表指令,尋址方式屬通常稱為查表指令,尋址方式屬: : “基址寄存器基址寄存器 + + 變址寄存器變址寄存器間接尋址間接尋址”數(shù)據(jù)傳送類指令(續(xù)) A+DPTRA+DPTR或或 A+PCA+PC指向指向程序存儲器程序存儲器中的某單元。擬中的某單元。擬傳送給累加器傳送給累加器ACC ACC 的數(shù)據(jù)就是程序中事先寫進去的數(shù)據(jù)就是程序中事先寫進去的的表格數(shù)據(jù)。表格數(shù)據(jù)。這些表格數(shù)據(jù)往往用偽指令這些表格數(shù)據(jù)往往用偽指令 DB,DW DB,
24、DW 等定義在程序中。等定義在程序中。數(shù)據(jù)傳送類指令(續(xù))(續(xù))數(shù)據(jù)交換指令數(shù)據(jù)交換指令(5(5條條):): XCH AXCH A,direct direct ( (字節(jié)互換字節(jié)互換) )XCH AXCH A,Ri Ri ( (字節(jié)互換字節(jié)互換) ) XCH AXCH A,Rn Rn ( (字節(jié)互換字節(jié)互換) )(A A) (directdirect) 或或(Ri)(Ri),或,或(Rn)(Rn)XCHD AXCHD A, RiRi 累加器累加器 AccAcc的的低低4 4位位與與(Ri)(Ri)的的低低4 4位位互換,互換,各自的高各自的高4 4位不變位不變SWAP ASWAP A 累加器累
25、加器 AccAcc的的低低4 4位位與自身的與自身的高高4 4位位互換互換堆棧操作指令堆棧操作指令(2(2條條):):PUSHPUSH壓棧指令壓棧指令POP POP 彈棧指令彈棧指令堆棧區(qū)由特殊功能寄存器堆棧區(qū)由特殊功能寄存器堆棧指針堆棧指針SPSP 管理管理堆棧區(qū)可以安排在堆棧區(qū)可以安排在 RAMRAM區(qū)任意位置,一般不安區(qū)任意位置,一般不安排在排在工作寄存器區(qū)工作寄存器區(qū)和和可按位尋址的可按位尋址的RAMRAM區(qū)區(qū), ,而是放而是放在在RAMRAM區(qū)的區(qū)的靠后靠后的位置的位置堆??偸侵赶蚨褩?偸侵赶驐m敆m斖ǔMǔUSHPUSH與與POPPOP兩條指令兩條指令成對使用且成對使用且直接尋址
26、直接尋址數(shù)據(jù)傳送類指令(續(xù))(續(xù))例如:設例如:設(A)=7BH(A)=7BH; ; (35H)=11H(35H)=11H 并且知道(并且知道(SPSP)60H60H PUSH ACC ;(61H) PUSH ACC ;(61H) #7BH#7BH PUSH 35H ;(62H) PUSH 35H ;(62H) (35H) (35H) 即:即:(62H) (62H) #11H#11H POP ACC POP ACC ;(A) ;(A) (62H) (62H) 即:即:(A)(A) #11H#11H POP 5AH POP 5AH ;(5AH) ;(5AH) (61H) (61H) 即:即:(5
27、AH) (5AH) #7BH#7BH(二)算術(shù)運算類指令(6種/24條) 加法運算:加法運算: ( (ADDADD4 4條條) )帶進位加法運算帶進位加法運算: : ( (ADDCADDC4 4條條) )帶借位減法運算帶借位減法運算: : ( (SUBBSUBB4 4條條) )加加1/1/減減1 1操作:操作: ( (INCINC,DECDEC9 9條條) )單字節(jié)乘單字節(jié)乘/ /除法運算除法運算: (: (MULMUL,DIVDIV2 2條條) )十進制調(diào)整:十進制調(diào)整: ( (DA ADA A1 1條條) )(二)算術(shù)運算類指令(續(xù)) 加法運算:加法運算: (ADDADD4 4條)條)帶進
28、位加法運算帶進位加法運算: : (ADDCADDC4 4條)條)帶借位減法運算:帶借位減法運算: (SUBBSUBB4 4條)條)所有的加法所有的加法( (ADDADD) )、帶進位加法、帶進位加法( (ADDCADDC) )、帶借位減、帶借位減法法( (SUBBSUBB) )運算都是以運算都是以 A A為一個加數(shù)或被減數(shù)為一個加數(shù)或被減數(shù), ,最終最終結(jié)果也存進結(jié)果也存進 A A 。加法加法( (ADDADD) )、帶進位加法、帶進位加法( (ADDCADDC) ) 以及帶借位減法以及帶借位減法( (SUBBSUBB) )運算中運算中, ,如果產(chǎn)生了進位或借位如果產(chǎn)生了進位或借位, ,將自動
29、對將自動對PSWPSW中的中的CyCy標志位標志位置置“1 1” 。帶進位加法帶進位加法( (ADDCADDC):(A):(A)(A)+(A)+(Cy)(Cy)+(+(第二操作數(shù)第二操作數(shù)) )帶借位減法帶借位減法( (SUBBSUBB):(A):(A)(A)-(A)-(Cy)(Cy)-(-(第二操作數(shù)第二操作數(shù)) )(二)算術(shù)運算類指令(續(xù)) 加加1/1/減減1 1操作:操作: (INCINC,DECDEC9 9條)條)INC, DECINC, DEC與與用加用加/ /減法指令做減法指令做加加1/1/減減1 1 操作不同之操作不同之處在于處在于INCINC、DECDEC不影響標志位不影響標志
30、位. .單字節(jié)乘單字節(jié)乘/ /除運算除運算: (: (MULMUL,DIVDIV2 2條條) )兩個單字節(jié)數(shù)的乘兩個單字節(jié)數(shù)的乘/ /除法運算只在除法運算只在A A與與B B之間進行。之間進行。MUL ABMUL AB: (: (A A) )與與( (B B) )相乘相乘, , 積為積為1616位位數(shù)數(shù), , ( (A A) )積的積的低低8 8位位; (; (B B) )積的積的高高8 8位位DIV ABDIV AB: (: (A A) )除以除以( (B B),),結(jié)果用結(jié)果用2 2字節(jié)表示字節(jié)表示, , ( (A A) )商的商的整數(shù)整數(shù)部分部分;(;(B B) )余數(shù)余數(shù)(二)算術(shù)運算
31、類指令(續(xù)) BCDBCD碼碼是指是指“用二進制表達的十進制數(shù)用二進制表達的十進制數(shù)”。如:。如: 十進制數(shù)十進制數(shù)2020可以可以用二進制數(shù)用二進制數(shù)00010100B00010100B表示表示; ; 也可以也可以用十六進制數(shù)用十六進制數(shù)14H14H表示;表示; 還可以還可以用用BCDBCD碼碼 00100000B 00100000B 或或 20H 20H 表示。表示。4 4個二進制位就可以表示個二進制位就可以表示一位一位BCDBCD碼:碼: 000000001001 1001 可表示十進制數(shù)可表示十進制數(shù)(BCD(BCD數(shù)數(shù)) 0) 09;9; 8 8個二進制位就可以表示個二進制位就可以表
32、示兩位壓縮的兩位壓縮的BCDBCD碼:碼:000000000000000010011001 10011001 表示表示 00009999。十進制調(diào)整:十進制調(diào)整: (DA ADA A1 1條)條)用于兩個用于兩個BCDBCD碼碼之間的相加,這條指令之間的相加,這條指令只能跟在只能跟在 ADD ADD 或或 ADDC ADDC 之后之后若若(A)(A)3 30 0 9 9或或(AC)=1(AC)=1則則(A)(A)3 30 0(A)(A)3 30 06 6; 若若(A)(A)7 74 4 9 9或或(CY)=1(CY)=1則則(A)(A)7 74 4(A)(A)7 74 46 6;P.60P.6
33、0例例5 5:兩個十進制數(shù):兩個十進制數(shù)“6565”與與“5858”相加,根相加,根據(jù)常識,顯然其和應當為據(jù)常識,顯然其和應當為“123123”。MOV A,#65H MOV A,#65H ADD A,#58HADD A,#58H DA ADA A結(jié)果結(jié)果:(A)= :(A)= 23H23H (CY)= (CY)= 1 1指令指令 “DA ADA A” 完成的操作完成的操作: 6 5 0110 0101 6 5 0110 0101 5 8 0101 1000 5 8 0101 1000 +13 31818 19192 26 6 0110 01106 6 0110 0110若若(A)(A)3 3
34、0 0 9 9或或(AC)=1(AC)=1則則(A)(A)3 30 0(A)(A)3 30 06 6; 若若(A)(A)7 74 4 9 9或或(CY)=1(CY)=1則則(A)(A)7 74 4(A)(A)7 74 46 6;又如:兩個十進制數(shù)又如:兩個十進制數(shù)“3939”與與“5858”相加,根據(jù)常相加,根據(jù)常識,顯然其和應當為識,顯然其和應當為“9797”。MOV A,#39H MOV A,#39H ADD A,#58HADD A,#58H DA ADA A結(jié)果結(jié)果:(A)= :(A)= 97H97H (CY)= (CY)= 0 0 3 9 0011 1001 3 9 0011 1001
35、 5 8 0101 1000 5 8 0101 1000 +07 723239 9 6 0110 6 0110指令指令 “DA ADA A” 完成的操作完成的操作:( (三三) )邏輯運算及移位類指令邏輯運算及移位類指令(5 5種種/24/24條)條)邏輯與運算:邏輯與運算: (ANLANL6 6條)條)邏輯或運算:邏輯或運算: (ORLORL6 6條)條)邏輯異或運算:邏輯異或運算: (XRLXRL6 6條)條)累加器清零累加器清零/ /取反:取反: (CLRCLR,CPLCPL2 2條)條)累加器移位操作累加器移位操作: : (RL,RLC,RR,RRCRL,RLC,RR,RRC4 4條)
36、條)邏輯運算及移位類指令邏輯運算及移位類指令(續(xù))(續(xù)) 邏輯與邏輯與( (ANLANL),),邏輯或邏輯或( (ORLORL),),邏輯異或邏輯異或( (XRLXRL):):累加器清零累加器清零/ /取反操作取反操作 (CLR,CPLCLR,CPL2 2條)條)CLR A CLR A 對累加器清零對累加器清零 1 1 Byte Byte 1 1 個個Tm Tm CPL A CPL A 對累加器按位取非對累加器按位取非 1 1 Byte Byte 1 1 個個TmTm指指 令令 形形 式式ByteByteTmTmANLANL(ORL(ORL,XRL)XRL) direct direct, A
37、A2 21 1ANLANL(ORL(ORL,XRL)XRL) direct direct,#data#data3 32 2ANLANL(ORL(ORL,XRL)XRL) A A, #data#data2 21 1ANLANL(ORL(ORL,XRL)XRL) A A, directdirect2 21 1ANLANL(ORL(ORL,XRL)XRL) A A, RiRi1 11 1ANLANL(ORL(ORL,XRL)XRL) A A, RnRn1 11 1邏輯運算指令邏輯運算指令的常見用法的常見用法邏輯與邏輯與ANLANL用于用于清清0 0或者或者保留保留某些位:某些位:例例: : ANL
38、A, #0FHANL A, #0FH; ; 則則(A) = (A) = 0A0AH H( ( 已知累加器已知累加器A A中已存有數(shù):中已存有數(shù):9A9AH )H )邏輯或邏輯或ORLORL用于用于置置1 1或者或者保留保留某些位:某些位:例例: : ORL A, #0FHORL A, #0FH; ; 則則(A) = (A) = 9F9FH H邏輯異或邏輯異或XRLXRL用于用于取反取反或者或者保留保留某些位:某些位:例例: : XRL A, #0FHXRL A, #0FH; ; 則則(A) = (A) = 9595H H (A) (A) 1001 1010 1001 1010 #0FH #0F
39、H 0000 1111 0000 1111 9595H H 1001 0101 1001 0101邏輯運算及移位類指令邏輯運算及移位類指令累加器移位操作累加器移位操作: :(RL,RLC,RR,RRCRL,RLC,RR,RRC4 4條)條)RL A RL A 左環(huán)移左環(huán)移累加器累加器 A A累加器累加器 A ACyCy累加器累加器 A ACyCy累加器累加器 A ARRC A RRC A 帶進位位帶進位位右環(huán)移右環(huán)移RR A RR A 右右環(huán)移環(huán)移RLC A RLC A 帶進位位帶進位位左環(huán)移左環(huán)移( (四四) )控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令(4 4種種/17/17條)條) 此類指令此類指令改
40、變程序的執(zhí)行順序改變程序的執(zhí)行順序改變當前改變當前PCPC值值無條件轉(zhuǎn)移:無條件轉(zhuǎn)移: (LJMP,AJMP,SJMP,LJMP,AJMP,SJMP,JMPJMP4 4條)條)條件轉(zhuǎn)移(判斷跳轉(zhuǎn)):條件轉(zhuǎn)移(判斷跳轉(zhuǎn)): (JZ,JNZ,CJNE,DJNZJZ,JNZ,CJNE,DJNZ8 8條)條)子程序調(diào)用及返回:子程序調(diào)用及返回: (ACALL,LCALL,RET,RETIACALL,LCALL,RET,RETI4 4條)條)空操作空操作: : (NOPNOP1 1條)條) “耗時耗時”一個機器周期。一個機器周期。 do nothing!do nothing!控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令
41、(續(xù))(續(xù)) 無條件轉(zhuǎn)移:無條件轉(zhuǎn)移: LJMP,AJMP,SJMP,JMPLJMP,AJMP,SJMP,JMP4 4條條LJMP addr16 LJMP addr16 長跳轉(zhuǎn)指令長跳轉(zhuǎn)指令 可在可在64K64K范圍內(nèi)跳轉(zhuǎn)范圍內(nèi)跳轉(zhuǎn)AJMP addr11 AJMP addr11 絕對跳轉(zhuǎn)指令絕對跳轉(zhuǎn)指令 可在可在指令所在的指令所在的2K2K范圍內(nèi)跳轉(zhuǎn)范圍內(nèi)跳轉(zhuǎn)SJMP rel SJMP rel 相對跳轉(zhuǎn)指令相對跳轉(zhuǎn)指令 可在當前可在當前PCPC-128-128與與+127+127范圍內(nèi)跳轉(zhuǎn)范圍內(nèi)跳轉(zhuǎn)JMP JMP A+DPTR A+DPTR 間接長跳轉(zhuǎn)指令間接長跳轉(zhuǎn)指令 可在以可在以DPTRD
42、PTR為基址為基址 + + A A為偏移量為偏移量 之和所指向的之和所指向的64K64K程序范圍內(nèi)跳轉(zhuǎn)程序范圍內(nèi)跳轉(zhuǎn)控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令(續(xù))(續(xù)) 條件轉(zhuǎn)移條件轉(zhuǎn)移: JZ,JNZ,CJNE,DJNZJZ,JNZ,CJNE,DJNZ8 8條條JZ relJZ relJNZ relJNZ rel根據(jù)根據(jù)AccAcc的內(nèi)容的內(nèi)容是否為是否為0 0決定是否跳轉(zhuǎn)決定是否跳轉(zhuǎn)DJNZ DJNZ directdirect,relrelDJNZ DJNZ RnRn, relrel將將directdirect( (或或Rn)Rn)里的內(nèi)容減里的內(nèi)容減 1 1,結(jié)果不等結(jié)果不等于于0 0就跳轉(zhuǎn);等于就
43、跳轉(zhuǎn);等于0 0則不跳轉(zhuǎn)則不跳轉(zhuǎn)繼續(xù)往下走。繼續(xù)往下走。條件轉(zhuǎn)移條件轉(zhuǎn)移(續(xù))(續(xù))CJNE CJNE A,A, #data, #data, relrelCJNE CJNE A,A, direct,direct,rel rel CJNE CJNE Ri,Ri,#data, #data, relrelCJNE CJNE Rn,Rn, #data, #data, relrel 將將A A( (或或 Ri,Ri,或或Rn)Rn)與與#data#data( (或或direct)direct)相比較,相比較,其值其值不相等就跳轉(zhuǎn);相等則不跳轉(zhuǎn)不相等就跳轉(zhuǎn);相等則不跳轉(zhuǎn), ,繼續(xù)往下走。繼續(xù)往下走??刂妻D(zhuǎn)
44、移類指令控制轉(zhuǎn)移類指令(續(xù))(續(xù)) LCALL addr16 LCALL addr16 子程序長調(diào)用指令子程序長調(diào)用指令可在可在64K64K范圍內(nèi)調(diào)用子程序范圍內(nèi)調(diào)用子程序子程序調(diào)用及返回:子程序調(diào)用及返回: (LCALLLCALL, ,ACALLACALL, ,RETRET, ,RETIRETI4 4條)條) ACALL addr11 ACALL addr11 子程序絕對調(diào)用指令子程序絕對調(diào)用指令可在指令所在的可在指令所在的2K2K范圍內(nèi)調(diào)用子程序范圍內(nèi)調(diào)用子程序RET RET 子程序返回指令子程序返回指令子程序結(jié)束并返回調(diào)用的子程序結(jié)束并返回調(diào)用的下一條下一條指令指令RETI RETI 中
45、斷服務子程序返回指令中斷服務子程序返回指令中斷結(jié)束中斷結(jié)束/ /返回被打斷處的下一條指令返回被打斷處的下一條指令( (五五) )位操作類指令位操作類指令(1717條)條)位操作類指令位操作類指令 以位為單位進行邏輯運算及操作以位為單位進行邏輯運算及操作, ,可分為可分為4 4種:種: 位傳送:位傳送: (MOVMOV2 2條)條)位清零位清零/ /置位:置位: (CLR,SETBCLR,SETB4 4條)條)位邏輯與位邏輯與/ /或或/ /非運算:(非運算:(ANL,ORL,CPLANL,ORL,CPL6 6條)條)位條件轉(zhuǎn)移位條件轉(zhuǎn)移: : (JC,JNC,JB,JNB,JBCJC,JNC,
46、JB,JNB,JBC5 5條)條)位操作類指令位操作類指令(續(xù))(續(xù)) 位傳送指令(位傳送指令(2 2條):條): MOV CMOV C, bit bit (C C)(bitbit) MOV bitMOV bit, C C (bitbit)(C C) 注:注: bitbit表示位地址表示位地址位清零位清零/ /置位指令(置位指令(4 4條):條): CLR bitCLR bit(或(或C C) (bitbit或或 C C)“0”0” SETB bit SETB bit(或(或C C) (bitbit或或 C C)“1”1” 位邏輯與位邏輯與/ /或或/ /非指令(非指令(6 6條):條): A
47、NL CANL C,bitbit(或(或/bit/bit) ORL CORL C,bitbit(或(或/bit/bit) CPL bit CPL bit (或(或 C C) 注注:“/bit”:“/bit”表示對表示對bitbit位先取反然后再參加運算位先取反然后再參加運算位操作類指令位操作類指令(續(xù))(續(xù)) 判位判位條件轉(zhuǎn)移條件轉(zhuǎn)移指令指令(5 5條):條): JC rel JC rel(CyCy)=“1”=“1”就跳轉(zhuǎn);否則不跳轉(zhuǎn)就跳轉(zhuǎn);否則不跳轉(zhuǎn) JNC rel JNC rel(CyCy) “1”1”就跳轉(zhuǎn);否則不跳轉(zhuǎn)就跳轉(zhuǎn);否則不跳轉(zhuǎn) JB bit JB bit,relrel (bit
48、bit)=“1”=“1”就跳轉(zhuǎn);否則不跳轉(zhuǎn)就跳轉(zhuǎn);否則不跳轉(zhuǎn)JNB bitJNB bit,relrel (bitbit) “1”1”就跳轉(zhuǎn);否則不跳轉(zhuǎn)就跳轉(zhuǎn);否則不跳轉(zhuǎn)JBJBC C bit bit,relrel (bitbit)=“1”=“1”就就先將其清零先將其清零 再跳轉(zhuǎn);再跳轉(zhuǎn); 否則,不動此位也不跳轉(zhuǎn)。否則,不動此位也不跳轉(zhuǎn)。簡單測控實例原理圖任務一:控制一盞燈點亮任務一:控制一盞燈點亮任務二:紅燈周期性地亮任務二:紅燈周期性地亮/ /滅滅JOB3: JOB3: CLR P1.1CLR P1.1 ; ; P1.1 P1.1清清“0 0” ,亮綠燈亮綠燈REDO: REDO: SETB
49、 P1.3SETB P1.3 ; ;將將P1.3P1.3置置“1 1”CHECK:CHECK:JNB P1.3,CHECKJNB P1.3,CHECK ; ;檢測檢測傳感器是否被阻斷傳感器是否被阻斷LOOP: LOOP: ; ;有入侵者,有入侵者,報警!報警! AJMP REDO AJMP REDO ; ;再跳回去檢測再跳回去檢測JOB1:JOB1: CLR P1.0CLR P1.0 ; ;P1.0P1.0清清“0 0”,亮紅燈亮紅燈HERE: AJMP HEREHERE: AJMP HERE ; ;原地等待,不做別的事原地等待,不做別的事JOB2: JOB2: CPL P1.0CPL P1.0 ; ;對對P1.0P1.0取反取反:紅燈亮:紅燈亮/ /滅滅 ACALL DELAY ;ACALL DELAY ;延時延時1 1秒秒 AJMP JOB2 ;AJMP JOB2 ;重復重復任務三:紅外防盜報警任務三:紅外防盜報警位操作指令位操作指令任務一:控制一盞燈點亮任務一:控制一盞燈點亮任務二:紅燈周期性地亮任務二:紅燈周期性地亮/ /滅滅JOB3: CLR P1.1 ; P1.1JOB3: CLR P1.1 ; P1.1清清“0 0” ,亮綠燈,亮綠燈REDO:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年物聯(lián)網(wǎng)項目開發(fā)與合作合同
- 2025年度智能停車設施安裝合同3篇
- 鐵路電務知識培訓課件
- 2025年度大棚蔬菜種植與農(nóng)業(yè)觀光旅游融合發(fā)展承包合同3篇
- 吉林省長春市九臺區(qū)2024-2025學年七年級(上)期末語文試卷(含解析)
- 2024年電子商務平臺運營服務合同具體條款
- 2025離婚財產(chǎn)分割協(xié)議書范本撰寫與審查指南3篇
- 浙江師范大學《設備狀態(tài)監(jiān)測與故障診斷》2023-2024學年第一學期期末試卷
- 長春師范大學《書法蒙刻》2023-2024學年第一學期期末試卷
- 2025年度酒店餐飲管理咨詢合作協(xié)議3篇
- 安徽省合肥市包河區(qū)2023-2024學年九年級上學期期末化學試題
- 售樓部保安管理培訓
- 2024年高壓電工證理論考試題庫(含答案)
- 倉儲培訓課件模板
- 2023-2024學年仁愛版七上期末考試英語(試題)
- 2024年醫(yī)院培訓計劃
- GB/T 44914-2024和田玉分級
- 2023年湖南出版中南傳媒招聘筆試真題
- 2024年度企業(yè)入駐跨境電商孵化基地合作協(xié)議3篇
- 呼吸內(nèi)科臨床診療指南及操作規(guī)范
- 學生管理教育課件
評論
0/150
提交評論