02 指令和編程ppt課件_第1頁(yè)
02 指令和編程ppt課件_第2頁(yè)
02 指令和編程ppt課件_第3頁(yè)
02 指令和編程ppt課件_第4頁(yè)
02 指令和編程ppt課件_第5頁(yè)
已閱讀5頁(yè),還剩62頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第二講:指令與編程本講重點(diǎn):本講重點(diǎn): 尋址方式;尋址方式; MCS-51MCS-51指令集;指令集; 偽指令;偽指令; 匯編語(yǔ)言與簡(jiǎn)單程序設(shè)計(jì)匯編語(yǔ)言與簡(jiǎn)單程序設(shè)計(jì). .第三章 指令系統(tǒng)及程序設(shè)計(jì)P.43)每條指令在執(zhí)行時(shí)要花去一定的時(shí)間,以機(jī)器每條指令在執(zhí)行時(shí)要花去一定的時(shí)間,以機(jī)器周期為單位。按指令執(zhí)行時(shí)間分類:周期為單位。按指令執(zhí)行時(shí)間分類:?jiǎn)沃芷趩沃芷?64(64條條););雙周期雙周期(45(45條條);4);4周期周期(2(2條條) )按指令的功能分類,可分為按指令的功能分類,可分為5 5大類:大類:數(shù)據(jù)傳送類數(shù)據(jù)傳送類2929條);算術(shù)運(yùn)算類條);算術(shù)運(yùn)算類2424條)條)邏輯

2、運(yùn)算及移位類邏輯運(yùn)算及移位類2424);控制轉(zhuǎn)移類);控制轉(zhuǎn)移類1717條)條)位操作類位操作類1717條)條)每條指令在程序存儲(chǔ)器每條指令在程序存儲(chǔ)器ROMROM中占據(jù)一定的空間,中占據(jù)一定的空間,以字節(jié)為單位。按指令所占字節(jié)數(shù)分類:以字節(jié)為單位。按指令所占字節(jié)數(shù)分類:?jiǎn)巫止?jié)單字節(jié)(49(49條條););雙字節(jié)雙字節(jié)(46(46條條);3);3字節(jié)字節(jié)(16(16條條) )ASM-51指令的格式(P.44)方括符方括符 表示可選項(xiàng)表示可選項(xiàng)標(biāo)號(hào)代表指令所在地址,標(biāo)號(hào)代表指令所在地址,1-81-8個(gè)字母?jìng)€(gè)字母/ /數(shù)字,數(shù)字,“: :”結(jié)尾結(jié)尾操作碼就是指令功能助記符,指令實(shí)體操作碼就是指令功

3、能助記符,指令實(shí)體目的操作數(shù)目的操作數(shù)源操作數(shù)源操作數(shù)注釋,以注釋,以“; ;”開(kāi)頭開(kāi)頭 標(biāo)號(hào)標(biāo)號(hào):操作碼操作碼 目的操作數(shù)目的操作數(shù),源操作數(shù)源操作數(shù);注釋注釋 51單片機(jī)指令的尋址方式(P.45)寄存器尋址寄存器尋址立即尋址立即尋址寄存器間接尋址寄存器間接尋址直接尋址直接尋址變址尋址變址尋址( (基址寄存器基址寄存器+ +變址寄存器間接尋址變址寄存器間接尋址) )相對(duì)尋址相對(duì)尋址位尋址位尋址尋址方式:指令按地址獲得操作數(shù)的方式尋址方式:指令按地址獲得操作數(shù)的方式七種尋址方式七種尋址方式, ,一條指令可能含多種尋址方式一條指令可能含多種尋址方式寄存器尋址寄存器尋址(P.45)(P.45)從寄

4、存器中讀取操作數(shù)或存放操作數(shù)進(jìn)寄存器從寄存器中讀取操作數(shù)或存放操作數(shù)進(jìn)寄存器例:例:MOV AMOV A,B B ; (A A) (B B) MOV 30H MOV 30H,R0 R0 ;(;(30H30H)(R0R0) MOV A MOV A,R1 R1 ; (A A) (R1R1)立即尋址立即尋址(P.45)(P.45)操作數(shù)直接就出現(xiàn)在指令中操作數(shù)直接就出現(xiàn)在指令中例:例:MOV AMOV A,#64H #64H ;(A) (A) 立即數(shù)立即數(shù) 64H 64H ADD A ADD A,#05H #05H ;(A)(A)+(A)(A)+立即數(shù)立即數(shù) 05H 05H留意:符號(hào)留意:符號(hào)“#

5、#”表明其后跟的是立即數(shù)表明其后跟的是立即數(shù), , 立即數(shù)立即數(shù)就是數(shù)字量本身。就是數(shù)字量本身。寄存器間接尋址寄存器間接尋址(P.46)(P.46)寄存器中的內(nèi)容是一個(gè)地址,由該地址單元寄存器中的內(nèi)容是一個(gè)地址,由該地址單元尋址到所需的操作數(shù)尋址到所需的操作數(shù)留意:留意:1 1)“間接表示某寄存器中的間接表示某寄存器中的“內(nèi)容只是一個(gè)內(nèi)容只是一個(gè)“單元地址單元地址”,這個(gè)地址單元中存放的數(shù)據(jù)才是,這個(gè)地址單元中存放的數(shù)據(jù)才是要找的要找的“操作數(shù)操作數(shù)”。2 2符號(hào)符號(hào)“”表示表示“在在”,其含義與讀音皆同,其含義與讀音皆同“atat”。例:例: MOV R1 MOV R1,#30H ;(R1)

6、 #30H ;(R1) 立即數(shù)立即數(shù)30H 30H MOV R1 MOV R1,#30H ;(R1) #30H ;(R1) 立即數(shù)立即數(shù)30H 30H MOV R1 MOV R1,#0FH ;(30H)#0FH ;(30H)立即數(shù)立即數(shù)0FH0FH MOV A MOV A,R1 ;(A)(30H)=#0FHR1 ;(A)(30H)=#0FH直接尋址直接尋址(P.46)(P.46)指令中直接給出了操作數(shù)所在單元的地址或名稱指令中直接給出了操作數(shù)所在單元的地址或名稱 例:例:MOV R1MOV R1,1FH 1FH ;(R1) (R1) (1FH1FH) MOV 30H MOV 30H,4AH 4

7、AH ;(30H)(30H)(4AH4AH)在本單片機(jī)中規(guī)定:訪問(wèn)特殊功能寄存器在本單片機(jī)中規(guī)定:訪問(wèn)特殊功能寄存器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

8、) (30H) (B) (30H) SFRSFR的地址見(jiàn)的地址見(jiàn) P.33 P.33表表一樣一樣一樣一樣在本單片機(jī)中訪問(wèn)特殊功能寄存器在本單片機(jī)中訪問(wèn)特殊功能寄存器SFRSFR只能采用直只能采用直接尋址方式的原因:接尋址方式的原因:SFRSFR分布在分布在80H80H0FFH0FFH范圍內(nèi),范圍內(nèi),而而5252系列單片機(jī)有系列單片機(jī)有256256字節(jié)的片內(nèi)字節(jié)的片內(nèi)RAM,RAM,其中的其中的80H80H0FFH0FFH的的RAMRAM與與SFRSFR所占地址重疊。所占地址重疊。MOV A, 90H MOV A, 90H 等效于等效于 MOV A, P1 MOV A, P1 屬直接尋址屬直接尋

