單片機匯編語言及程序設計_第1頁
單片機匯編語言及程序設計_第2頁
單片機匯編語言及程序設計_第3頁
單片機匯編語言及程序設計_第4頁
單片機匯編語言及程序設計_第5頁
已閱讀5頁,還剩69頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

MCS-51指令格式匯編語言級指令格式:

[標號:]操作碼[操作數(shù)]

[;注釋]例:LB:MOVA,R2;A←(R2)標號——指令的標識,表示指令的首地址;操作碼——操作的命令(指示機器執(zhí)行何種操作)操作數(shù)——參與操作的數(shù)據(jù)(是操作碼的補充),分目的操作數(shù)和源操作數(shù)。注釋——對指令功能的說明,便于程序閱讀和維護,不參與操作。機器語言級指令格式:機器語言指令是一種二進制代碼,具體包含兩個基本的部分:操作碼和操作數(shù)。機器語言分為單字節(jié)、雙字節(jié)和三字節(jié)指令,具體格式分別為:單字節(jié)指令:例:MOVA,R0對應的機器語言指令為:E8H雙字節(jié)指令:例:MOVA,20H對應的機器語言指令為:E520H三字節(jié)指令:例:MOV20H,#46H對應的機器語言指令為:752046H操作碼操作碼操作數(shù)操作碼第一操作數(shù)第二操作數(shù)一、MCS—單片機尋址方式*二、單片機常用指令類型*三、單片機指令系統(tǒng)的幾個特點*四、單片機中的偽指令*五、匯編語言程序設計-舉例*本章主要內(nèi)容一、MCS-51單片機尋址方式尋址方式的“尋址”:是指尋找參與操作的數(shù)據(jù)所在的存儲器單元的地址。注意:MCS-51指令系統(tǒng)的尋址方式及其對應的尋址空間序號方式常用的變量尋址空間

1立即尋址

2直接尋址內(nèi)部RAM的低128B和特殊功能寄存器

3寄存器尋址R7-R0,A,B,AB,DPTR

4寄存器間接尋址@R0,@R1,SP@R0,@R1@DPTR內(nèi)部RAM外部RAM0000H~00FFH外部RAM/ROM0000H~FFFFH

5相對尋址PC+偏移量程序存儲器

6變址尋址@A+DPTR,@A+PC程序存儲器

7位尋址內(nèi)部RAM和特殊功能寄存器的位地址空間1、立即尋址特點:·指令碼中直接含有操作數(shù)本身(立即數(shù))·立即數(shù)可以是8位或16位·立即數(shù)通常用#data或#data16表示·立即數(shù)只能作為源操作數(shù)·立即數(shù)同操作碼一起存放在程序存儲器中

例如:MOVA,#3BH;A←3BH MOVDPTR,#1828H;DPTR←#1828H程序存儲器PC→74H3BH累加器A3BH2、直接尋址特點:·指令碼中含有操作數(shù)地址(8位二進制數(shù));·可用于直接尋址的存儲空間是:片內(nèi)RAM的低128字節(jié)和特殊功能寄存器SFR;·直接尋址通常用direct(操作數(shù)所在存儲單元的物理地址)表示; 例: MOV40H,A;(40H)←A·對片內(nèi)高128B的RAM,direct既可以使用SFR的物理地址,也可以用SFR的名稱符號。 MOVA,81H;A←(81H)

MOVA,SP;A←SP,可讀性好

程序存儲器PC→F5H40H累加器A片內(nèi)RAM40H3BH演示MOV40H,A;(40H)←A3BH3、寄存器尋址特點:·操作數(shù)在R7-R0,A,B,AB,DPTR中,指令碼中含有該操作數(shù)的寄存器號;

·操作數(shù)位于片內(nèi)RAM中

MOVA,Rn

;A←RnINCRn

;Rn←Rn+1程序存儲器PC→00001000PSWRS1RS0片內(nèi)RAM00H3BH00000A3BH0004、寄存器間接尋址特點:·指令碼中含有存放該操作數(shù)地址的寄存器號;

