單片機(jī)匯編語(yǔ)言及程序設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩74頁(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、第二章 單片機(jī)匯編語(yǔ)言及程序設(shè)計(jì),對(duì)任何計(jì)算機(jī),如果只有硬件(裸機(jī)),而沒(méi)有軟件(程序)的支持,就不能發(fā)揮其運(yùn)算和控制功能。指令:程序的最基本單位,指CPU所能進(jìn)行的操作程序:指完成某項(xiàng)任務(wù)的計(jì)算機(jī)指令的有序集合指令系統(tǒng):所有指令的集合。不同的CPU具有不同的 指令系統(tǒng)。MCS-51的指令系統(tǒng)共有111條指令計(jì)算機(jī)編程語(yǔ)言機(jī)器語(yǔ)言 匯編語(yǔ)言 高級(jí)語(yǔ)言,匯編,編譯,MCS-51

2、指令格式匯編語(yǔ)言級(jí)指令格式: [標(biāo)號(hào):] 操作碼 [操作數(shù)] [;注釋]例: LB: MOV A,R2 ; A←(R2)標(biāo)號(hào)——指令的標(biāo)識(shí),表示指令的首地址;操作碼——操作的命令(指示機(jī)器執(zhí)行何種操作)操作數(shù)——參與操作的數(shù)據(jù)(是操作碼的補(bǔ)充), 分目的操作數(shù)和源操作數(shù)。注釋——對(duì)指令功能的說(shuō)明,便于程序閱讀和維護(hù), 不參與操作。,機(jī)

3、器語(yǔ)言級(jí)指令格式: 機(jī)器語(yǔ)言指令是一種二進(jìn)制代碼,具體包含兩個(gè)基本的部分:操作碼和操作數(shù)。機(jī)器語(yǔ)言分為單字節(jié)、雙字節(jié)和三字節(jié)指令,具體格式分別為:?jiǎn)巫止?jié)指令:例:MOV A,R0 對(duì)應(yīng)的機(jī)器語(yǔ)言指令為:E8H雙字節(jié)指令:例:MOV A,20H 對(duì)應(yīng)的機(jī)器語(yǔ)言指令為:E520H三字節(jié)指令:例:MOV 20H,#46H 對(duì)應(yīng)的機(jī)器語(yǔ)言指令為:752046H,操作碼,操作碼,操作數(shù),操作碼,第一操作數(shù),第二操作數(shù),一、MCS—

4、單片機(jī)尋址方式*二、單片機(jī)常用指令類型*三、單片機(jī)指令系統(tǒng)的幾個(gè)特點(diǎn)*四、單片機(jī)中的偽指令*五、匯編語(yǔ)言程序設(shè)計(jì)-舉例*,本章主要內(nèi)容,一、MCS-51單片機(jī)尋址方式,尋址方式的“尋址”:是指尋找參與操作的數(shù)據(jù)所在的存儲(chǔ)器單元的地址。注意: MCS-51指令系統(tǒng)的尋址方式及其對(duì)應(yīng)的尋址空間,1、立即尋址,特點(diǎn):·指令碼中直接含有操作數(shù)本身(立即數(shù))·立即數(shù)可以是8位或16位·立即

5、數(shù)通常用#data或#data16表示·立即數(shù)只能作為源操作數(shù)·立即數(shù)同操作碼一起存放在程序存儲(chǔ)器中 例如:MOV A,#3BH ;A←3BH MOV DPTR,#1828H ;DPTR←#1828H,,3BH,2、直接尋址,特點(diǎn):·指令碼中含有操作數(shù)地址(8位二進(jìn)制數(shù));·可用于直接尋址的

6、存儲(chǔ)空間是:片內(nèi)RAM的低128字節(jié)和特殊功能寄存器SFR;·直接尋址通常用direct(操作數(shù)所在存儲(chǔ)單元的物理地址)表示;例:MOV 40H, A ;(40H) ← A·對(duì)片內(nèi)高128B的RAM,direct既可以使用SFR的物理地址,也可以用SFR的名稱符號(hào)。MOV A, 81H ;A ← (81H) MOV A, SP