9、址 MOV A, R0 MOV A, R0 ; 事先已知事先已知 (R0) = #90H (R0) = #90H 執(zhí)行的操作:執(zhí)行的操作:A (90H) A (90H) 屬寄存器間接尋址屬寄存器間接尋址, , 隨意寫(xiě)的指令如:隨意寫(xiě)的指令如:MOV A, 85H MOV A, 85H 則是非法的!則是非法的! 于是規(guī)定:于是規(guī)定: 80H 80H0FFH0FFH范圍內(nèi)的范圍內(nèi)的RAMRAM只能用寄存器只能用寄存器間接尋址方式,而間接尋址方式,而SFRSFR只能用直接尋址方式。從而只能用直接尋址方式。從而解決了地址沖突的問(wèn)題。例如:解決了地址沖突的問(wèn)題。例如:存儲(chǔ)器配置片內(nèi)RAM)89C5189

10、C51片內(nèi)片內(nèi)RAM 128RAM 128字節(jié)字節(jié)00H7FH00H7FH)89C5289C52片內(nèi)片內(nèi)RAM 256RAM 256字節(jié)字節(jié)00H0FFH00H0FFH)00H00H20H20H2FH2FH7FH7FH1FH1FH30H30H80H80HFFHFFH52子系列才有子系列才有的的RAM區(qū)區(qū)普通普通RAM區(qū)區(qū)位尋址區(qū)位尋址區(qū)工作寄存器區(qū)工作寄存器區(qū)SFR分布在分布在80H-FFH其中其中92個(gè)位個(gè)位可位尋址可位尋址80H80HFFHFFH89C51 128字節(jié)字節(jié)89C52 256字節(jié)字節(jié)只能直接尋址只能直接尋址只能寄存器間接尋址只能寄存器間接尋址變址尋址變址尋址(P.47P.47

11、) 也稱為也稱為: : 基址寄存器基址寄存器+ +變址寄存器間接尋址變址寄存器間接尋址以以1616位的地址指針寄存器位的地址指針寄存器DPTRDPTR或或 16 16位的位的PCPC寄存器為寄存器為基址寄存器,以累加器基址寄存器,以累加器 A A 為變址寄存器,兩者中的為變址寄存器,兩者中的“內(nèi)容形成一個(gè)內(nèi)容形成一個(gè)1616位的位的“地址地址”,該,該“地址所指的地址所指的存儲(chǔ)單元中的內(nèi)容才是操作數(shù)。存儲(chǔ)單元中的內(nèi)容才是操作數(shù)。P47P47例例:設(shè):設(shè):A A中已存有中已存有#A4H#A4H,DPTRDPTR中已存有中已存有#1234H#1234H MOVC A MOVC A,A+DPTRA+

12、DPTR;(;(A A)(A)+(DPTR)(A)+(DPTR)操作:將操作:將A4H+1234H=12D8HA4H+1234H=12D8H單元中的數(shù)放進(jìn)累加器單元中的數(shù)放進(jìn)累加器A A相對(duì)尋址相對(duì)尋址(P.47)(P.47)當(dāng)前當(dāng)前PCPC值加上指令中規(guī)定的偏移量值加上指令中規(guī)定的偏移量 rel rel,構(gòu)成實(shí)際,構(gòu)成實(shí)際的操作數(shù)地址的操作數(shù)地址例:例: SJMP rel SJMP rel 操作:跳轉(zhuǎn)到的目的地址操作:跳轉(zhuǎn)到的目的地址 = = 當(dāng)前當(dāng)前1616位位PCPC值值 + rel + rel留意:留意:1 1)“當(dāng)前當(dāng)前PCPC值指程序中下一條指令所在的首地址,值指程序中下一條指令所

13、在的首地址, 是一個(gè)是一個(gè)1616位數(shù);位數(shù);2 2符號(hào)符號(hào)“relrel表示表示“偏移量偏移量”, ,是一個(gè)帶符號(hào)的單字是一個(gè)帶符號(hào)的單字 節(jié)數(shù)節(jié)數(shù), ,范圍是范圍是:-128+127(80H7FH), :-128+127(80H7FH), 在實(shí)際編程中,在實(shí)際編程中,“relrel” 通常用標(biāo)號(hào)代替通常用標(biāo)號(hào)代替位尋址位尋址(P.48)(P.48)指令中直接給出了操作數(shù)所在的位地址。指令中直接給出了操作數(shù)所在的位地址。例:例: CLR P1.0 CLR P1.0 ;(P1.0) 0(P1.0) 0 SETB ACC.7 SETB ACC.7 ;(ACC.7) 1(ACC.7) 1 CPL

14、C CPL C ;( C ) NOT( C )( C ) NOT( C )留意:留意: 1 1位地址里的數(shù)據(jù)只可能是一個(gè)位地址里的數(shù)據(jù)只可能是一個(gè) 0 0 或或 1 1 2 2有的位地址十分明確有的位地址十分明確, ,如如 P1.0, ACC.7 P1.0, ACC.7等等, , 有的位地址則有的位地址則“不太明確不太明確”,如:,如: MOV A MOV A,17H ; (A)(17H),17H17H ; (A)(17H),17H是字節(jié)地址是字節(jié)地址 MOV ACC.0 MOV ACC.0,17H ;(ACC.0)(17H),17H ;(ACC.0)(17H),這里這里ACC.0ACC.0

15、是位地址所以該指令中的是位地址所以該指令中的17H17H是是22H22H單元的第單元的第7 7位位片內(nèi)片內(nèi)RAMRAM中有中有128128個(gè)位可按個(gè)位可按位尋址的位,位地址:位尋址的位,位地址:00H7FH00H7FH分布在:分布在:20H20H2FH2FH單元;單元;另外,在另外,在SFRSFR中還有中還有9292個(gè)個(gè)位可按位尋址位可按位尋址00H00H20H20H2FH2FH7FH7FH1FH1FH30H30H80H80HFFHFFH52子系列才有子系列才有的的RAM區(qū)區(qū)普通普通RAM區(qū)區(qū)位尋址區(qū)位尋址區(qū)工作寄存器區(qū)工作寄存器區(qū)27H22H21H20H26H24H25H23H28H07 0