·間址寄存器采用@R0,@R1,@DPTR表示;·@R0,@R1用于對片內(nèi)RAM和外部RAM(0000H~00FFH)尋址,@DPTR的尋址范圍是片外ROM/RAM的全部64KB區(qū)域;·寄存器間址指令不能用于尋址SFR

MOVA,@R0;A←(R0)R03A片內(nèi)RAM3AH3BHA3BH5、變址尋址特點:·指令碼中隱含有作為基地址寄存器用的數(shù)據(jù)指針DPTR或程序計數(shù)器PC(存放基地址);·指令碼中也隱含有累加器A(A中存放地址偏移量,00H~FFH范圍內(nèi)的無符號數(shù));·尋址空間是程序存儲器。

MOVCA,@A+PC;A←(A+PC)

MOVCA,@A+DPTR;A←(A+DPTR)例:假設A中的內(nèi)容為05H,DPTR的內(nèi)容為0400H,程序存儲器0405H單元的內(nèi)容為2DH,則

MOVCA,@A+DPTR執(zhí)行后A的內(nèi)容為2DH

022000HAIRDPTRALUROM2000H932001HX12002HX22002HX293演示:MOVCA,@A+DPTR;A←(A+DPTR)6、相對尋址特點:·相對轉(zhuǎn)移指令的指令碼中含有相對地址偏移量;·相對轉(zhuǎn)移指令分為:短轉(zhuǎn)移指令和長轉(zhuǎn)移指令(分別為雙字節(jié)和三字節(jié));·PC的當前值+相對地址偏移量rel=下一條要執(zhí)行指令的地址;·PC的當前值是指相對轉(zhuǎn)移指令從程序存儲器中取出后的PC值。

2000H

8054HSJMPrel;PC←PC+2+rel

2000HAPCALUROM2000H80H2001H54H2002H24H2003H05H2056H74H05H2002H54H演示:2000H8054HSJMP54H;PC←2056H2056H7、位尋址特點:·位尋址指令的指令碼中含有位地址;·位尋址指令中位地址用bit表示(字節(jié)地址direct);·位尋址區(qū):片內(nèi)RAM位尋址區(qū)20H~2FH和11個SFR;·位地址的表示方法:

MOVC,7FH;Cy←(7FH)MOVC,2FH.7;Cy←(7FH)

MOVC,ACC.7;Cy←ACC.7

A1BIT7FH——位地址賦值偽指令

MOVC,A1;Cy←2FH.7,A1

為符號位地址*RAM2FH20H7FH00H1演示:D200HSETB00H;00H←1二、單片機常用指令類型數(shù)據(jù)傳送指令(28條)

將源地址中操作數(shù)傳送到目的地址的指令。算數(shù)運算指令(24條)

對兩個操作數(shù)進行加、減、乘、除等運算的指令。邏輯操作和環(huán)移指令(25條)

對兩個操作數(shù)進行邏輯乘、邏輯加、邏輯取反和異或等操作;

對累加器A中數(shù)進行環(huán)移(左環(huán)移、右環(huán)移,帶進位、不帶進位)控制轉(zhuǎn)移指令(17條)

條件轉(zhuǎn)移、無條件轉(zhuǎn)移、調(diào)用和返回等指令(改變PC中值為目標)位操作指令(布爾變量操作指令)(17條)

位傳送、位置位、位運算和位控制轉(zhuǎn)移指令。1、數(shù)據(jù)傳送指令(28條)此類指令不影響Cy,AC,OV標志,只影響奇偶標志P。片內(nèi)RAM單元之間的數(shù)據(jù)傳送指令(15條)

指令的源操作數(shù)和目的操作數(shù)地址都在單片機內(nèi)部,是片內(nèi)RAM或SFR的地址。·立即尋址型傳送指令MOVA,#data

;A←dataMOVRn,#data

;Rn←dataMOV@Ri,#data

;(Ri)←dataMOVdirect,#data

;direct←data1、數(shù)據(jù)傳送指令(28條)·直接尋址型傳送指令指令操作碼中至少含有一個操作數(shù)的直接地址。MOVA,direct

