第4章 單片機指令系統(tǒng)_第1頁
第4章 單片機指令系統(tǒng)_第2頁
第4章 單片機指令系統(tǒng)_第3頁
第4章 單片機指令系統(tǒng)_第4頁
第4章 單片機指令系統(tǒng)_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

4單片機指令系統(tǒng)*4.1單片機指令系統(tǒng)4.2單片機尋址方式*4.3數據傳送類指令4.4算術運算類指令4.5邏輯操作類指令4.6控制轉移類指令*4.7位操作類指令4.1單片機指令系統(tǒng)4.1.1、單片機指令系統(tǒng)1、指令

①指令:規(guī)定計算機執(zhí)行特定操作的命令。②指令的表達形式:機器碼指令和匯編語言指令。機器碼指令:用二進制代碼表示的指令。匯編語言指令:用助計符來表示的指令。

2、單片機指令系統(tǒng)

單片機指令共有111條指令,使用了七種尋址方式,256個操作碼,42種助記符,33種功能,51種基本操作。按字節(jié)數分類,單字節(jié)指令49條,雙字節(jié)指令46條,三字節(jié)指令16條;按運算速度分類,單周期指令57條,雙周期指令52條,四周期指令2條。按照功能分:數據傳送類,算術運算、邏輯運算、控制轉移和位處理指令。4.1.2指令格式[標號:]操作碼助計符[目的操作數,][源操作數][;注釋]①標號:指令的符號地址,它通常代表一條程序語句(助計符指令)的機器代碼存儲單元的地址。②操作碼:表示指令進行何種操作,用助記符形式給出,助計符為英語單詞的縮寫。例如:ADD,MOV,PUSH,MOVX等。③操作數:指令操作的對象。操作數分為目的操作數和源操作數,任何指令的操作都是實現“從源操作數到目的操作數”。操作數可以是數字(地址、數據),也可以是標號或寄存器名。

④注釋:對指令功能的說明。

Back

4.2單片機尋址方式4.2.1符號注釋作用:描述單片機指令系統(tǒng)的功能。①Rn:選定當前寄存器區(qū)的寄存器R0~7。②@Ri:當前選中的工作寄存器組中可作為地址指針的兩個工作寄存器R0和R1。③#data:8位常數,即包含在指令中的8位常數。④#data16:16位常數,即包含在指令中的16位常數。⑤direct:8位片內RAM單元(包括SFR)的直接地址。⑥addr11:11位目的地址,用于ACALL和AJMP指令中。⑦addr16:16位目的地址,用于LCALL和LJMP指令中。⑧rel:補碼形式的8位地址偏移量,用于相對轉移指令中。⑨bit:片內RAM或特殊功能寄存器的直接尋址位地址。⑩@:間接尋址方式中,表示間址寄存器的符號。11.():表示某單元中的內容。12.$:4.2.2單片機尋址方式1、立即尋址指令的操作數緊跟在指令操作碼的后面,立即數就是存放在程序存儲器中的常數,用“#”號表示。例如:ADDA,#34H;把立即數34H與累加器A2、直接尋址操作數項給出的是參加運算的操作數的地址。直接地址只能用來表示SFR、內部數據存儲器以及位地址空間。其中,特殊功能寄存器和位地址空間只能用直接尋址方式來訪問。例如:MOVA,3AH3、寄存器尋址寄存器尋址是對R0~R7、累加器A、通用寄存器B、地址寄存器DPTR和進位CY進行操作。其中R0~R7由操作碼低3位的8種組合表示,ACC、B、DPTR及CY則隱含在操作碼中。例如:MOVA,R24、寄存器間接尋址操作數所指定的寄存器中存放的不是操作數本身,而是操作數的地址。用于訪問片內數據存儲器或片外數據存儲器()。在語法結構上要在其前加@。例如:MOVA,@R05、變址尋址(基址寄存器+變址間接尋址)