16、6 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 32 31 303F 3E 3D 3C 3B 3A 39 3847 46 45 44 43 42 41 402FH7F 7E 7D 7C 7B 7A 79 78位地址位地址總共總共128個(gè)可個(gè)可按位按位尋址尋址的位的位單元地址單元地址17D7 D6 D5 D4 D3 D2 D1 D0位尋址位尋址(P.

17、48)(P.48)指令中直接給出了操作數(shù)所在的位地址。指令中直接給出了操作數(shù)所在的位地址。例:例: CLR P1.0 CLR P1.0 ;(P1.0) 0(P1.0) 0 SETB ACC.7 SETB ACC.7 ;(ACC.7) 1(ACC.7) 1 CPL C CPL C ;( C ) NOT( C )( C ) NOT( C )留意:留意: 1 1位地址里的數(shù)據(jù)只可能是一個(gè)位地址里的數(shù)據(jù)只可能是一個(gè) 0 0 或或 1 1 2 2有的位地址十分明確有的位地址十分明確, ,如如 P1.0, ACC.7 P1.0, ACC.7等等, , 有的位地址則有的位地址則“不太明確不太明確”,如:,如

18、: MOV A MOV A,17H ; (A)(17H),17H17H ; (A)(17H),17H是字節(jié)地址是字節(jié)地址 MOV ACC.0 MOV ACC.0,17H ;(ACC.0)(17H),17H ;(ACC.0)(17H),這里這里ACC.0ACC.0 是位地址所以該指令中的是位地址所以該指令中的17H17H是是22H22H單元的第單元的第7 7位位MCS-51指令集功能分五類,共111條指令MCS-51MCS-51指令集五大類功能指令集五大類功能P.49P.49頁(yè)頁(yè)數(shù)據(jù)傳送類指令:數(shù)據(jù)傳送類指令: (2929條)條)算術(shù)運(yùn)算類指令:算術(shù)運(yùn)算類指令: (2424條)條)邏輯運(yùn)算及移位

19、類指令:邏輯運(yùn)算及移位類指令: (2424條)條)控制轉(zhuǎn)移類指令:控制轉(zhuǎn)移類指令: (1717條)條)位操作布爾操作類指令:(位操作布爾操作類指令:(1717條)條)內(nèi)部存儲(chǔ)器間傳送:內(nèi)部存儲(chǔ)器間傳送: (MOV16MOV16條)條)外部數(shù)據(jù)存儲(chǔ)器與累加器間傳送外部數(shù)據(jù)存儲(chǔ)器與累加器間傳送: : (MOVX4MOVX4條)條)程序存儲(chǔ)器向累加器傳送:程序存儲(chǔ)器向累加器傳送: (MOVC2MOVC2條)條)數(shù)據(jù)交換:(數(shù)據(jù)交換:(XCHXCH,XCHDXCHD,SWAP5SWAP5條)條)堆棧操作:堆棧操作: (PUSHPUSH,POP2POP2條)條)(一)數(shù)據(jù)傳送類指令5種/29條) P.4

20、9見(jiàn)見(jiàn)P.49P.49的表的表3 32 2Acc 累加器累加器Direct 直接尋址直接尋址Ri 間接尋址間接尋址Rn 寄存器寄存器#data 立即數(shù)立即數(shù)RnRn: R0R7 R0R7RiRi: R0 R0,R1R1#data#data:8 8位立即數(shù)位立即數(shù)#data16#data16:1616位立即數(shù)位立即數(shù)directdirect:直接地址:直接地址relrel: 8 8位帶符號(hào)偏移量位帶符號(hào)偏移量(一)數(shù)據(jù)傳送類指令5種/29條)內(nèi)部存儲(chǔ)器間傳送指令內(nèi)部存儲(chǔ)器間傳送指令 (16(16條條) ): MOV MOV 類指令的操作方向總是后面的類指令的操作方向總是后面的操作數(shù)操作數(shù) 指向前

21、面的操作數(shù)!指向前面的操作數(shù)!例例:MOV A:MOV A,30H 30H (A A)(30H30H) 數(shù)據(jù)傳送類指令續(xù)) P.52外部數(shù)據(jù)存儲(chǔ)器與累加器間傳送外部數(shù)據(jù)存儲(chǔ)器與累加器間傳送 (4(4條條):):MOVXMOVX類指令可在累加器與以類指令可在累加器與以DPTRDPTR或或RiRi所代表的外所代表的外部部 RAM RAM 之間進(jìn)行數(shù)據(jù)傳送。之間進(jìn)行數(shù)據(jù)傳送。例如例如: : MOVX AMOVX A, DPTR (A) DPTR (A) (DPTR) (DPTR)MOVX AMOVX A, Ri (A) Ri (A) (Ri) (Ri) MOVX DPTR, A (DPTR) MOV

22、X DPTR, A (DPTR) (A) (A) MOVX Ri, A (Ri) MOVX Ri, A (Ri) (A)(A)程序存儲(chǔ)器向累加器傳送指令程序存儲(chǔ)器向累加器傳送指令2 2條):條): MOVC A MOVC A,A+DPTRA+DPTR MOVC A MOVC A,A+PC A+PC 通常稱為查表指令,尋址方式屬通常稱為查表指令,尋址方式屬: : “基址寄存器基址寄存器 + + 變址寄存器間接尋址變址寄存器間接尋址”數(shù)據(jù)傳送類指令續(xù)) P.52A+DPTRA+DPTR或或A+PCA+PC指向程序存儲(chǔ)器中的某單元。擬傳指向程序存儲(chǔ)器中的某單元。擬傳送給累加器送給累加器ACC ACC

23、 的數(shù)據(jù)就是程序中事先寫(xiě)進(jìn)去的的數(shù)據(jù)就是程序中事先寫(xiě)進(jìn)去的表格數(shù)據(jù)。這些表格數(shù)據(jù)往往用偽指令表格數(shù)據(jù)。這些表格數(shù)據(jù)往往用偽指令 DB,DW DB,DW 等定義在程序中。等定義在程序中。數(shù)據(jù)傳送類指令續(xù))數(shù)據(jù)交換指令數(shù)據(jù)交換指令(5(5條條): P.53): P.53XCH 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 累加器累加器