;A←(direct)MOVdirect,A;direct←AMOVRn,direct

;Rn←(direct)MOV@Ri,direct;(Ri)←(direct)MOVdirect2,direct1

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

;A←Rn MOVRn,A

;Rn←AMOVdirect,Rn

;direct←Rn

1、數(shù)據(jù)傳送指令(28條)·寄存器間址型傳送指令 MOVA,@Ri

;A←(Ri)MOV@Ri,A

;(Ri)←AMOVdirect,@Ri

;direct←(Ri)1、數(shù)據(jù)傳送指令外部數(shù)據(jù)傳送指令(外部RAM/ROM)

·16位數(shù)傳送指令MOVDPTR,#data16

;DPTR←data1616位立即數(shù)是外部RAM/ROM的地址,其高8位送入DPH,低8位送入DPL?!ね獠縍OM的字節(jié)傳送指令(查表指令)MOVCA,@A+DPTR

;A←(A+DPTR)遠程查表MOVCA,@A+PC

;PC←PC+1,A←(A+PC)

近程查表1、數(shù)據(jù)傳送指令·外部RAM的字節(jié)傳送指令

實現(xiàn)外部RAM和累加器A之間的數(shù)據(jù)傳送。MOVXA,@Ri

;A←(Ri)MOVX@Ri,A;(Ri)←AMOVXA,@DPTR

;A←(DPTR)MOVX@DPTR,A;(DPTR)←A

注:前面兩條指令訪問外部RAM:0000H~00FFH

后面兩條指令訪問外部RAM:0000H~FFFFH1、數(shù)據(jù)傳送指令堆棧操作指令

PUSHdirect

;SP←SP+1,(SP)←(direct)POPdirect

;direct

←(SP),SP←SP-1

堆棧操作指令是直接尋址指令,書寫格式為: PUSHACC PUSH00H POPACC POP00H注:彈出指令不會改變堆棧區(qū)存儲器單元中的內(nèi)容。1、數(shù)據(jù)傳送指令數(shù)據(jù)交換指令

XCHA,Rn

;A?Rn

XCHA,direct;A?(direct)XCHA,@Ri;A?(Ri)XCHDA,@Ri;A3~0?(Ri)3~0注:只是將累加器A中的內(nèi)容和片內(nèi)RAM單元內(nèi)容相互交換。2、算術運算指令加法指令(13條)·不帶Cy加法指令

ADDA,Rn;A←A+Rn ADDA,Direct;A←A+(Direct) ADDA,@Ri;A←A+(Ri) ADDA,#data;A←A+data·對PSW標志位均有影響;·計算機總是按帶符號數(shù)法則運算,產(chǎn)生PSW標志位?!蓚€帶符號數(shù)相加,運算結果是否溢出應判斷OV標志位。2、算術運算指令·帶Cy加法指令

ADDCA,Rn;A←A+Rn+Cy ADDCA,Direct;A←A+(Direct)+Cy ADDCA,@Ri;A←A+(Ri)+Cy ADDCA,#data;A←A+data+Cy·

Cy——指令執(zhí)行前的Cy值?!こS糜诙嘧止?jié)無符號數(shù)的加法運算2、算術運算指令·加1指令

INCA

;A←A+1 INCRn;Rn←Rn+1 INCDirect;Direct←(Direct)+1 INC@Ri;(Ri)←(Ri)+1INCDPTR;DPTR←DPTR+1只影響奇偶校驗標志位2、算術運算指令減法指令(8條)·帶Cy減法指令

SUBBA,Rn;A←A–Rn-Cy SUBBA,Direct;A←A-(Direct)-Cy SUBBA,@Ri;A←A-(Ri)-Cy SUBBA,#data;A←A–data-Cy·對PSW標志位均有影響;·計算機總是按帶符號數(shù)法則運算,產(chǎn)生PSW標志位?!蓚€帶符號數(shù)相減,運算結果是否溢出應判斷OV標志位。2、算術運算指令·減1指令

DECA;A←A-1 DECRn;Rn←Rn-1 DECDirect;Direct←(Direct)-1 DEC@Ri;(Ri)←(Ri)-1只影響奇偶校驗標志位2、算術運算指令十進制調(diào)整指令(1條)

