單片機課件:第3章 指令系統(tǒng)及匯編程序設(shè)計_第1頁
單片機課件:第3章 指令系統(tǒng)及匯編程序設(shè)計_第2頁
單片機課件:第3章 指令系統(tǒng)及匯編程序設(shè)計_第3頁
單片機課件:第3章 指令系統(tǒng)及匯編程序設(shè)計_第4頁
單片機課件:第3章 指令系統(tǒng)及匯編程序設(shè)計_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第3章指令系統(tǒng)及

匯編程序設(shè)計2本章內(nèi)容3.1指令格式3.2尋址方式3.3指令系統(tǒng)3.4常用偽指令3.5匯編程序設(shè)計 3.6程序設(shè)計實例3機器語言用二進制數(shù)表示指令,難以記憶。為了便于記憶,人們使用助記符、符號和數(shù)字表示指令。指令格式:Label:指令操作數(shù)1,操作數(shù)2,操作數(shù)3;注釋說明: #data—表示立即數(shù) Ri----i=0,1,表示內(nèi)部RAM指針 Rn---n=0~7,表示工作寄存器 @---表示指針變量,如@R0,@DPTR3.1指令格式43.2.1七種尋址方式1、立即尋址:MOVA,#332、寄存器尋址:數(shù)據(jù)在寄存器(A、B、Rn、DPTR)中,如MOVx,R0 ADDA,R0

3、直接尋址:給出片內(nèi)RAM的地址

如 MOVA,40H4、寄存器間接尋址(指針Ri、DPTR) 指針指向片外RAM或外設(shè) 如:MOVA,@R0

MOVXA,@DTPR3.2尋址方式55、變址尋址 用于取ROM中的常數(shù),也稱為查表指令: MOVCA,@A+DPTR

;6、位尋址 只能用于位資源,如: SETB20H; CLR20H.07、相對尋址 只用于相對轉(zhuǎn)移指令中,如SJMPrel

JCrel3.2尋址方式(續(xù))6MSC-51的111條指令分成五類:數(shù)據(jù)傳送類指令(28條)算術(shù)運算類指令(24條)邏輯操作類指令(25條)控制轉(zhuǎn)移類指令(17條)位操作類指令(17條)3.38051指令系統(tǒng)7指令符號有MOV、MOVC、MOVX、PUSH、POP、XCH、XCHD1.A為目的數(shù)

MOVA,Rn; MOVA,direct MOVA,@Ri; MOVA,#data2.Rn為目的數(shù)

MOVRn,A; MOVRn,direct MOVRn,#data例:(A)=78H,(R5)=47H,(70H)=0F2H MOVR5,A MOVR5,70H MOVR5,#0A3H 3.38051指令系統(tǒng)-數(shù)據(jù)傳送類指令(1/4)83.直接地址為目的數(shù)

MOVdirect,A; MOVdirect,Rn MOVdirect,direct; MOVdirect,@Ri MOVdirect,#dada4.@Ri為目的數(shù)

MOV@Ri,A; MOV@Ri,direct MOV@Ri,#data5.DPTR為目的(16位數(shù))

MOVDPTR,#data163.38051指令系統(tǒng)-數(shù)據(jù)傳送類指令(2/4)93.38051指令系統(tǒng)-數(shù)據(jù)傳送類指令(3/4)106.片外RAM(外設(shè))傳送指令,屬于總線操作指令

MOVXA,@DPTR

MOVX@DPTR,A7.

ROM數(shù)據(jù)查表指令

MOVCA,@A+DPTR9.數(shù)據(jù)交換指令

XCH;累加器與RAM數(shù)據(jù)互換

SWAPA;累加器高低4位互換10.堆棧指令

PUSHACC

POPACC3.38051指令系統(tǒng)-數(shù)據(jù)傳送類指令(4/4)11主要指令:ADD(加法)、ADDC(帶進位加法)、SUBB(帶借位減法)INC(自加1)、DEC(自減1) DAA;BCD加法調(diào)整 MULAB;A*B,積高8位在B中,低8位在A中 DIVAB;A/B,商在A中,余數(shù)在B中規(guī)定:1、所有雙目算術(shù)指令均要通過A;2、INC、DEC用于指針加減1,不影響CY,對DPTR只有加1,不能減1;3、DAA只對A內(nèi)容作BCD調(diào)整。例1:十進制加法調(diào)整指令設(shè)(A)=56H,(R0)=67H,CY=1 ADDCA,R0 DAA3.38051指令系統(tǒng)-算術(shù)運算類指令12主要指令:1、兩數(shù)邏輯操作(典型形式為A與變量)

ANL邏輯與、ORL邏輯或、XRL邏輯異或

例:ANLA,x;設(shè)x中內(nèi)容為55H,A為0xF2、對累加器A的清零、求反指令

CLR A(A清零) CPL A(A取反)3、累加器A移位指令

RL

A(循環(huán)左移) RR A(循環(huán)右移)

RLC

A(帶進位循環(huán)左移) RRC A(帶進位循環(huán)右移)