24、Acc Acc的低的低4 4位與位與(Ri)(Ri)的低的低4 4位互換,位互換,各自的高各自的高4 4位不變位不變SWAP ASWAP A 累加器累加器 Acc Acc的低的低4 4位與自身的高位與自身的高4 4位互換位互換堆棧操作指令堆棧操作指令(2(2條條): P.54): P.54PUSHPUSH壓棧指令壓棧指令POP POP 彈棧指令彈棧指令堆棧區(qū)由特殊功能寄存器堆棧指針堆棧區(qū)由特殊功能寄存器堆棧指針SP SP 管理管理堆棧區(qū)可以安排在堆棧區(qū)可以安排在 RAM RAM區(qū)任意位置,一般不安區(qū)任意位置,一般不安排在工作寄存器區(qū)和可按位尋址的排在工作寄存器區(qū)和可按位尋址的RAMRAM區(qū)區(qū),

25、 ,而是放而是放在在RAMRAM區(qū)的靠后的位置區(qū)的靠后的位置堆棧總是指向棧頂堆??偸侵赶驐m斖ǔMǔUSHPUSH與與POPPOP兩條指令成對(duì)使用兩條指令成對(duì)使用數(shù)據(jù)傳送類指令續(xù))例如:設(shè)例如:設(shè)(A)=7BH; (35H)=11H(A)=7BH; (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 ;(A) POP ACC ;(A) (62H)

26、(62H) 即:即:(A)(A) #11H #11H POP 5AH ;(5AH) POP 5AH ;(5AH) (61H) (61H) 即:即:(5AH) (5AH) #7BH #7BH(二)算術(shù)運(yùn)算類指令6種/24條) P.54加法運(yùn)算:加法運(yùn)算: (ADD4 (ADD4條條) )帶進(jìn)位加法運(yùn)算帶進(jìn)位加法運(yùn)算: (ADDC4: (ADDC4條條) )帶借位減法運(yùn)算帶借位減法運(yùn)算: (SUBB4: (SUBB4條條) )加加1/1/減減1 1操作:操作: (INC (INC,DEC9DEC9條條) )單字節(jié)乘單字節(jié)乘/ /除法運(yùn)算除法運(yùn)算: (MUL: (MUL,DIV2DIV2條條) )十

27、進(jìn)制調(diào)整:十進(jìn)制調(diào)整: (DA A1 (DA A1條條) )(二)算術(shù)運(yùn)算類指令續(xù)) P.55加法運(yùn)算:加法運(yùn)算: (ADD4ADD4條)條)帶進(jìn)位加法運(yùn)算帶進(jìn)位加法運(yùn)算: : (ADDC4ADDC4條)條)帶借位減法運(yùn)算:帶借位減法運(yùn)算: (SUBB4SUBB4條)條)所有的加法所有的加法(ADD)(ADD)、帶進(jìn)位加法、帶進(jìn)位加法(ADDC)(ADDC)、帶借位減、帶借位減法法(SUBB)(SUBB)運(yùn)算都是以運(yùn)算都是以 A A為一個(gè)加數(shù)或被減數(shù)為一個(gè)加數(shù)或被減數(shù), ,最終最終結(jié)果也存進(jìn)結(jié)果也存進(jìn) A A 。加法加法(ADD)(ADD)、帶進(jìn)位加法、帶進(jìn)位加法(ADDC) (ADDC) 以

28、及帶借位減法以及帶借位減法(SUBB)(SUBB)運(yùn)算中運(yùn)算中, ,如果產(chǎn)生了進(jìn)位或借位如果產(chǎn)生了進(jìn)位或借位, ,將自動(dòng)對(duì)將自動(dòng)對(duì)PSWPSW中的中的CyCy標(biāo)志位置標(biāo)志位置“1 1” 。帶進(jìn)位加法帶進(jìn)位加法(ADDC):(A)(ADDC):(A)(A)+(Cy)+(A)+(Cy)+(第二操作數(shù)第二操作數(shù)) )帶借位減法帶借位減法(SUBB):(A)(SUBB):(A)(A)-(Cy)-(A)-(Cy)-(第二操作數(shù)第二操作數(shù)) )(二)算術(shù)運(yùn)算類指令續(xù)) P.57加加1/1/減減1 1操作:操作: (INCINC,DEC9DEC9條)條)INC, DECINC, DEC與用加與用加/ /減法

29、指令做加減法指令做加1/1/減減1 1 操作不同之操作不同之處在于處在于INCINC、DECDEC不影響標(biāo)志位不影響標(biāo)志位. .單字節(jié)乘單字節(jié)乘/ /除運(yùn)算除運(yùn)算: (MUL: (MUL,DIV2DIV2條條) )兩個(gè)單字節(jié)數(shù)的乘兩個(gè)單字節(jié)數(shù)的乘/ /除法運(yùn)算只在除法運(yùn)算只在A A與與B B之間進(jìn)行。之間進(jìn)行。MUL AB: (A)MUL AB: (A)與與(B)(B)相乘相乘, , 積為積為1616位數(shù)位數(shù), , (A) (A)積的高積的高8 8位位; (B); (B)積的低積的低8 8位位DIV AB: (A)DIV AB: (A)除以除以(B),(B),結(jié)果用結(jié)果用2 2字節(jié)表示字節(jié)表示

30、, , (A) (A)商的整數(shù)部分商的整數(shù)部分;(B);(B)余數(shù)余數(shù)(二)算術(shù)運(yùn)算類指令續(xù)) P.60BCDBCD碼是指碼是指“用二進(jìn)制表達(dá)的十進(jìn)制數(shù)用二進(jìn)制表達(dá)的十進(jìn)制數(shù)”。如:。如: 十進(jìn)制數(shù)十進(jìn)制數(shù)2020可以用二進(jìn)制數(shù)可以用二進(jìn)制數(shù)00010100B00010100B表示表示; ; 也可以用十六進(jìn)制數(shù)也可以用十六進(jìn)制數(shù)14H14H表示;表示; 還可以用還可以用BCDBCD碼碼 00100000B 00100000B 或或 20H 20H 表示。表示。4 4個(gè)二進(jìn)制位就可以表示一位個(gè)二進(jìn)制位就可以表示一位BCDBCD碼:碼: 000000001001 1001 可表示十進(jìn)制數(shù)可表示十進(jìn)

31、制數(shù)(BCD(BCD數(shù)數(shù)) 0) 09; 9; 8 8個(gè)二進(jìn)制位就可以表示兩位壓縮的個(gè)二進(jìn)制位就可以表示兩位壓縮的BCDBCD碼:碼:000000000000000010011001 10011001 表示表示 00 009999。十進(jìn)制調(diào)整:十進(jìn)制調(diào)整: (DA A1DA A1條)條)用于兩個(gè)用于兩個(gè)BCDBCD碼之間的相加,這條指令只能跟在碼之間的相加,這條指令只能跟在 ADD ADD 或或 ADDC ADDC 之后之后假設(shè)假設(shè)(A)3(A)30 09 9或或(AC)=1(AC)=1則則(A)3(A)30 0(A)3(A)30 06 6; 假設(shè)假設(shè)(A)7(A)74 49 9或或(CY)=