7、 ;A ← SP,可讀性好,,3BH,演示MOV 40H, A ;(40H) ← A,3BH,3、寄存器尋址,特點(diǎn): ·操作數(shù)在R7-R0,A,B,AB,DPTR中,指令碼中含有該操作數(shù)的寄存器號(hào); ·操作數(shù)位于片內(nèi)RAM中 MOV A, Rn ; A ← Rn INC Rn ; Rn ← Rn+1,,3BH,3BH,,,000,

8、4、寄存器間接尋址,特點(diǎn): ·指令碼中含有存放該 操作數(shù)地址的寄存器號(hào); ·間址寄存器采用@R0,@R1,@DPTR表示; ·@R0,@R1用于對(duì)片內(nèi)RAM和外部RAM (0000H~00FFH)尋址,@DPTR的尋址范圍是片外ROM/RAM的全部64KB區(qū)域; ·寄存器間址指令不能用于尋址SFR MOV A, @R0 ; A ← (R0),,3BH,3BH

9、,5、變址尋址,特點(diǎn):·指令碼中隱含有作為基地址寄存器用的數(shù)據(jù)指針DPTR或程序計(jì)數(shù)器PC(存放基地址);·指令碼中也隱含有累加器A(A中存放地址偏移量,00H~FFH范圍內(nèi)的無(wú)符號(hào)數(shù));·尋址空間是程序存儲(chǔ)器。 MOVC A, @A+PC ; A ← (A+PC) MOVC A, @A+DPTR ; A ← (A+DPTR)

10、例:假設(shè)A中的內(nèi)容為05H,DPTR的內(nèi)容為0400H,程序存儲(chǔ)器0405H單元的內(nèi)容為2DH,則 MOVC A, @A+DPTR 執(zhí)行后A的內(nèi)容為2DH,,,,02,,2000H,A,IR,DPTR,ALU,,2002H,X2,,93,演示:MOVC A, @A+DPTR ; A ← (A+DPTR),6、相對(duì)尋址,特點(diǎn):·相對(duì)轉(zhuǎn)移指令的指令碼中含有相對(duì)地址偏移量;·

11、相對(duì)轉(zhuǎn)移指令分為:短轉(zhuǎn)移指令和長(zhǎng)轉(zhuǎn)移指令(分別為雙字節(jié)和三字節(jié));·PC的當(dāng)前值 + 相對(duì)地址偏移量rel = 下一條要執(zhí)行指令的地址;·PC的當(dāng)前值是指相對(duì)轉(zhuǎn)移指令從程序存儲(chǔ)器中取出后的PC值。 2000H 8054H SJMP rel ; PC ← PC+2+rel,,,,,2000H,A,PC,ALU,2002H,54H,演示:2000H 8054H SJM

12、P 54H ; PC ← 2056H,,,2056H,7、位尋址,特點(diǎn):·位尋址指令的指令碼中含有位地址;·位尋址指令中位地址用bit表示(字節(jié)地址direct);·位尋址區(qū):片內(nèi)RAM位尋址區(qū)20H~2FH和11個(gè)SFR;·位地址的表示方法: MOV C, 7FH ; Cy ← (7FH) MOV C, 2F