3.38051指令系統(tǒng)-邏輯操作類指令131、無條件轉(zhuǎn)移:AJMP、LJMP、SJMP、JMP@A+DPTR(間接轉(zhuǎn)移)2、條件轉(zhuǎn)移: JZ:判斷A值為0轉(zhuǎn)移、JNZ:判斷A值不為0轉(zhuǎn)移

3、比較不相等轉(zhuǎn)移CJNE

CJNEA,#DATA,LP; CJNEA,DATA,LP CJNERn,#DATA,LP; CJNE@Ri,#DATA,LP3.38051指令系統(tǒng)-控制轉(zhuǎn)移類指令(1/2)144、循環(huán)控制DJNZRn,rel

DJNZ主要用于循環(huán)結(jié)構(gòu)控制,如延時程序5、子程序調(diào)用LCALL,ACALL子程序返回指令RET

中斷返回指令RETI3.38051指令系統(tǒng)-控制轉(zhuǎn)移類指令(2/2)15例1:設(shè)計一個約1ms的延時子程序。

movr7,#2 //1個周期Lp: movr6,#0 //1個周期 djnzr6,$ //2個周期,內(nèi)層循環(huán),256*2個周期

djnzr7,lp //2個周期,外層循環(huán),2(256*2+1)個周期

RET //2個周期共花費了____個機器周期?觀察延時程序在keil中的運行時間3.38051指令系統(tǒng)-控制轉(zhuǎn)移類指令1ms的延時子程序16主要指令:1、位傳送指令:MOVC,BIT MOVC,/BIT ;取反再傳送

MOVBIT,C2、位修正指令:CLR、SETB、CPL(取反)3、位與ANL、位或ORL,都要CY參與

ANLC,BIT ANLC,/BIT ;取反再邏輯與4、位轉(zhuǎn)移指令 JC--CY=1轉(zhuǎn)移;JNC--CY=0轉(zhuǎn)移; JBbit,LP;bit為1轉(zhuǎn)移

JNBbit,LP;bit為0轉(zhuǎn)移主要用于控制開關(guān)量,如LED、電機等。例:3.38051指令系統(tǒng)-位操作類指令17匯編語言中的對象18指令系統(tǒng)小結(jié)通過典型實例,掌握MCS-51的常用指令,初步學(xué)習(xí)用流程圖設(shè)計程序。常用指令: 傳送類: MOV、MOVX、MOVC、PUSH、POP

算術(shù)類: ADD、ADDC、INC、DEC

邏輯類: ANL、ORL、RL、RLC、CPL

控制轉(zhuǎn)移類:SJMP、LJMP、JB(JNB)、JC (JNC)、DJNZ、CJNE、 LCALL、RET、RETI

位操作類:SETB、CLR、CPL191、常用ORG、END、$等符號或偽指令組織程序

ORG100H中的的數(shù)字表示后面指令在ROM中的起始地址。2、用EQU定義常量,在KEIL中用DEFINE定義宏由指令和數(shù)據(jù)(即變量或常量)組成。3、ROM常數(shù)定義DB:定義1個或多個ROM字節(jié)型常數(shù)DW:定義1個或多個ROM雙字節(jié)型常數(shù),高在先,低在后3.4常用偽指令204、RAM數(shù)據(jù)定義字節(jié)變量、數(shù)組由偽指令data定義片內(nèi)RAM變量,如xdata20h片外RAM變量,如yxdata1000h位變量由偽指令bit定義如k1_statusbit20h3.4常用偽指令(續(xù))213.5匯編程序設(shè)計開發(fā)一個完整工程的過程:建立、修改一個或多個源文件匯編連接調(diào)試3.5程序設(shè)計---程序結(jié)構(gòu)(1/3)程序結(jié)構(gòu):順序結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、分支結(jié)構(gòu)。 對應(yīng)指令:JB、JNB、DJNZ等

C51:if、while編寫程序的依據(jù):算法、流程圖。3.5程序設(shè)計---程序結(jié)構(gòu)(2/3)單片機程序從宏觀看,是一個無限循環(huán)。對應(yīng)指令:SJMP、LJMP。C51:while(1)3.5程序設(shè)計---程序結(jié)構(gòu)(3/3)三種典型的程序結(jié)構(gòu)流程圖。253.6程序設(shè)計實例(1/3)例:

搶答器1.K1、K2、K3分別接P1.0、P1.1、P1.2,低電平代表按鍵閉合。2.發(fā)光二極管D1、D2、D3分別接P3.0、P3.1、P3.2,高電平驅(qū)動LED發(fā)光。26例:

搶答器-符號定義方法(2/3)#define K1 P1.0#define K2 P1.1#define K3 P1.2#define RED_LED P3.0#define GREEN_LED P3.1#define YELLOW_LED P3.2#define LED_ON SETB#define LED_OFF CLR#define IF_KEY_ON JNB#define IF_KEY_OFF JB定義一個符號替代另一個符號(包括指令、常數(shù)、SFR、SBIT等)SETB-位置1CLR-位清0JB-位為1則跳轉(zhuǎn)JNB-位為0則跳轉(zhuǎn)27例1搶答器-源程序(3/3)LP: IF_KEY_ONK1,LED1 IF_KEY_ONK2,LED2 IF_KEY_ONK3,LED3 SJMP LPLED1: LED_ONRED_LE

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論