32、1(CY)=1則則(A)7(A)74 4(A)7(A)74 46 6;P.60P.60例例5 5:兩個(gè)十進(jìn)制數(shù):兩個(gè)十進(jìn)制數(shù)“6565與與“5858相加,根相加,根據(jù)常識(shí),顯然其和應(yīng)當(dāng)為據(jù)常識(shí),顯然其和應(yīng)當(dāng)為“123123”。MOV A,#65H MOV A,#65H ADD A,#58H ADD A,#58H DA ADA A結(jié)果結(jié)果:(A)= 23H:(A)= 23H (CY)= 1 (CY)= 1指令指令 “DA ADA A” 完成的操作:完成的操作: 6 5 0110 0101 6 5 0110 0101 5 8 0101 1000 5 8 0101 1000 +13 31818 19

33、192 26 6 0110 01106 6 0110 0110假設(shè)假設(shè)(A)3(A)30 09 9或或(AC)=1(AC)=1則則(A)3(A)30 0(A)3(A)30 06 6; 假設(shè)假設(shè)(A)7(A)74 49 9或或(CY)=1(CY)=1則則(A)7(A)74 4(A)7(A)74 46 6;又如:兩個(gè)十進(jìn)制數(shù)又如:兩個(gè)十進(jìn)制數(shù)“3939與與“5858相加,根據(jù)常相加,根據(jù)常識(shí),顯然其和應(yīng)當(dāng)為識(shí),顯然其和應(yīng)當(dāng)為“9797”。MOV A,#39H MOV A,#39H ADD A,#58H ADD A,#58H DA ADA A結(jié)果結(jié)果:(A)= 97H:(A)= 97H (CY)=

34、0 (CY)= 0 3 9 0011 1001 3 9 0011 1001 5 8 0101 1000 5 8 0101 1000 +07 723239 9 6 0110 6 0110指令指令 “DA ADA A” 完成的操作:完成的操作:( (三三) )邏輯運(yùn)算及移位類指令邏輯運(yùn)算及移位類指令5 5種種/24/24條)條) P.61P.61邏輯與運(yùn)算:邏輯與運(yùn)算: (ANL6ANL6條)條)邏輯或運(yùn)算:邏輯或運(yùn)算: (ORL6ORL6條)條)邏輯異或運(yùn)算:邏輯異或運(yùn)算: (XRL6XRL6條)條)累加器清零累加器清零/ /取反:取反: (CLRCLR,CPL2CPL2條)條)累加器移位操作累

35、加器移位操作: : (RL,RLC,RR,RRC4RL,RLC,RR,RRC4條)條)邏輯運(yùn)算及移位類指令續(xù))邏輯運(yùn)算及移位類指令續(xù)) P.61P.61邏輯與邏輯與(ANL),(ANL),邏輯或邏輯或(ORL),(ORL),邏輯異或邏輯異或(XRL):(XRL):累加器清零累加器清零/ /取反操作取反操作 (CLR,CPL2CLR,CPL2條)條)CLR A CLR A 對(duì)累加器清零對(duì)累加器清零 1 Byte 1 1 Byte 1 個(gè)個(gè)Tm Tm CPL A CPL A 對(duì)累加器按位取非對(duì)累加器按位取非 1 Byte 1 1 Byte 1 個(gè)個(gè)TmTm指指 令令 形形 式式ByteByteTm

36、TmANLANL(ORL(ORL,XRL)XRL) direct direct, A 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邏輯運(yùn)算指令的常見(jiàn)邏輯運(yùn)算指令的常見(jiàn)用法用法邏輯與邏

37、輯與ANLANL用于清用于清0 0或者保留某些位:或者保留某些位:例例: ANL A, #0FH; : ANL A, #0FH; 那么那么(A) = 0AH(A) = 0AH( ( 已知累加器已知累加器A A中已存有數(shù):中已存有數(shù):9AH )9AH )邏輯或邏輯或ORLORL用于置用于置1 1或者保留某些位:或者保留某些位:例例: ORL A, #0FH; : ORL A, #0FH; 那么那么(A) = 9FH(A) = 9FH邏輯異或邏輯異或XRLXRL用于取反或者保留某些位:用于取反或者保留某些位:例例: XRL A, #0FH; : XRL A, #0FH; 那么那么(A) = 95H

38、(A) = 95H (A) (A) 1001 1010 1001 1010 #0FH #0FH 0000 1111 0000 1111 95H 95H 1001 0101 1001 0101邏輯運(yùn)算及移位類指令續(xù))邏輯運(yùn)算及移位類指令續(xù)) P.64P.64累加器移位操作累加器移位操作: :(RL,RLC,RR,RRC4RL,RLC,RR,RRC4條)條)RL A RL A 左環(huán)移左環(huán)移累加器累加器 A A累加器累加器 A ACyCy累加器累加器 A ACyCy累加器累加器 A ARRC A RRC A 帶進(jìn)位位右環(huán)移帶進(jìn)位位右環(huán)移RR A RR A 右環(huán)移右環(huán)移RLC A RLC A 帶進(jìn)位位

39、左環(huán)移帶進(jìn)位位左環(huán)移( (四四) )控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令4 4種種/17/17條)條) P.65P.65此類指令改變程序的執(zhí)行順序此類指令改變程序的執(zhí)行順序改變當(dāng)前改變當(dāng)前PCPC值值無(wú)條件轉(zhuǎn)移:無(wú)條件轉(zhuǎn)移: (LJMP,AJMP,SJMP,JMP4LJMP,AJMP,SJMP,JMP4條)條)條件轉(zhuǎn)移判斷跳轉(zhuǎn)):條件轉(zhuǎn)移判斷跳轉(zhuǎn)): (JZ,JNZ,CJNE,DJNZ8JZ,JNZ,CJNE,DJNZ8條)條)子程序調(diào)用及返回:子程序調(diào)用及返回: (LCALL,ACALL,RET,RETI4LCALL,ACALL,RET,RETI4條)條)空操作空操作: : (NOP1NOP1條)條

40、) “耗時(shí)一個(gè)機(jī)器周期。耗時(shí)一個(gè)機(jī)器周期。 do nothing! do nothing!控制轉(zhuǎn)移類指令續(xù))控制轉(zhuǎn)移類指令續(xù)) P.65-67P.65-67無(wú)條件轉(zhuǎn)移:無(wú)條件轉(zhuǎn)移: LJMP,AJMP,SJMP,JMP4 LJMP,AJMP,SJMP,JMP4條條LJMP addr16 LJMP addr16 長(zhǎng)跳轉(zhuǎn)指令長(zhǎng)跳轉(zhuǎn)指令 可在可在64K64K范圍內(nèi)跳轉(zhuǎn)范圍內(nèi)跳轉(zhuǎn)AJMP addr11 AJMP addr11 絕對(duì)跳轉(zhuǎn)指令絕對(duì)跳轉(zhuǎn)指令 可在指令所在的可在指令所在的2K2K范圍內(nèi)跳轉(zhuǎn)范圍內(nèi)跳轉(zhuǎn)SJMP rel SJMP rel 相對(duì)跳轉(zhuǎn)指令相對(duì)跳轉(zhuǎn)指令 可在當(dāng)前可在當(dāng)前PC-128PC-