以16位寄存器DPTR(或PC)作為基址寄存器,累加器A作為變址寄存器。變址時,把兩者的內容相加,得到的結果作為操作數的地址。這種方式常用于查表。變址尋址方式有兩類:①以程序計數器當前值為基址,(當前PC值是指本條指令的首址),執(zhí)行這類指令時,先使PC指向下一條指令地址,然后再與累加器內容相加,形成變址尋址的地址。格式:MOVCA,@A+PC;(PC)=(PC)+1;(A)=(A)+(PC)②以數據指針DPTR為基址,以數據指針內容和累加器內容相加形成變址地址。格式:MOVCA,@A+DPTR;(A)=(A)+(DPTR)

6、相對尋址

以程序計數器PC的當前值為基址,加上相對尋址指令的字節(jié)長度,再加上指令中給定的偏移量rel的值.(rel是8位帶符號數,用二進制補碼表示),形成相對尋址的地址。例如:JNZ75H;JNZrel;JNZPRO1;7、位尋址

位尋址是指對片內RAM的位尋址區(qū)和某些可進行位尋址的特殊功能寄存器中的位進行操作的尋址方式。例如:SETB3DH注意:位地址與字節(jié)地址在形式上是一樣的,但有本質區(qū)別。

Back4.3數據傳送類指令4.3.1片內數據傳送類指令格式:MOV目的操作數,源操作數;

1、累加器為目的操作數的指令MOVA,Rn;寄存器尋址MOVA,direct;直接尋址MOVA,@R0;間接尋址MOVA,#data;立即尋址2、以寄存器Rn為目的操作數的指令MOVRn,AMOVRn,directMOVRn,#data

3、以直接地址為目的操作數的指令MOVdirect,AMOVdirect,RnMOVdirect,@RiMOVdirect,#dataMOVdirect,direct4、以間接地址為目的操作數的指令MOV@Ri,AMOV@Ri,directMOV@Ri,#date5、16位數據傳送指令MOVDPTR,#data164.3.2外部數據傳送類指令格式:MOVX目的操作數,源操作數;1、通過Ri間接尋址

MOVXA,@RiMOVX@Ri,A這兩條指令適應外部0B~256B數據區(qū)與累加器A進行數據交換。2、通過DPTR間接尋址

MOVXA,@DPTRMOVX@DPTR,A這兩條指令適應外部64KB數據區(qū)與累加器A進行數據交換。注意:外部數據與外部數據進行交換也只有通過累加器中轉。4.3.3查表指令

MOVCA,@A+PCMOVCA,@A+DPTR注:這兩條指令只適用于程序存儲器查表操作。查閱學生成績子程序:

MOVA,#5;學號MOVDPTR,#2000HORG1000HMOVCA,@A+DPTR;…PRO1:…RETPRO2:….RETORG2000HTABLE:DB80DB68DB70DB50DB90DB86……END

MOVA,#0;學號

ADDA,#3;對表格與查表指令差距進行修改1FFFH:MOVCA,@A+PCNOPNOP2000H:NOP2001H:DB80DB68DB70DB50DB90DB86……4.3.4堆棧操作指令

PUSHdirect;壓棧(SP)+1SP;指針自動加1(direct)(SP):把直接地址單元中的內容壓到以SP中內容作為地址的單元.

POPdirect;出棧((SP))direct把SP中內容作為地址,將該地址單元中的內容彈出給直接地址.(SP)-1SP;指針自動減14.3.5交換指令XCHA,RnXCHA,directXCHA,@RiXCHDA,@Ri;低4位互換SWAPA;A的低4位和高4位互換注意:數據的交換只有通過累加器A才能完成。

Back4.4算術運算類指令(+-*/INCDECDA)1、加法指令格式:ADDA,源操作數;功能:(A)+(源操作數)A功能:(A)+(源操作數)AADDA,RnADDA,directADDA,@RiADDA,#data2、帶進位加法指令ADDCA,源操作數;功能:(A)+(源操作數)+(CY)AADDCA,RnADDCA,directADDCA,@RiADDCA,#data

用于多字節(jié)加法的高字節(jié)加法運算.以上指令影響PSW中的標志位.我們可以根據CY和OV中的內容判斷無符號和有符號數加法的溢出情況.eg:將20H為首地址的連續(xù)兩個單元中的16位數和以30H為首地址的連續(xù)兩個單元中的16位數相加,結果放到以40H作為首地址的連續(xù)兩個單元中:MOVA,20H;把被加數低8位放A中ADDA,30HMOV40H,A;低8位和放40H中.MOVA,21H;把被加數高8位放A中ADDA,31HJCOVERMOV41H,A;低8位和放40H中.…OVER:…3、帶借位的減法指令式

