已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第三章指令系統(tǒng),硅谷芯微技術貢獻網(wǎng)址:www.threeway.cc,本章重點:,理解指令的6種尋址方式理解各種類型指令的用法能讀懂簡單的程序,3.1MCS51指令概述,3.1.1機器指令:用二進制編碼表示的,能夠被計算機直接識別和執(zhí)行的語言稱為機器語言,對應的指令成為機器指令。機器指令不需要翻譯就可直接運行,是計算機發(fā)展初期使用的。,3.1.2匯編指令:機器語言的繁雜和不便操作直接催生了匯編指令。匯編語言用助記符、符號和數(shù)字來表示機器指令。它與機器語言指令一一對應,便于理解和記憶。但是匯編語言并不能直接被機器識別,因此匯編程序在編寫好后必須被翻譯成相應的機器語言才能執(zhí)行,而這些工作是由編譯器完成的。,3.1.3匯編偽指令偽指令和匯編指令屬于同一范疇,屬于一種符號語言。不同之處在于,匯編指令都有其對應的機器碼,而偽指令沒有對應的機器碼,偽指令的作用在于控制編譯器的編譯過程。也就是說,匯編指令的實質是對應的機器指令,程序運行過程中才會被執(zhí)行。而偽指令的實質是編譯過程控制語句,編譯完成后偽指令就完成使命了,在程序燒錄進單片機實際運行過程中并沒有偽指令的參與。,3.2指令的語句結構MCS-51匯編語言的完整語句結構如圖3.1,包括標號、操作碼、操作數(shù)和注釋4部分。其中,操作碼和操作數(shù)是必選部分,而標號和注釋(方括號括起來的部分)是可選項目。,尋址方式,是指指令語句中操作數(shù)的解析方式。即,操作數(shù)按照什么規(guī)則來存取。,3.3MCS51的6中尋址方式,3.3.1立即尋址又叫立即數(shù)尋址,是指在指令中直接給出參與運算的數(shù)字。為了區(qū)別于作為地址的數(shù)字,把這種直接使用的數(shù)字稱為立即數(shù),并在其前面加上#以區(qū)別于作為地址的數(shù)字。因為立即數(shù)本質上即是一個數(shù)字,因此其只能作為源操作數(shù)而不能作為目的操作數(shù)(目的操作數(shù)需要的是一個地址)。如:MOVA,#30H;把#30H復制到A中,3.3.2直接尋址操作數(shù)來源于直接地址。所謂直接地址,是指RAM區(qū)域的一個字節(jié)型地址空間。大多數(shù)直接尋址會使用用戶RAM區(qū)(30H7FH),當位尋址區(qū)(20H2FH)被按字節(jié)尋址時,也屬于直接尋址范疇。直接尋址可作為源操作數(shù)或目的操作數(shù),當其用作源操作數(shù)時,實際作為操作數(shù)的是該地址內存儲的數(shù)據(jù)。如MOV30H,#40HMOVA,30H第二句中源操作數(shù)的30H即為直接尋址,此時實際使用的操作數(shù)其實是存儲于30H中的#40H,所以程序執(zhí)行后A中實際值為#40H。直接尋址作為目的操作數(shù)時,實際指示的是這個地址本身(而不是地址內的數(shù)),因為目的操作數(shù)的任務是存儲操作后的結果數(shù)據(jù),因此需要的是一個地址(雖然命名為操作數(shù),但實際叫“存儲地址”更加確切)。直接尋址作為目的操作數(shù)的一個實例是上面第一句語句中的30H。,3.3.3寄存器尋址也叫寄存器直接尋址(以明確區(qū)別于寄存器間接尋址),此處的寄存器指的是工作寄存器R0R7。無論作為源操作數(shù)還是目的操作數(shù),寄存器尋址的特點和直接尋址均很類似。實際上,在內部結構一節(jié)我們已經(jīng)知道,工作寄存器區(qū)和用戶RAM區(qū)同屬于RAM區(qū),在邏輯上本來就是同級的。MOVA,R0,3.3.4寄存器間接尋址寄存器間接尋址用于源操作數(shù)時,語句中的寄存器中取出的不再是操作數(shù),而是操作數(shù)的地址,真正的操作數(shù)需要用這個地址去尋址RAM區(qū)才能得到。同樣,寄存器間接尋址用于目的操作數(shù)時,實際目的地址不再是語句中的寄存器,而是該寄存器中內容對應的RAM區(qū)地址。如圖3.2所示,R0寄存器內裝入#34H,在執(zhí)行完語句MOVA,R0后,實際取到的操作數(shù)是RAM區(qū)域的34H地址處的地址(#56H)。符號是間接尋址的標志符,不能省略或者混用。此外,間接尋址寄存器只能使用工作寄存器區(qū)的R0或R1,其余R2R7不可使用。(4個區(qū)中的R0和R1均可),3.3.5基址+變址尋址首先,基址+變址尋址也屬于一種間接尋址,即不是直接給出操作數(shù),而是給出操作數(shù)的地址。與寄存器間接尋址(操作數(shù)地址由工作寄存器給出)不同,基址+變址尋址的操作數(shù)地址由兩部分給出,分別成為基地址和變地址。典型的基址+變址尋址的實例如:MOVCA,A+DPTR其中,DPTR數(shù)據(jù)指針內指出基地址,A中存放變地址,A+DPTR共同指出了真實操作數(shù)的地址。,3.3.6位尋址由于51單片機內部包含一個位處理器,因此具有位尋址能力??梢晕徊僮鞯膬热萦蠷AM的位尋址區(qū)(20H2FH)、可位尋址的SFR等。MCS-51的指令系統(tǒng)中有專門設置的位尋址指令用于按位操作這些內容。,3.4常用符號,Rn:工作寄存器中的寄存器R0、R1R7之一,Ri:工作寄存器中的寄存器R0或R1#data:8位立即數(shù)#data16:16位立即數(shù)direct:片內RAM或SFR的地址(8位):間接尋址寄存器Bit:片內RAM或SFR的位地址addr11:11位目的地址addr16:16位目的地址rel:補碼形式的8位地址偏移量。偏移范圍為-128127/:位操作指令中,該位求反后參與操作,不影響該位X:片內RAM的直接地址或寄存器(X):相應地址單元中的內容:箭頭左邊的內容送入箭頭右邊的單元內,3.5指令分類,以下分數(shù)據(jù)傳送類、算術運算類、邏輯運算與移位類、控制轉移類、布爾操作類共5個大類來詳細講解MCS-51的指令系統(tǒng):3.5.1.數(shù)據(jù)傳送類助記符:MOV、MOVX、MOVCXCH、XCHD、SWAPPUSH、POPMOV:將后面的立即數(shù)(地址中的數(shù)據(jù))放到前面的地址(寄存器)中。MOVR0,R1MOVX:用于片外尋址,由于使用外部存儲器技術已經(jīng)基本被淘汰,在此就不做過多講解。MOVC:主要用于查表中,是將ROM中的數(shù)取出。本組指令也被稱為查表指令,常用此指令來查一個已做好在ROM中的表格。MOVDPTR,#T_tabMOVA,R0MOVCA,A+DPTR.T_tab:DB0,1,4,9,16,25,XCH:用于兩個字節(jié)型變量互相交換數(shù)據(jù)。XCHD:用于兩個字節(jié)型變量互相交換低4位數(shù)據(jù)(高4位保持不變)。SWAPA:指令,用于將A的高4位和低4位互相交換。PUSH、POP:堆棧操作指令,分別為壓棧和彈棧操作。這兩句經(jīng)常用來在進入中斷服務程序時保存ACC和PSW,以保證主程序中的ACC和PSW不會被中斷服務程序破壞掉。注意壓棧和出棧時,先壓后出,后壓先出??偨Y:數(shù)據(jù)傳送類指令結構簡單、容易理解,關鍵在于熟練掌握并應用于各種尋址方式。,3.5.2.算術運算類算術運算主要對8位無符號數(shù);也可用于帶符號數(shù)運算。包括:加、減、乘、除、加1、減1運算指令影響PSW有關位。,助記符:ADDADDCINCMULDASUBBDECDIVADD:前后兩數(shù)相加,和放入前面寄存器。影響進位標志位C。ADDC:前后兩數(shù)相加再加上進位標志位C的值,和放入前面寄存器。ADDC往往和ADD配合使用,完成多字節(jié)加法。結果對C有影響。INC:對地址或者寄存器里面的數(shù)據(jù)進行加一。不影響進位標志位C。SUBB:前后兩數(shù)想減再減去C的值,差放入前面寄存器,同ADDC,結果對C有影響。DEC:對地址或者寄存器里面的數(shù)據(jù)進行減一。不影響進位標志位。MULAB:AB兩數(shù)相乘,積的低八位放入A中,高八位放入B中。DIVAB:AB兩數(shù)相除,商放入A中,余數(shù)放入B中。DAA:十進制調整,可以看成對十六進制數(shù)進行十進制運算。如下:MOVA,#49H;A=49HADDA,#1;加一DAA;A=50H,3.5.3邏輯運算類,助記符:ANLORLCPLCLRRRRLRRCRLCANL:前后兩數(shù)按位相與,結果放入前面寄存器。ORL:前后兩數(shù)按位相或,結果放入前面寄存器。CPL:對累加器A(bit位地址)數(shù)據(jù)按位進行取反。CLR:對累加器A(bit位地址)中數(shù)據(jù)清零。RR:循環(huán)右移。RRC:帶C循環(huán)右移。RL:循環(huán)左移。RLC:帶C循環(huán)左移。,助記符:LJMPAJMPJMPSJMPJZJCJBJNZJNCINBLCALLACALLRETRETICJNEDJNZLJMP:無條件跳轉,尋址范圍64k。AJMP:無條件跳轉,尋址范圍2k。JMP:散轉,跳轉地址由A+DPTR決定。SJMP:相對跳轉,范圍上下128字節(jié)。JZ:A中數(shù)據(jù)為0跳轉,不為0向下執(zhí)行。JNZ:與JZ相反。JC、JB:C、bit位為0向下執(zhí)行,不為0跳轉。JNC、JNB:與JC、JB相反。LCALL、ACAlL:子程序調用。前者調用范圍64k,后者2K。RET、RETI:前者,子程序返回,與LCALL、ACALL配合使用。后者只用于中斷返回。CJNE:兩數(shù)相比較相等則向下執(zhí)行,不等則跳轉。同時前面數(shù)大于后面數(shù),C=0。后面數(shù)大于前面數(shù),C=1。DJNZ:該數(shù)減一是否為0,為零則向下執(zhí)行,不為0則跳轉。CJNE和DJNZ常用來實現(xiàn)循環(huán)程序結構,即是兩種最典型的循環(huán)結構。,3.5.4控制轉移類,3.5.5.布爾操作類(位操作),助記符:MOVCLRCPLSETBANLORLJB(JNB)JC(JNC)MOV:對位進行賦值。CLR:對該位進行清零。CPL:對該位進行取反。SETB:對該位置1。ANL:相與。ORL:相或。,3.5.6.偽指令,助記符:ORGCSEGDBEQUENDDSEGDWBIT,ORG偽指令用于指定該指令語句后一段語句生成的機器碼在ROM內存儲的起始點,每條ORG指令的作用范圍為本條語句后面的一條指令開始到下一個ORG指令出現(xiàn)為止。END偽指令為匯編程序結束標志,編譯器將無視END后的指令語句。DB、DW偽指令用于在ROM中開辟一些數(shù)值區(qū)域,DB開辟的數(shù)值區(qū)域以字節(jié)(8bit)為單位,DW開辟的數(shù)值區(qū)域以雙字節(jié)(16bit)為單位。EQU指令和DAT
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版酒店安保服務與旅游安全監(jiān)管合同3篇
- 二零二五版擔保居間服務線上線下融合合同3篇
- 二零二五年砂石料采購合同2篇
- 二零二五版國際教育服務合同范本及學生權益保護條款3篇
- 二零二五年度變壓器安裝與環(huán)保排放標準合同3篇
- 樣板間裝修工程2025版知識產(chǎn)權合同3篇
- 二零二五版單位食堂餐飲服務設施租賃合同3篇
- 二零二五年辣椒種植與加工一體化項目合同3篇
- 二零二五版電子商務移動應用開發(fā)與推廣合同2篇
- 二零二五年酒店會議室裝修與設備安裝服務合同3篇
- 新華健康體檢報告查詢
- 2024版智慧電力解決方案(智能電網(wǎng)解決方案)
- 公司SWOT分析表模板
- 小學預防流行性感冒應急預案
- 肺癌術后出血的觀察及護理
- 生物醫(yī)藥大數(shù)據(jù)分析平臺建設-第1篇
- 基于Android的天氣預報系統(tǒng)的設計與實現(xiàn)
- 沖鋒舟駕駛培訓課件
- 美術家協(xié)會會員申請表
- 聚合收款服務流程
- 中石化浙江石油分公司中石化溫州靈昆油庫及配套工程項目環(huán)境影響報告書
評論
0/150
提交評論