13、H.7 ; Cy ← (7FH) MOV C, ACC.7 ; Cy ← ACC.7 A1 BIT 7FH ——位地址賦值偽指令 MOV C, A1 ; Cy ← 2FH.7 , A1 為符號(hào)位地址,*,,,7FH,00H,1,演示:D200H SETB 00H ; 00H ← 1,二、單片機(jī)常用指令類型,數(shù)據(jù)傳送指令(

14、28條) 將源地址中操作數(shù)傳送到目的地址的指令。算數(shù)運(yùn)算指令(24條) 對(duì)兩個(gè)操作數(shù)進(jìn)行加、減、乘、除等運(yùn)算的指令。邏輯操作和環(huán)移指令(25條) 對(duì)兩個(gè)操作數(shù)進(jìn)行邏輯乘、邏輯加、邏輯取反和異或等操作; 對(duì)累加器A中數(shù)進(jìn)行環(huán)移(左環(huán)移、右環(huán)移,帶進(jìn)位、不帶進(jìn)位)控制轉(zhuǎn)移指令(17條) 條件轉(zhuǎn)移、無(wú)條件轉(zhuǎn)移、調(diào)用和返回等指令(改變PC中值為目標(biāo))位操作指令(布爾變量操作指令)(1

15、7條) 位傳送、位置位、位運(yùn)算和位控制轉(zhuǎn)移指令。,1、數(shù)據(jù)傳送指令(28條),此類指令不影響Cy, AC, OV標(biāo)志,只影響奇偶標(biāo)志P。片內(nèi)RAM單元之間的數(shù)據(jù)傳送指令(15條) 指令的源操作數(shù)和目的操作數(shù)地址都在單片機(jī)內(nèi)部,是片內(nèi)RAM或SFR的地址。·立即尋址型傳送指令 MOV A,#data ; A← data

16、 MOV Rn,#data ; Rn← data MOV @Ri,#data ; (Ri)← data MOV direct,#data ; direct ← data,1、數(shù)據(jù)傳送指令(28條),·直接尋址型傳送指令 指令操作碼中至少含有一個(gè)操作數(shù)的直接地址。

17、 MOV A, direct ; A← (direct) MOV direct ,A ; direct ← A MOV Rn, direct ; Rn← (direct) MOV @Ri, direct ; (Ri)← (direct) MOV d

18、irect2,direct1 ; direct2 ← (direct1) 注:目的存儲(chǔ)單元有累加器A、工作寄存器和片內(nèi) RAM單元(包括SFR的字節(jié)地址)。,1、數(shù)據(jù)傳送指令(28條),·寄存器尋址型傳送指令MOV A, Rn ; A← RnMOV Rn, A ; Rn← A MOV direct,

19、Rn ; direct ← Rn,1、數(shù)據(jù)傳送指令(28條),·寄存器間址型傳送指令 MOV A, @Ri ; A← (Ri) MOV @Ri , A ; (Ri) ← A MOV direct, @Ri ; direct ← (Ri),1、數(shù)據(jù)傳送指令,外部數(shù)據(jù)傳送指令(外部RAM/RO

20、M) ·16位數(shù)傳送指令 MOV DPTR,#data16 ; DPTR ← data16 16位立即數(shù)是外部RAM/ROM的地址,其高8位送入DPH,低8位送入DPL。·外部ROM的字節(jié)傳送指令(查表指令) MOVC A, @A+DPTR ; A ← (A+DPTR) 遠(yuǎn)程查表 MOVC A, @A+P

21、C ; PC ← PC+1, A ← (A+PC) 近程查表,1、數(shù)據(jù)傳送指令,·外部RAM的字節(jié)傳送指令 實(shí)現(xiàn)外部RAM和累加器A之間的數(shù)據(jù)傳送。 MOVX A, @Ri ; A ← (Ri)

22、 MOVX @Ri, A ; (Ri) ← A MOVX A, @DPTR ; A ← (DPTR) MOVX @DPTR, A ; (DPTR )← A 注:前面兩條指令訪問(wèn)外部RAM:0000H~00FFH 后面兩條指令訪問(wèn)外部RAM:0000H~FFFFH,1

23、、數(shù)據(jù)傳送指令,堆棧操作指令 PUSH direct ; SP ← SP+1,(SP) ←(direct) POP direct ; direct ←(SP), SP ← SP-1 堆棧操作指令是直接尋址指令,書寫格式為: PUSH ACC PUSH 00H POP ACC