41、128與與+127+127范圍內(nèi)跳轉(zhuǎn)范圍內(nèi)跳轉(zhuǎn)JMP A+DPTR JMP A+DPTR 間接長(zhǎng)跳轉(zhuǎn)指令間接長(zhǎng)跳轉(zhuǎn)指令 可在以可在以DPTRDPTR為基址為基址 + A + A為偏移量為偏移量 之和所指向的之和所指向的64K64K程序范圍內(nèi)跳轉(zhuǎn)程序范圍內(nèi)跳轉(zhuǎn)控制轉(zhuǎn)移類指令續(xù))控制轉(zhuǎn)移類指令續(xù)) P.67-69P.67-69條件轉(zhuǎn)移:條件轉(zhuǎn)移: JZ,JNZ,CJNE,DJNZ8JZ,JNZ,CJNE,DJNZ8條條JZ relJZ relJNZ relJNZ rel根據(jù)根據(jù)AccAcc的內(nèi)容是否為的內(nèi)容是否為0 0決定是否跳轉(zhuǎn)決定是否跳轉(zhuǎn)DJNZ directDJNZ direct,relre

42、lDJNZ RnDJNZ Rn, rel rel將將direct(direct(或或Rn)Rn)里的內(nèi)容減里的內(nèi)容減 1 1,結(jié)果不等,結(jié)果不等于于0 0就跳轉(zhuǎn);等于就跳轉(zhuǎn);等于0 0則不跳轉(zhuǎn)繼續(xù)往下走。則不跳轉(zhuǎn)繼續(xù)往下走。條件轉(zhuǎn)移續(xù))條件轉(zhuǎn)移續(xù))CJNE A, #data, relCJNE A, #data, relCJNE A, direct,rel CJNE A, direct,rel CJNE Ri,#data, relCJNE Ri,#data, relCJNE Rn, #data, relCJNE Rn, #data, rel 將將A(A(或或Ri,Ri,或或Rn)Rn)與與#da

43、ta(#data(或或direct)direct)相比較,相比較,其值不相等就跳轉(zhuǎn);相等則不跳轉(zhuǎn)其值不相等就跳轉(zhuǎn);相等則不跳轉(zhuǎn), ,繼續(xù)往下走。繼續(xù)往下走??刂妻D(zhuǎn)移類指令續(xù))控制轉(zhuǎn)移類指令續(xù)) P.70P.70LCALL addr16 LCALL addr16 子程序長(zhǎng)調(diào)用指令子程序長(zhǎng)調(diào)用指令可在可在64K64K范圍內(nèi)調(diào)用子程序范圍內(nèi)調(diào)用子程序子程序調(diào)用及返回:子程序調(diào)用及返回: (LCALL,ACALL,RET,RETI4LCALL,ACALL,RET,RETI4條)條) ACALL addr11 ACALL addr11 子程序絕對(duì)調(diào)用指令子程序絕對(duì)調(diào)用指令可在指令所在的可在指令所在的2K

44、2K范圍內(nèi)調(diào)用子程序范圍內(nèi)調(diào)用子程序RET RET 子程序返回指令子程序返回指令子程序結(jié)束并返回調(diào)用的下一條指令子程序結(jié)束并返回調(diào)用的下一條指令RETI RETI 中斷服務(wù)子程序返回指令中斷服務(wù)子程序返回指令中斷結(jié)束中斷結(jié)束/ /返回被打斷處的下一條指令返回被打斷處的下一條指令( (五五) )位操作類指令位操作類指令1717條)條) P.71P.71位傳送:位傳送: (MOV2MOV2條)條)位清零位清零/ /置位:置位: (CLR,SETB4CLR,SETB4條)條)位邏輯與位邏輯與/ /或或/ /非運(yùn)算:(非運(yùn)算:(ANL,ORL,CPL6ANL,ORL,CPL6條)條)位條件轉(zhuǎn)移位條件轉(zhuǎn)

45、移: : (JC,JNC,JB,JNB,JBC5JC,JNC,JB,JNB,JBC5條)條)位操作類指令續(xù))位操作類指令續(xù)) P.72P.72位傳送指令位傳送指令2 2條):條): MOV C MOV C, bit bit (C C)(bitbit) MOV bit MOV bit, C C (bitbit)(C C) 注:注: bit bit表示位地址表示位地址位清零位清零/ /置位指令置位指令4 4條):條): CLR bit CLR bit或或C C) (bitbit或或 C C)“0 0” SETB bit SETB bit或或C C) (bitbit或或 C C)“1 1” 位邏輯與

46、位邏輯與/ /或或/ /非指令非指令6 6條):條): ANL C ANL C,bitbit或或/bit/bit) ORL C ORL C,bitbit或或/bit/bit) CPL bit CPL bit (或(或 C C) 注注: :“/bit/bit表示對(duì)表示對(duì)bitbit位先取反然后再參加運(yùn)位先取反然后再參加運(yùn)算算位操作類指令續(xù))位操作類指令續(xù)) P.74P.74判位條件轉(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);否則不跳

47、轉(zhuǎn) JB bit JB bit,relrel (bitbit)= =“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)JBC bitJBC bit,relrel (bitbit)= =“1 1就先將其清零就先將其清零 再跳轉(zhuǎn);再跳轉(zhuǎn); 否則,不動(dòng)此位也不跳轉(zhuǎn)。否則,不動(dòng)此位也不跳轉(zhuǎn)。任務(wù)一:控制一盞燈點(diǎn)亮任務(wù)一:控制一盞燈點(diǎn)亮任務(wù)二:紅燈周期性地亮任務(wù)二:紅燈周期性地亮/ /滅滅JOB3: CLR P1.1 ; P1.1JOB3: CLR P1.1 ; P1.1清清“0 0” ,亮綠燈,亮綠燈RE

48、DO: SETB P1.3 ;REDO: SETB P1.3 ;將將P1.3P1.3置置“1 1”CHECK:JNB P1.3,CHECK ;CHECK:JNB P1.3,CHECK ;檢測(cè)傳感器是否被阻斷檢測(cè)傳感器是否被阻斷LOOP: ;LOOP: ;有入侵者,報(bào)警!有入侵者,報(bào)警! AJMP REDO ; AJMP REDO ;再跳回去檢測(cè)再跳回去檢測(cè)JOB1:JOB1: CLR P1.0 ;P1.0 CLR P1.0 ;P1.0清清“0 0”,亮紅燈,亮紅燈HERE: AJMP HERE ;HERE: AJMP HERE ;原地等待,不做別的事原地等待,不做別的事JOB2: CPL P1