DAA;若AC=1或A3~A0>9,則A←A+06H若Cy=1或A7~A4>9,則A←A+60H·通常緊跟在加法指令后使用,對A中的操作數(shù)進行十進制調(diào)整。·

專用于實現(xiàn)BCD運算。

2、算術運算指令乘法、除法指令(2條)

MULAB;A×B=BA,形成標志對標志位的影響:Cy=0;若B不等于0,則OV=1,否則OV=0;

P由A中1的奇偶性確定。

DIVAB;A÷B=A…B,形成標志對標志位的影響:Cy=0;執(zhí)行過程中,若發(fā)現(xiàn)B等于0,則OV=1;

P由A中1的奇偶性確定。3、邏輯運算指令(25條)邏輯操作指令共25條,所有指令均按位進行操作,無進位,一般不影響標志位?!み壿嬇c運算指令

ANLA,Rn;A←A∧Rn ANLA,direct;A←A∧(direct)

ANLA,@Ri;A←A∧(Ri)

ANLA,#data;A←A∧data ANLdirect,A;direct←

(direct)

∧A ANLdirect,#data;direct←

(direct)

∧data3、邏輯運算指令(25條)·邏輯或運算指令

ORLA,Rn;A←A∨

RnORLA,direct;A←A∨(direct)

ORLA,@Ri;A←A∨(Ri)ORLA,#data;A←A∨

data ORLdirect,A;direct←

(direct)

A ORLdirect,#data;direct←

(direct)

data3、邏輯運算指令(25條)·邏輯異或運算指令

XRLA,Rn;A←A⊕

Rn XRLA,direct;A←A⊕(direct)

XRLA,@Ri;A←A⊕(Ri)

XRLA,#data;A←A⊕

data XRLdirect,A;direct←

(direct)

A XRLdirect,#data;direct←

(direct)

data

3、邏輯運算指令(25條)

·累加器A清零和取反指令

CLRA;A←0

CPLA;A←A

·移位指令

RLA;A7←A6←…..←A0←A7 RRA;A0→A7→…..→A1→A0 RLCA;CY←A7←A6←…..←A0←CY RRCA;CY→A7→…..→A0→CY SWAPA;高4位和低4位交換指令4、控制轉(zhuǎn)移指令(17條)無條件轉(zhuǎn)移指令

LJMPaddr16;PC←addr16長轉(zhuǎn)移指令:64K范圍內(nèi)轉(zhuǎn)移指令AJMPaddr11;PC←PC+2,PC10~PC0←addr11

絕對轉(zhuǎn)移指令:2K范圍內(nèi)轉(zhuǎn)移指令SJMPrel;PC←PC+2,PC←PC+rel

短轉(zhuǎn)移指令:-126-129范圍內(nèi)轉(zhuǎn)移指令,rel的取值范圍-128-127JMP@A+DPTR;PC←A+DPTR

間接轉(zhuǎn)移指令:變址轉(zhuǎn)移指令,目標轉(zhuǎn)移地址的基地址送入DPTR4、控制轉(zhuǎn)移指令(17條)條件轉(zhuǎn)移指令

·累加器A判零轉(zhuǎn)移指令 JZrel;若A=0,則

PC←PC+2+rel,否則PC←PC+2JNZrel;

注意:都是雙字節(jié)相對轉(zhuǎn)移指令,rel為相對地址偏移量。

4、控制轉(zhuǎn)移指令(17條)·比較不相等轉(zhuǎn)移指令CJNEA,#data,rel;若A=data,則PC←PC+3

若A不等于data,則PC←PC+3+rel

形成Cy標志。CJNEA,direct,rel;CJNERn,#data,rel;CJNE@Ri,#data,rel;注意:指令的相對轉(zhuǎn)移范圍為-125~+130

4、控制轉(zhuǎn)移指令(17條)

·減1非零轉(zhuǎn)移指令