24、 POP 00H注:彈出指令不會(huì)改變堆棧區(qū)存儲(chǔ)器單元中的內(nèi)容。,1、數(shù)據(jù)傳送指令,數(shù)據(jù)交換指令 XCH A,Rn ; A?Rn XCH A,direct ;A ?(direct) XCH A, @Ri ; A ?(Ri) XCHD A, @Ri ; A3~0 ?(R

25、i)3~0 注:只是將累加器A中的內(nèi)容和片內(nèi)RAM單元內(nèi)容相互 交換。,2、算術(shù)運(yùn)算指令,加法指令( 13條)·不帶Cy加法指令A(yù)DD A,Rn ; A ← A+Rn ADD A,Direct ; A ← A+(Direct)ADD A,@Ri ; A ← A+(Ri)ADD A,#data ; A ← A+data·對(duì)PSW標(biāo)志位

26、均有影響;·計(jì)算機(jī)總是按帶符號(hào)數(shù)法則運(yùn)算,產(chǎn)生PSW標(biāo)志位。·兩個(gè)帶符號(hào)數(shù)相加,運(yùn)算結(jié)果是否溢出應(yīng)判斷OV標(biāo)志位。,2、算術(shù)運(yùn)算指令,·帶Cy加法指令A(yù)DDC A,Rn ; A ← A+Rn +Cy ADDC A,Direct ; A ← A+(Direct) +CyADDC A,@Ri ; A ← A+(Ri)+CyADDC A,#data

27、; A ← A+data +Cy· Cy——指令執(zhí)行前的Cy值。·常用于多字節(jié)無(wú)符號(hào)數(shù)的加法運(yùn)算,2、算術(shù)運(yùn)算指令,·加1指令 INC A ; A ← A+ 1 INC Rn ; Rn ← Rn+1 INC Direct ; Direct ←( Direct )+1 INC @

28、Ri ; (Ri) ← (Ri)+1 INC DPTR ; DPTR ←DPTR+1,只影響奇偶校驗(yàn)標(biāo)志位,2、算術(shù)運(yùn)算指令,減法指令( 8條)·帶Cy減法指令SUBB A,Rn ; A ← A – Rn - Cy SUBB A, Direct ; A ← A -(Direct)- CySUBB A,@Ri

29、; A ← A -(Ri) - CySUBB A, #data ; A ← A – data - Cy·對(duì)PSW標(biāo)志位均有影響;·計(jì)算機(jī)總是按帶符號(hào)數(shù)法則運(yùn)算,產(chǎn)生PSW標(biāo)志位。·兩個(gè)帶符號(hào)數(shù)相減,運(yùn)算結(jié)果是否溢出應(yīng)判斷OV標(biāo)志位。,2、算術(shù)運(yùn)算指令,·減1指令 DEC A ; A ← A - 1 DEC Rn

30、 ; Rn ← Rn - 1 DEC Direct ; Direct ←( Direct )- 1 DEC @Ri ; (Ri) ← (Ri) - 1,只影響奇偶校驗(yàn)標(biāo)志位,2、算術(shù)運(yùn)算指令,十進(jìn)制調(diào)整指令( 1條) DA A ;若AC=1或A3~A0>9,則A ←A+06H

31、 若Cy=1或A7~A4>9,則A ←A+60H·通常緊跟在加法指令后使用,對(duì)A中的操作數(shù)進(jìn)行十進(jìn)制調(diào)整。· 專用于實(shí)現(xiàn)BCD運(yùn)算。,2、算術(shù)運(yùn)算指令,乘法、除法指令( 2條) MUL AB ;A×B=BA, 形成標(biāo)志 對(duì)標(biāo)志位的影響:Cy=0;

32、 若B不等于0,則OV=1,否則OV=0; P由A中1的奇偶性確定。 DIV AB ; A÷B=A…B, 形成標(biāo)志 對(duì)標(biāo)志位的影響:Cy=0; 執(zhí)行過(guò)程中,若

33、發(fā)現(xiàn)B等于0,則OV=1; P由A中1的奇偶性確定。,3、邏輯運(yùn)算指令(25條),邏輯操作指令共25條,所有指令均按位進(jìn)行操作,無(wú)進(jìn)位,一般不影響標(biāo)志位。·邏輯與運(yùn)算指令 ANL A,Rn ; A ←A∧Rn ANL A, direct ; A ←A∧(direct)