SUBBA,RnSUBBA,directSUBBA,@RiSUBBA,#data注意事項:①減法運算在計算機中變成了補碼運算。②減法指令只有帶借位的,要實現不帶借位的減法操作,須將PSW中的CY清0。③減法指令同樣影響PSW中的位的值。MOVA,20HCLRCSUBBA,30HMOV40H,AMOVA,21HSUBBA,31HJBOV,OVERMOV41H,A4、乘法指令格式:MULAB;表示(A)×(B)這條指令的功能是把累加器A和寄存器B中兩個無符號數相乘,所得16位積低字節(jié)存放在A中,高字節(jié)存放在B中,若乘積大于FFH,則OV置1,,CY總是為0。5、除法指令格式:DIVAB;(A)÷(B)這條指令的功能是進行A除B的運算,A和B的內容均為8位無符號整數。執(zhí)行指令后,整數商存于A中,余數存于B中。執(zhí)行本指令后,標志CY和OV均復位,只有當除數為0時,OV標志置1,說明除法溢出。

6、加1指令(不影響標志位:FFH+1=00H)

INCAINCRnINCdirectINC@Ri

INCDPTR7、減1指令(不影響標志位00H-1=FFH)

DECADECRnDECdirectDEC@Ri8、二十進制調整指令:DAA

Back

4.5邏輯操作類指令1、邏輯“與”指令

ANLA,RnANLA,directANLA,@RiANLA,#dataANLdirect,AANLdirect,#data2、邏輯“或”指令ORLA,Rn

ORLA,directORLA,@RiORLA,#dataORLdirect,AORLdirect,#data3、邏輯“異或”指令XRLA,Rn

XRLA,directXRLA,@RiXRLA,#dataXRLdirect,AXRLdirect,#data4、循環(huán)移位指令

RLA;左移;RRA;右移;RLCA;帶進位左移;用于串行數據傳送設計RRCA;帶進位右移;用于串行數據傳送設計5、取反指令

CPLA

6、清“0”指令

CLRA

Back4.6控制轉移類指令1、無條件轉移指令

LJMPaddr16;64KB范圍之內跳轉(PC)目=addr16

AJMPaddr11;2KB范圍之內跳轉(PC)起+2與PC目的高5位相同,保證在2KB范圍

SJMPrel;256B范圍內跳轉(-128——127)(PC)起+2+rel=(PC)目在實際應用中,我將指令寫成:LJMPLOOPAJMPLOOPSJMPLOOP

2、條件轉移指令

JZrel;若A=0,則(PC)起+2+rel=(PC)目JNZrel;若A≠0,則PC+2+relCJNEA,direct,relCJNEA,#data,relCJNERn,#data,reLCJNE@Ri,#data,rel這四句語句執(zhí)行過程是這樣的:若“目的操作數”≠“原操作數”則轉移到:(PC)起+3+rel=(PC)目;當“目的操作數”<“原操作數”;1=C,否則,0=CDJNZRn,rel;若Rn-1≠0,則PC+2+rel=PCDJNZdirect,rel3、間接轉移指令

JMP@A+DPTR;(A)+(DPTR)=(PC)這一條散轉指令,應用在程序存儲器中。4、子程序調用和返回指令

LCALLadr16;(PC)+3=(PC)斷點地址,斷點地址自動壓棧(系統(tǒng)的硬件自動完成)(SP)+1=(SP)先低8位PC0~7=((SP)),(SP)+1=(SP)后高8位PC8~15=((SP)),轉移到addr16=(PC)目,執(zhí)行子程序

ACALLaddr11;PC+2=PC,(SP)+1=(SP)PC7~0=((SP)),(SP)+1=(SP)PC15~8=((SP)),addr11=PC10~0壓棧過程同上(機器碼生成規(guī)則類似于AJMP)

RET;子程序返回斷點地址自動出棧(硬件自動完成)先高8位((SP))=PC15~8,(SP)-1=(SP)后低8位

溫馨提示

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

評論

0/150

提交評論