DJNZRn,rel;若Rn-1不等于0,則PC←PC+2+rel若Rn-1=0,則PC←PC+2DJNZdirect,rel;若,(direct)-1不等于0,則PC←PC+3+rel若,(direct)-1=0,則PC←PC+3注意:條件轉(zhuǎn)移指令均為相對轉(zhuǎn)移指令,因此指令的轉(zhuǎn)移范圍十分有限。

4、控制轉(zhuǎn)移指令(17條)子程序調(diào)用和返回指令

·短調(diào)用指令ACALLaddr11;PC←PC+2SP←SP+1,(SP)←PC7~PC0SP←SP+1,(SP)←PC15~PC8PC10~0←addr11

注意:(1)短調(diào)用指令也稱為絕對調(diào)用指令;

(2)本調(diào)用指令應與被調(diào)用子程序起始地址在同一個2KB范圍內(nèi)。4、控制轉(zhuǎn)移指令(17條)·長調(diào)用指令LCALLaddr16;PC←PC+3SP←SP+1,(SP)←PC7~PC0SP←SP+1,(SP)←PC15~PC8PC15~0←addr16

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

PC7~PC0←(SP),SP

←SP-1RETI;PC15~PC8←(SP),SP←SP-1,

PC7~PC0←(SP),SP

←SP-1

返回斷點的同時,釋放中斷邏輯,接受新的中斷請求·空操作指令:NOP;PC←PC+15、布爾變量操作指令(17條)MCS-51單片機的一個最大的特點就是在硬件結構上有一個布爾處理器,對應這個處理器,指令系統(tǒng)中設計了處理布爾變量的指令子集。該位操作指令共17條,所有的位操作指令均采用位尋址方式,在指令中位地址可用四種方式表示:

(1)直接尋址方式(2)點操作符表示方式(3)位名稱方式(4)標號表示(自定義地址)方式

位傳送指令

MOVC,bit

MOVbit,C其中:C為PSW中的Cy;bit為布爾變量的位地址。這組指令的其中一個操作數(shù)必須是進位標志C,另一個可以是位地址。

位置位和復位指令·位置位指令 SETBC ;1→Cy SETBbit ;1→(bit)·位復位指令 CLRC ;0→Cy CLRbit ;0→(bit)

位邏輯運算指令·位邏輯“與”指令 ANLC,bit ;(C)∧(bit)→C ANLC,/bit;(C)∧/(bit)→C·位邏輯“或”指令 ORLC,bit ;(C)∨(bit)→C ORLC,/bit;(C)∨/(bit)→C·位邏輯“非”指令 CPLC ;/(C)→C CPLbit ;/(bit)→bit

位條件轉(zhuǎn)移指令·累加器cy狀態(tài)判斷轉(zhuǎn)移指令

JC rel

;若Cy=1,則(PC)+2+rel→PC

;若Cy=0,則(PC)+2→PCJNC rel

;若Cy=0,則(PC)+2+rel→PC

;若Cy=1,則(PC)+2→PC·位狀態(tài)判斷轉(zhuǎn)移指令

JB bit,rel

;若(bit)=1,則(PC)+3+rel→PC ;若(bit)=0,則(PC)+3→PC JNB bit,rel

;若(bit)=0,則(PC)+3+rel→PC

;若(bit)=1,則(PC)+3→PCJBC bit,rel

;若(bit)=1,則(PC)+3+rel→PC,0→bit

;若(bit)=0,則(PC)+3→PC三、單片機指令系統(tǒng)的幾個特點指令中的數(shù)據(jù)表示:數(shù)據(jù)前加#訪問外部數(shù)據(jù)存儲器指令:MOVX

訪問外部數(shù)據(jù)存儲器使用數(shù)據(jù)指針:DPTR查表指令:MOVCA,@A+DPTR

MOVCA,@A+PC調(diào)用和轉(zhuǎn)移指令都有幾種:

ACALLaddr11絕對調(diào)用(2kB內(nèi))

LCALLaddr16長調(diào)用

AJMPaddr11絕對跳轉(zhuǎn)(2kB內(nèi))

LJMPaddr16長跳轉(zhuǎn)