34、 ANL A, @Ri ; A ←A∧(Ri) ANL A, #data ; A ←A∧data ANL direct ,A ; direct ← (direct) ∧A ANL direct ,#data ; direct ← (direct) ∧data,3、邏輯運(yùn)算指令(25條),·邏輯或運(yùn)算指令

35、 ORL A,Rn ; A ←A ∨ Rn ORL A, direct ; A ←A ∨(direct) ORL A, @Ri ; A ←A ∨(Ri) ORL A, #data ; A ←A ∨ data ORL direct ,A ; direct ← (

36、direct) ∨ A ORL direct ,#data ; direct ← (direct) ∨ data,3、邏輯運(yùn)算指令(25條),·邏輯異或運(yùn)算指令 XRL A,Rn ; A ←A ⊕ Rn XRL A, direct ; A ←A ⊕(direct) XRL A, @Ri ; A ←A ⊕(Ri) XRL A, #dat

37、a ; A ←A ⊕ data XRL direct ,A ; direct ← (direct) ⊕ A XRL direct ,#data ; direct ← (direct) ⊕ data,3、邏輯運(yùn)算指令(25條),·累加器A清零和取反指令CLR A ; A ← 0 CPL A ; A ← A ·移位指令 RL A ;

38、 A7 ←A6 ←….. ←A0 ←A7RR A ; A0→A7→ ….. → A1 → A0RLC A ; CY ← A7 ←A6 ←….. ←A0 ←CYRRC A ; CY → A7→ ….. → A0 → CYSWAP A ;高4位和低4位交換指令,,4、控制轉(zhuǎn)移指令(17條),無(wú)條件轉(zhuǎn)移指令 LJMP addr16 ;

39、 PC ← addr16 長(zhǎng)轉(zhuǎn)移指令:64K范圍內(nèi)轉(zhuǎn)移指令 AJMP addr11 ; PC ← PC+2,PC10~PC0 ← addr11 絕對(duì)轉(zhuǎn)移指令:2K范圍內(nèi)轉(zhuǎn)移指令 SJMP rel ; PC ← PC+2, PC ← PC+rel 短轉(zhuǎn)移指令:-126-129范圍內(nèi)轉(zhuǎn)移指令, rel的取值范圍-128-127 JMP @A

40、+DPTR ; PC ← A+DPTR 間接轉(zhuǎn)移指令:變址轉(zhuǎn)移指令,目標(biāo)轉(zhuǎn)移地址的基地址送入DPTR,4、控制轉(zhuǎn)移指令(17條),條件轉(zhuǎn)移指令 ·累加器A判零轉(zhuǎn)移指令 JZ rel ; 若A=0,則 PC ← PC+2+rel, 否則PC ← PC+2 JNZ rel ; 注意:都是雙字節(jié)

41、相對(duì)轉(zhuǎn)移指令,rel為相對(duì)地址偏移量。,,4、控制轉(zhuǎn)移指令(17條),·比較不相等轉(zhuǎn)移指令 CJNE A,#data,rel;若A=data,則PC←PC+3 若A不等于data,則PC←PC+3+rel 形成Cy標(biāo)志。 CJNE A,dir

42、ect,rel; CJNE Rn,#data,rel; CJNE @Ri,#data,rel; 注意:指令的相對(duì)轉(zhuǎn)移范圍為-125 ~ +130,,4、控制轉(zhuǎn)移指令(17條),·減1非零轉(zhuǎn)移指令 DJNZ Rn,rel; 若Rn-1不等于0,則PC←PC+2+rel 若Rn-1=0,則PC←PC+2 DJNZ direct,re

43、l;若,(direct)- 1不等于0,則PC←PC+3+rel 若,(direct)-1=0,則PC←PC+3 注意:條件轉(zhuǎn)移指令均為相對(duì)轉(zhuǎn)移指令,因此指令的轉(zhuǎn)移范圍十分有限。,,4、控制轉(zhuǎn)移指令(17條),子程序調(diào)用和返回指令 ·短調(diào)用指令 ACALL addr11 ; PC←PC+2