49、.0 ;JOB2: CPL P1.0 ;對(duì)對(duì)P1.0P1.0取反:紅燈亮取反:紅燈亮/ /滅滅 ACALL DELAY ; ACALL DELAY ;延時(shí)延時(shí)1 1秒秒 AJMP JOB2 ; AJMP JOB2 ;反復(fù)反復(fù)任務(wù)三:紅外防盜報(bào)警任務(wù)三:紅外防盜報(bào)警 前面的簡(jiǎn)單測(cè)控實(shí)例中的前面的簡(jiǎn)單測(cè)控實(shí)例中的程序:程序:位操作指令位操作指令任務(wù)一:控制一盞燈點(diǎn)亮任務(wù)一:控制一盞燈點(diǎn)亮任務(wù)二:紅燈周期性地亮任務(wù)二:紅燈周期性地亮/ /滅滅JOB3: CLR P1.1 ; P1.1JOB3: CLR P1.1 ; P1.1清清“0 0” ,亮綠燈,亮綠燈REDO: SETB P1.3 ;REDO:

50、 SETB P1.3 ;將將P1.3P1.3置置“1 1”CHECK:JNB P1.3,CHECK ;CHECK:JNB P1.3,CHECK ;檢測(cè)傳感器是否被阻斷檢測(cè)傳感器是否被阻斷LOOP: ;LOOP: ;有入侵者,報(bào)警!有入侵者,報(bào)警! AJMP REDO ; AJMP REDO ;再跳回去檢測(cè)再跳回去檢測(cè)JOB1:JOB1: CLR P1.0 ;P1.0 CLR P1.0 ;P1.0清清“0 0”,亮紅燈,亮紅燈HERE: AJMP HERE ;HERE: AJMP HERE ;原地等待,不做別的事原地等待,不做別的事JOB2: CPL P1.0 ;JOB2: CPL P1.0 ;

51、對(duì)對(duì)P1.0P1.0取反:紅燈亮取反:紅燈亮/ /滅滅 ACALL DELAY ;ACALL DELAY ;延時(shí)延時(shí)1 1秒秒 AJMP JOB2 ;AJMP JOB2 ;反復(fù)反復(fù)任務(wù)三:紅外防盜報(bào)警任務(wù)三:紅外防盜報(bào)警跳轉(zhuǎn)指令跳轉(zhuǎn)指令 前面的簡(jiǎn)單測(cè)控實(shí)例中的前面的簡(jiǎn)單測(cè)控實(shí)例中的程序:程序:小結(jié):MCS-51指令集五大類功能)數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令 (2929條)條)算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令 (2424條)條)邏輯運(yùn)算及移位類指令邏輯運(yùn)算及移位類指令 (2424條)條)控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 (1717條)條)位操作位操作( (布爾操作布爾操作) )類指令類指令 (1717條

52、)條)內(nèi)部存儲(chǔ)器間傳送:內(nèi)部存儲(chǔ)器間傳送: (MOV16MOV16條)條)外部數(shù)據(jù)存儲(chǔ)器外部數(shù)據(jù)存儲(chǔ)器RAMRAM與累加器間傳送與累加器間傳送: : (MOVX4MOVX4條)條)程序存儲(chǔ)器程序存儲(chǔ)器ROMROM向累加器傳送:向累加器傳送: (MOVC2MOVC2條)條)數(shù)據(jù)交換:(數(shù)據(jù)交換:(XCHXCH,XCHDXCHD,SWAP5SWAP5條)條)堆棧操作:堆棧操作: (PUSHPUSH,POP2POP2條)條)(一)數(shù)據(jù)傳送類指令5種/29條)(二)算術(shù)運(yùn)算類指令6種/24條)加法運(yùn)算加法運(yùn)算 (ADD4 (ADD4條條) )帶進(jìn)位加法運(yùn)算帶進(jìn)位加法運(yùn)算 (ADDC4 (ADDC4條條

53、) )帶借位減法運(yùn)算帶借位減法運(yùn)算 (SUBB4 (SUBB4條條) )加加1/1/減減1 1操作操作 (INC,DEC9 (INC,DEC9條條) )單字節(jié)乘單字節(jié)乘/ /除法運(yùn)算除法運(yùn)算(MUL,DIV2(MUL,DIV2條條) )十進(jìn)制調(diào)整十進(jìn)制調(diào)整 (DA A1 (DA A1條條) )(三)邏輯運(yùn)算及移位指令5種/24條)邏輯與運(yùn)算:邏輯與運(yùn)算: (ANL6ANL6條)條)邏輯或運(yùn)算:邏輯或運(yùn)算: (ORL6ORL6條)條)邏輯異或運(yùn)算:邏輯異或運(yùn)算: (XRL6XRL6條)條)累加器清零累加器清零/ /取反:取反: (CLRCLR,CPL2CPL2條)條)累加器移位操作累加器移位操作

54、: :(RL,RLC,RR,RRC4RL,RLC,RR,RRC4條)條)(四)控制轉(zhuǎn)移類指令4種/17條)無(wú)條件轉(zhuǎn)移:無(wú)條件轉(zhuǎn)移: (LJMP,AJMP,SJMP,JMP4LJMP,AJMP,SJMP,JMP4條)條)條件轉(zhuǎn)移判斷跳轉(zhuǎn)):條件轉(zhuǎn)移判斷跳轉(zhuǎn)): (JZ,JNZ,CJNE,DJNZ8JZ,JNZ,CJNE,DJNZ8條)條)子程序調(diào)用及返回:子程序調(diào)用及返回: (LCALL,ACALL,RET,RETI4LCALL,ACALL,RET,RETI4條)條)空操作空操作: : (NOP1NOP1條)條) (五)位操作類指令4種17條)位傳送:位傳送: (MOV2MOV2條)條)位清零位

55、清零/ /置位:置位: (CLR,SETB4CLR,SETB4條)條)位邏輯與位邏輯與/ /或或/ /非運(yùn)算:非運(yùn)算: (ANL,ORL,CPL6ANL,ORL,CPL6條)條)位條件轉(zhuǎn)移位條件轉(zhuǎn)移: : (JC,JNC,JB,JNB,JBC5JC,JNC,JB,JNB,JBC5條)條)匯編語(yǔ)言與 簡(jiǎn)單程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)中的數(shù)計(jì)算機(jī)只能識(shí)別二進(jìn)制數(shù)計(jì)算機(jī)只能識(shí)別二進(jìn)制數(shù)機(jī)器指令,它原本是機(jī)器指令,它原本是不認(rèn)識(shí)常用的十六進(jìn)制數(shù)和十進(jìn)制數(shù)的。不認(rèn)識(shí)常用的十六進(jìn)制數(shù)和十進(jìn)制數(shù)的。機(jī)器指令機(jī)器指令/ /目標(biāo)代碼:目標(biāo)代碼: 由由0/10/1代碼組成的操作碼與操作數(shù)。代碼組成的操作碼與操作數(shù)。十