SJMPrel相對跳轉(zhuǎn)CJNE(目的),(源),rel

目的字節(jié)與源字節(jié)比較,不等,則轉(zhuǎn)到rel處執(zhí)行,否則順序執(zhí)行。DJNZRn,rel

和DJNZdirect,relPUSH和POP指令為單字節(jié)操作,且棧指針向下。布爾(位)處理指令舉例:

MOVP1.2,C SETBP1.5 JBACC.3,label CPLC CLRP1.6 JNBP1.7,lebel四、單片機中的偽指令名詞解釋:

匯編程序——是一種由制造廠家或軟件公司提供的實用

程序,能把“匯編語言源程序”翻譯成機

器語言,供CPU執(zhí)行。例如:MBUG

匯編語言源程序——設計者編寫的程序匯編語言是匯編語言語句的集合,是匯編語言源程序的基本元素。匯編語言語句分為指令性語句和指示性語句。四、單片機中的偽指令指令性語句:指采用指令助記符構成的匯編語言語句,是匯編語言語句的主體。每條指令性語句都有對應的指令代碼(機器碼)MCS-51單片機有111條指令性語句指示性語句(又稱偽指令):不是真正的指令。不會在匯編時產(chǎn)生機器代碼匯編時供匯編程序識別和執(zhí)行,對匯編過程進行某種控制MCS-51中常用的偽指令有8條四、單片機中的偽指令偽指令——是在機器匯編時供匯編程序識別和執(zhí)行的命令,用于對匯編的過程進行控制。ORG

指令代碼存儲起始地址

ORG2000HSTART:MOVA,#64H :

ENDEND

結束匯編偽指令

每個源程序只能有一個END,且在程序的末尾。四、單片機中的偽指令EQU

等值(賦值)語句 字符名稱EQU數(shù)據(jù)或匯編符

DAPORTEQU0C010H

注:先定義后使用,定義字符名稱不能在表達式中使用。DATA

數(shù)據(jù)地址賦值語句

字符名稱DATA表達式AADATA35H注:表達式可為數(shù)據(jù)或地址,也可包含已定義的“字符名稱”,但不能是匯編符號。四、單片機中的偽指令DB——定義字節(jié)[標號:]DB項或項表把“項或項表”中的數(shù)據(jù)依次存放到以左邊標號為起始地址的存儲單元中

例如:ORG0600HSTART:MOVA#64H…

TAB:DB3FH,68,01011010B,’5’,’A’…END四、單片機中的偽指令DW——定義雙字節(jié)數(shù)(字)(高8位放低地址單元)

[標號:]DW項或項表

例如:ORG1600HSTART:MOVA#30H…ORG1620H

HETAB:DW3F08H,68H,15END

匯編后:(1620H)=3FH(1622H)=00H(1624H)=00H(1621H)=08H(1623H)=68H(1625H)=0FH四、單片機中的偽指令DS——定義存儲空間

[標號:]DS表達式從標號地址開始預留一定數(shù)量的內(nèi)存單元

例如:

SPC:DS08H

BIT——位地址賦值 字符名稱BIT位地址

例如:A1BITP3.4A2BIT00H注:BIT語句定義過的字符名稱是一個符號位地址。五、匯編語言程序設計-舉例匯編語言程序設計步驟擬制設計任務書:程序功能、技術指標、精度等級

實施方案、工程進度、所需設備、研制費

用和人員分工等

建立數(shù)學模型:可以是表達式,推理和判斷,運行

狀態(tài)的模擬等確立算法:同一數(shù)學模型往往有幾種不同的算法繪制程序流程圖:設計程序結構編制匯編語言源程序上機調(diào)試匯編語言程序的匯編將匯編語言源程序轉(zhuǎn)換為機器語言的過程稱為“匯編”??梢圆捎靡韵聝煞N手段進行匯編人工匯編——查手冊機器匯編——匯編程序例拆字程序:設30H中存放待處理的數(shù)據(jù),要求將其拆成兩個字節(jié)數(shù),存放在31H和32H(高位)中。