44、 SP←SP+1,(SP)← PC7~PC0 SP←SP+1,(SP)← PC15~PC8 PC10~0←addr11 注意:(1)短調(diào)用指令也稱為絕對(duì)調(diào)用指令; (2)本調(diào)用指令應(yīng)與被調(diào)用子程序起始地址在

45、 同一個(gè)2KB范圍內(nèi)。,,4、控制轉(zhuǎn)移指令(17條),·長(zhǎng)調(diào)用指令 LCALL addr16 ; PC ← PC+3 SP ← SP+1,(SP) ← PC7~PC0 SP ← SP+1,(SP) ← PC15

46、~PC8 PC15~0 ← addr16 注意:本調(diào)用指令是一個(gè)64KB范圍內(nèi)調(diào)用指令。·返回指令 RET; PC15~PC8 ← (SP), SP ← SP-1, PC7~PC0 ← (SP), SP ← SP-1

47、RETI; PC15~PC8 ← (SP), SP ← SP-1, PC7~PC0 ← (SP), SP ← SP-1 返回?cái)帱c(diǎn)的同時(shí),釋放中斷邏輯,接受新的中斷請(qǐng)求·空操作指令:NOP ; PC ← PC+1,,5、布爾變量操作指令(17條),MCS-51單片機(jī)的一個(gè)最大的特點(diǎn)就是在硬件結(jié)構(gòu)上有一個(gè)布爾處理器,對(duì)

48、應(yīng)這個(gè)處理器,指令系統(tǒng)中設(shè)計(jì)了處理布爾變量的指令子集。 該位操作指令共17條,所有的位操作指令均采用位尋址方式,在指令中位地址可用四種方式表示: (1)直接尋址方式 (2)點(diǎn)操作符表示方式 (3)位名稱方式 (4)標(biāo)號(hào)表示(自定義地址)方式,位傳送指令 MOV C , bit MOV bit , C

49、 其中:C為PSW中的Cy;bit為布爾變量的位地址。 這組指令的其中一個(gè)操作數(shù)必須是進(jìn)位標(biāo)志C,另一個(gè)可以是位地址。,位置位和復(fù)位指令·位置位指令SETB C;1→CySETB bit;1→( bit )·位復(fù)位指令CLR C;0→CyCLR bit;0→( bit ),位邏輯運(yùn)算指令·位邏輯“與”指令A(yù)NL C, bit ;

50、(C)∧( bit )→ CANL C, /bit ;(C)∧ /(bit )→ C·位邏輯“或”指令ORL C, bit ;(C)∨( bit )→ CORL C, /bit ;(C)∨/( bit )→ C·位邏輯“非”指令CPL C ;/(C ) → CCPL bit ;/(bit) →bit,位條件轉(zhuǎn)移指令·累加器cy狀態(tài)判斷轉(zhuǎn)

51、移指令 JCrel;若Cy=1,則(PC)+2+rel→PC;若Cy=0,則(PC)+2→PC JNCrel;若Cy=0,則(PC)+2+rel→PC;若Cy=1,則(PC)+2→PC·位狀態(tài)判斷轉(zhuǎn)移指令 JBbit, rel ;若(bit)=1,則(PC)+3+rel→PC;若(bit)=0,則(PC)+3→PC JNBbit, rel ;若(bit)=0,則(PC)+

52、3+rel→PC;若(bit)=1,則(PC)+3→PC JBCbit, rel ;若(bit)=1,則 (PC)+3+rel→PC,0→bit;若(bit)=0,則 (PC)+3→PC,三、單片機(jī)指令系統(tǒng)的幾個(gè)特點(diǎn),指令中的數(shù)據(jù)表示:數(shù)據(jù)前加#訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器指令:MOVX 訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器使用數(shù)據(jù)指針:DPTR查表指令:MOVC A,@A+DPTR M