56、六進(jìn)制數(shù):便于讀寫(xiě)記憶的二進(jìn)制數(shù)的簡(jiǎn)寫(xiě)形式。十六進(jìn)制數(shù):便于讀寫(xiě)記憶的二進(jìn)制數(shù)的簡(jiǎn)寫(xiě)形式。 (0 09 9,A AF F 后綴:后綴:H/hH/h)BCDBCD碼:用二進(jìn)制數(shù)表達(dá)的十進(jìn)制數(shù)。碼:用二進(jìn)制數(shù)表達(dá)的十進(jìn)制數(shù)。 (0 09 9表示為表示為:0000:00001001B 1001B 后綴后綴:B/b,H/h:B/b,H/h)二進(jìn)制數(shù):由二進(jìn)制數(shù):由0/10/1組成、組成、“逢逢2 2進(jìn)進(jìn)1 1的數(shù)制。的數(shù)制。 如:如:01011110B 01011110B (0 01 1 后綴:后綴:B/bB/b)匯編語(yǔ)言編程基本規(guī)則匯編語(yǔ)言匯編語(yǔ)言: :用助記符描述的指令的集合。用助記符描述的指令的

57、集合。指令中以指令中以 AF AF 開(kāi)頭的十六進(jìn)制數(shù)前必須添一個(gè)開(kāi)頭的十六進(jìn)制數(shù)前必須添一個(gè) “0 0”。二進(jìn)制數(shù)必須帶后綴二進(jìn)制數(shù)必須帶后綴“B B或或“b b”;十六進(jìn)制數(shù)必;十六進(jìn)制數(shù)必須帶后綴須帶后綴“H H或或“h h”;十進(jìn)制數(shù)的后綴是;十進(jìn)制數(shù)的后綴是“D D或或“d d或無(wú)或無(wú). .標(biāo)號(hào):操作碼 目的操作數(shù),源操作數(shù);注釋匯編程序匯編程序: :匯編語(yǔ)言編寫(xiě)的程序借助編譯工具匯編語(yǔ)言編寫(xiě)的程序借助編譯工具編譯成為目標(biāo)代碼編譯成為目標(biāo)代碼, ,計(jì)算機(jī)才能識(shí)別。這個(gè)編譯工具計(jì)算機(jī)才能識(shí)別。這個(gè)編譯工具稱為匯編程序。稱為匯編程序。匯編程序的偽指令匯編程序匯編程序 軟件軟件 工具工具工具

58、軟件:工具軟件: 將程序員用匯編語(yǔ)言編寫(xiě)的程序翻譯成機(jī)器碼將程序員用匯編語(yǔ)言編寫(xiě)的程序翻譯成機(jī)器碼 ( (真真) )指令指令: :告訴計(jì)算機(jī)如何操作以及做何種操作告訴計(jì)算機(jī)如何操作以及做何種操作用匯編語(yǔ)言編寫(xiě)的程序在此被稱為應(yīng)用程序用匯編語(yǔ)言編寫(xiě)的程序在此被稱為應(yīng)用程序偽指令:告訴匯編程序在翻譯應(yīng)用程序時(shí)有何具偽指令:告訴匯編程序在翻譯應(yīng)用程序時(shí)有何具體約定。偽指令不進(jìn)行具體的操作,那是真指令體約定。偽指令不進(jìn)行具體的操作,那是真指令的事。的事。 比如:從何處開(kāi)始,何處結(jié)束,某些編程者自己比如:從何處開(kāi)始,何處結(jié)束,某些編程者自己規(guī)定的表述代表什么意思規(guī)定的表述代表什么意思 匯編程序的常用偽指

59、令ORG addr16ASM51ORG addr16ASM51程序中一定要寫(xiě)!程序中一定要寫(xiě)!規(guī)定編譯后的機(jī)器代碼存放的起始位置。規(guī)定編譯后的機(jī)器代碼存放的起始位置。END ASM51END ASM51程序中一定要寫(xiě)!程序中一定要寫(xiě)!表示翻譯到此結(jié)束,其后的任何內(nèi)容不予理睬。表示翻譯到此結(jié)束,其后的任何內(nèi)容不予理睬。符號(hào)名稱符號(hào)名稱 EQU EQU 表達(dá)式表達(dá)式將表達(dá)式的值賦予符號(hào)名稱。程序中凡出現(xiàn)該符將表達(dá)式的值賦予符號(hào)名稱。程序中凡出現(xiàn)該符號(hào)名稱就等同于該表達(dá)式。號(hào)名稱就等同于該表達(dá)式。$ $ “當(dāng)前當(dāng)前PCPC值也叫位置計(jì)數(shù)器值也叫位置計(jì)數(shù)器 代表正在執(zhí)行的指令所在位置。代表正在執(zhí)行的指

60、令所在位置。匯編程序的常用偽指令(續(xù))符號(hào)名稱符號(hào)名稱 BIT BIT 位地址位地址將位地址的值賦予符號(hào)名稱。程序中凡出現(xiàn)該將位地址的值賦予符號(hào)名稱。程序中凡出現(xiàn)該符號(hào)名稱就代表該位地址。符號(hào)名稱就代表該位地址。DW DW 雙字節(jié)數(shù)據(jù)雙字節(jié)數(shù)據(jù) 或雙字節(jié)數(shù)據(jù)組或雙字節(jié)數(shù)據(jù)組 將雙字節(jié)數(shù)據(jù)將雙字節(jié)數(shù)據(jù) 或雙字節(jié)數(shù)據(jù)組或雙字節(jié)數(shù)據(jù)組 順序存放在此順序存放在此后的存儲(chǔ)單元中。占據(jù)相應(yīng)存儲(chǔ)空間。后的存儲(chǔ)單元中。占據(jù)相應(yīng)存儲(chǔ)空間。DB 8DB 8位數(shù)據(jù)位數(shù)據(jù) 或或8 8位數(shù)據(jù)組位數(shù)據(jù)組 將將8 8位數(shù)據(jù)位數(shù)據(jù) 或或8 8位數(shù)據(jù)組位數(shù)據(jù)組 順序存放在此后的存順序存放在此后的存儲(chǔ)單元中。占相應(yīng)數(shù)量的存儲(chǔ)空間

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論