例如:59H→05H和09HORG0500HCHAIZ:MOVR1,#32H MOVR0,#30H MOVA,@R0 ANLA,#0F0H RRA RRARRA1.簡單程序設計注:4個RRA指令可以用SWAPA指令代替。 RRAMOV@R1,A DECR1 MOVA,@R0 ANLA,#0FH MOV@R1,A END例將一個字節(jié)BCD碼變成相應的ASCAII碼,存入兩個RAM單元中。設:BCD碼存在內(nèi)部RAM30H單元中,變換成ASCAII碼存入31H和32H中。

ORG

0500H MOVR0,#32H MOV@R0,#00H MOVA,30H XCHDA,@R0 ORL32H,#30H SWAPA ORLA,#30H MOV31H,A END或: ORG0500H MOVR0,#30H MOVA,@R0 MOVB,A ANLA,#0FH ADDA,#30H MOV32H,A MOVA,B SWAPA ANLA,#0FH ADDA,#30H MOV31H,A END例:已知VAR單元內(nèi)有一變量X,請按右上式編程求Y值,并送入FUNC單元。

求解:(1)

先分支后賦值ORG0100HVARDATA30HFUNCDATA31HMOVA,VAR;A←X JZDONE;若X=0,則DONE JNBACC.7,POSI;若X>0,則POSI MOVA,#0FFH;若X<0,則A←-1 SJMPDONE;轉(zhuǎn)DONE POSI:MOVA,#01H;A←1DONE:MOVFUNC,A;存入FUNC單元 SJMP$ END2.分支程序設計

(2)先賦值后分支ORG0100HVARDATA30HFUNCDATA50HMOVA,VAR;A←X JZDONE;若X=0,則DONE MOVR0,#0FFH;若X≠0,則R0←-1 JBACC.7,NEG;若X<0,則NEG MOVR0,#01H;若X>0,則R0←1 NEG:MOVA,R0;A←R0DONE:MOVFUNC,A;存入FUNC單元 SJMP$ END3.循環(huán)程序設計循環(huán)程序的組成:初始化:變量、計數(shù)器、次數(shù)

循環(huán)體:循環(huán)處理、循環(huán)控制

循環(huán)結束處理:循環(huán)程序的類型:先處理后判斷;先判斷后處理例:已知數(shù)據(jù)塊長度L,編程求累加和求解:(1)先處理后判斷ORG0200HLENDATA20HSUMDATA21HBLOCKDATA22H CLRA;A←0MOVR2,LEN;R2←LMOVR1,#BLOCK;R1←BLOCKNEXT:ADDA,@R1;A←A+(R1)INCR1;R1←R1+1DJNZR2,NEXT;R2-1≠0,則NEXTMOVSUM,A;存累加和 SJMP$ END(2)先判斷后處理ORG0200HLENDATA20HSUMDATA21HBLOCKDATA22H CLRA;A←0MOVR2,LEN;R2←LMOVR1,#BLOCK;R1←BLOCKINCR2;R2←R2+1SJMPCHECKLOOP:ADDA,@R1;A←A+(R1)INCR1;R1←R1+1CHECK:DJNZR2,LOOP;R2-1≠0,則LOOPMOVSUM,A;存累加和 SJMP$ ENDDPTR作基址的查表指令

MOVCA,@A+DPTR;A←(A+DPTR)

步驟:(1)DPTR←所查表的始址(2)A←所查表的項數(shù)(3)執(zhí)行查表指令PC作基址的查表指令

MOVCA,@A+PC;A←(A+PC)

步驟:(1)A←所查表的項數(shù)(2)查表指令前應放如下指令 ADDA,#data

其中,data=查表指令到表始址間的指令字節(jié)數(shù)(3)執(zhí)行查表指令4.查表程序設計例:已知R0中有1個0-F的數(shù),編程將其變換成ASCII碼。求解:(1)采用DPTR作基址ORG3000H MOVDPTR,#ASCTAB;DPTR←ASCTABMOVA,R0;A←項數(shù)ANLA,#0FH;屏蔽高4位MOVCA,@A+DPTR;A←結果

溫馨提示

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

評論

0/150

提交評論