53、OVC A,@A+PC調(diào)用和轉(zhuǎn)移指令都有幾種:ACALL addr11 絕對(duì)調(diào)用(2kB內(nèi))LCALL addr16 長(zhǎng)調(diào)用 AJMP addr11 絕對(duì)跳轉(zhuǎn)(2kB內(nèi)) LJMP addr16 長(zhǎng)跳轉(zhuǎn) SJMP rel 相對(duì)跳轉(zhuǎn),CJNE (

54、目的),(源),rel目的字節(jié)與源字節(jié)比較,不等,則轉(zhuǎn)到rel處執(zhí)行,否則順序執(zhí)行。DJNZ Rn,rel 和 DJNZ direct ,relPUSH和POP指令為單字節(jié)操作,且棧指針向下。布爾(位)處理指令舉例: MOV P1.2, CSETB P1.5 JB ACC.3,label CPL C CLR

55、 P1.6 JNB P1.7,lebel,四、單片機(jī)中的偽指令,名詞解釋: 匯編程序——是一種由制造廠家或軟件公司提供的實(shí)用 程序,能把“匯編語(yǔ)言源程序”翻譯成機(jī) 器語(yǔ)言,供CPU執(zhí)行。例如:MBUG 匯編語(yǔ)言源程序——設(shè)計(jì)者編寫的程序匯編語(yǔ)言是匯編語(yǔ)言語(yǔ)句的集合,是匯編語(yǔ)言源程序的基本元素。匯編語(yǔ)

56、言語(yǔ)句分為指令性語(yǔ)句和指示性語(yǔ)句。,四、單片機(jī)中的偽指令,指令性語(yǔ)句:指采用指令助記符構(gòu)成的匯編語(yǔ)言語(yǔ)句,是匯編語(yǔ)言語(yǔ)句的主體。每條指令性語(yǔ)句都有對(duì)應(yīng)的指令代碼(機(jī)器碼)MCS-51單片機(jī)有111條指令性語(yǔ)句指示性語(yǔ)句(又稱偽指令):不是真正的指令。不會(huì)在匯編時(shí)產(chǎn)生機(jī)器代碼匯編時(shí)供匯編程序識(shí)別和執(zhí)行,對(duì)匯編過(guò)程進(jìn)行某種控制MCS-51中常用的偽指令有8條,四、單片機(jī)中的偽指令,偽指令——是在機(jī)器匯編時(shí)供匯編程序識(shí)別和執(zhí)行的命

57、令,用于對(duì)匯編的過(guò)程進(jìn)行控制。ORG 指令代碼存儲(chǔ)起始地址 ORG 2000H START:MOV A, #64H: ENDEND 結(jié)束匯編偽指令每個(gè)源程序只能有一個(gè)END,且在程序的末尾。,四、單片機(jī)中的偽指令,EQU 等值(賦值)語(yǔ)句 字符名稱 EQU 數(shù)據(jù)或匯編符

58、 DAPORT EQU 0C010H 注:先定義后使用,定義字符名稱不能在表達(dá)式中使用。DATA 數(shù)據(jù)地址賦值語(yǔ)句 字符名稱 DATA 表達(dá)式 AA DATA 35H 注:表達(dá)式可為數(shù)據(jù)或地址,也可包含已定義的“字符名稱”,但不能是匯編符號(hào)。,四、單片機(jī)中的偽指令,DB——定義字節(jié)

59、 [標(biāo)號(hào):] DB 項(xiàng)或項(xiàng)表 把“項(xiàng)或項(xiàng)表”中的數(shù)據(jù)依次存放到以左邊標(biāo)號(hào)為起始地址的存儲(chǔ)單元中 例如: ORG 0600H START:MOV A #64H … TAB:DB 3FH,68,01011010B,’5’,’A’ …

60、 END,四、單片機(jī)中的偽指令,DW——定義雙字節(jié)數(shù)(字)(高8位放低地址單元) [標(biāo)號(hào):] DW 項(xiàng)或項(xiàng)表 例如: ORG 1600H START:MOV A #30H … ORG 1620H

61、 HETAB:DW 3F08H,68H,15 END 匯編后: (1620H)=3FH (1622H)=00H (1624H)=00H (1621H)=08H (1623H)=68H (1625H)=0FH,四、單片機(jī)中的偽指令,DS——定義存儲(chǔ)空間 [標(biāo)號(hào):] DS 表達(dá)

62、式 從標(biāo)號(hào)地址開(kāi)始預(yù)留一定數(shù)量的內(nèi)存單元 例如: SPC:DS 08H BIT——位地址賦值 字符名稱 BIT 位地址 例如: A1 BIT P3.4 A2 BIT 00H 注:BIT語(yǔ)句定義過(guò)的字符名稱是一個(gè)符號(hào)位地址。,五、匯

63、編語(yǔ)言程序設(shè)計(jì)-舉例,匯編語(yǔ)言程序設(shè)計(jì)步驟擬制設(shè)計(jì)任務(wù)書:程序功能、技術(shù)指標(biāo)、精度等級(jí) 實(shí)施方案、工程進(jìn)度、所需設(shè)備、研制費(fèi) 用和人員分工等 建立數(shù)學(xué)模型:可以是表達(dá)式,推理和判斷,運(yùn)行 狀態(tài)的模擬等確立算法:同一數(shù)學(xué)模型往往有幾種不同的算法繪制程序流程圖:設(shè)計(jì)程序結(jié)構(gòu)編制匯編語(yǔ)言源程

64、序上機(jī)調(diào)試,匯編語(yǔ)言程序的匯編 將匯編語(yǔ)言源程序轉(zhuǎn)換為機(jī)器語(yǔ)言的過(guò)程稱為“匯編”??梢圆捎靡韵聝煞N手段進(jìn)行匯編人工匯編——查手冊(cè)機(jī)器匯編——匯編程序,例 拆字程序: 設(shè) 30H中存放待處理的數(shù)據(jù),要求將其拆成兩個(gè)字節(jié)數(shù),存放在31H和32H(高位)中。 例如:59H → 05H和09H ORG 0500HCHAIZ:MOV R1,#32H MOV R0,

65、#30H MOV A,@R0 ANL A,#0F0H RR A RR A RR A,1.簡(jiǎn)單程序設(shè)計(jì),注:4個(gè) RR A指令可以用 SWAP A 指令代替。,RR A MOV @R1,ADEC R1MOV A,@R0ANL A,#0FHMOV @R1,AEND,例 將一個(gè)字節(jié)

66、BCD碼變成相應(yīng)的ASCAII碼,存入兩個(gè)RAM單元中。設(shè):BCD碼存在內(nèi)部RAM 30H單元中,變換成ASCAII碼存入31H和32H中。ORG 0500HMOV R0,#32HMOV @R0, #00HMOV A, 30HXCHD A, @R0ORL 32H, #30HSWAP AORL A, #30HMOV 3

67、1H, AEND,或 : ORG 0500HMOV R0, #30HMOV A, @R0MOV B,AANL A, #0FHADD A, #30HMOV 32H, AMOV A, BSWAP AANL A, #0FHADD A, #30HMOV 31H, A

68、END,例:已知 VAR單元內(nèi)有一變量X,請(qǐng)按右上式編程求Y值,并送入FUNC單元。 求解:(1) 先分支后賦值 ORG 0100H VAR DATA 30H FUNC DATA 31H MOV A, VAR ; A←X JZ DONE ; 若X=0,則DONE JNB

69、 ACC.7, POSI ; 若X>0,則POSI MOV A, #0FFH ; 若X<0,則A←-1 SJMP DONE ; 轉(zhuǎn)DONEPOSI: MOV A, #01H ; A←1 DONE: MOV FUNC, A ; 存入FUNC單元 SJMP $ END,2.分支程序設(shè)計(jì)

70、,(2)先賦值后分支 ORG 0100H VAR DATA 30H FUNC DATA 50H MOV A, VAR ; A←X JZ DONE ; 若X=0,則DONE MOV R0, #0FFH ; 若X≠0,則R0 ← -1 JB ACC.7, NEG ;

溫馨提示

  • 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ù)僅提供信息存儲(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)論