51單片機匯編語言教程:13課單片機邏輯與或異或指令詳解_第1頁
51單片機匯編語言教程:13課單片機邏輯與或異或指令詳解_第2頁
51單片機匯編語言教程:13課單片機邏輯與或異或指令詳解_第3頁
51單片機匯編語言教程:13課單片機邏輯與或異或指令詳解_第4頁
51單片機匯編語言教程:13課單片機邏輯與或異或指令詳解_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、51單片機匯編語言教程-慧凈電子會員收集整理(全部28課)51單片機匯編語言教程:第13課-單片機邏輯與或異或指令詳解(基于HJ-1G HJ-3G實驗板)ANL A,Rn ;A與Rn中的值按位'與,結(jié)果送入 A中ANL A,direct ;A與direct 中的值按位'與',結(jié)果送入 A中ANL A,Ri ;A與間址尋址單元Ri中的值按位'與,結(jié)果送入 A中ANLA,#data ;A與立即數(shù) data按位'與',結(jié)果送入 A中ANL direct,A ;direct 中值與 A中的值按位'與',結(jié)果送入 direct 中ANL d

2、irect,#data ;direct 中的值與立即數(shù) data按位'與',結(jié)果送入 direct 中。這幾條指令的關(guān)鍵是知道什么是邏輯與。這里的邏輯與是指按位與例:71H和56H相與則將兩數(shù)寫成二進制形式:(71H)01110001(56H)00100110結(jié)果00100000即20H,從上面的式子能看出,兩個參與運算的值只要其中有一個位上是0,則這位的結(jié)果就是0,兩個同是1,結(jié)果才是1。理解了邏輯與的運算規(guī)則,結(jié)果自然就出來了。看每條指令后面的注釋下面再舉一些例程來看。MOVA, #45H ;(A)=45HMOVR1, #25H ;(R1)=25HMOV25H, #79H

3、;(25H)=79HANL A, R1 ;45H與79H按位與,結(jié)果送入 A中為 41H ( A) =41HANL25H,#15H ;25H 中的值(79H)與 15H 相與結(jié)果為(25H) =11H)ANL 25H,A ;25H中的值(11H)與 A中的值(41H)相與,結(jié)果為(25H)=11H在知道了邏輯與指令的功能后,邏輯或和邏輯異或的功能就很簡單了。邏輯或是按位“或”,即有"1”為1,全“ 0”為0。例:10011000或 01100001結(jié)果 11111001而異或則是按位“異或”,相同為“ 0”,相異為“ 1”。例:10011000異或 01100001結(jié)果 111110

4、01而所有的或指令,就是將與指仿中的ANL換成ORL而異或指令則是將 ANL換成XRL即或指令:ORLA,Rn ;A和Rn中的值按位'或,結(jié)果送入 A中ORLA,direct ;A和與間址尋址單元Ri中的值按位'或,結(jié)果送入 A中ORL A,#data ;A和立direct 中的值按位'或',結(jié)果送入 A中ORLA,Ri ;A和即數(shù)data按位'或,結(jié)果送入 A中ORL direct,A ;direct 中值和 A中的值按位'或',結(jié)果送入 direct 中ORL direct,#data ;direct中的值和立即數(shù) data按位

5、9;或',結(jié)果送入 direct 中。異或指令:XRL A,Rn ;A和Rn中的值按位'異或',結(jié)果送入 A中XRL A,direct ;A和direct 中的值按位'異或',結(jié)果送入 A中XRL A,Ri ;A和間址尋址單元Ri中的值按位異或',結(jié)果送入 A中XRL A,#data ;A和立即數(shù)data按位'異或',結(jié)果送入 A中XRL direct,A ;direct 中值和 A中的值按位'異或',結(jié)果送入 direct 中XRL direct,#data ;direct中的值和立即數(shù) data按位'異

6、或',結(jié)果送入 direct 中。練習(xí):MOVA, #24HMOVRO, #37HORL A, R0XRL A, #29HMOV35H, #10HORL 35H, #29HMOVRO, #35HANL A, R0四、控制轉(zhuǎn)移類指令無條件轉(zhuǎn)移類指令短轉(zhuǎn)移類指令A(yù)JMPaddr11長轉(zhuǎn)移類指令LJMPaddr16相對轉(zhuǎn)移指令SJMPrel上面的三條指令,如果要仔細分析的話,區(qū)別較大,但開始學(xué)習(xí)時,可不理會這么多,統(tǒng)統(tǒng)理解成:JMP標號,也就是跳轉(zhuǎn)到一個標號處。事實上,LJMP 標號,在前面的例程中我們已接觸過,并且也知道如何來使用了。 而AJMP和SJMP也是一樣。那么他們的區(qū)別何在呢?

7、在于跳轉(zhuǎn)的范圍不一樣。好比跳遠,LJMP 一下就能跳64K這么遠(當然近了更沒關(guān)系了)。而AJMP最多只能跳2K距離,而SJMP則最多只能跳256這么遠。原則上,所有用SJMP或 AJMP 的地方都能用LJMP來替代。因此在開始學(xué)習(xí)時,需要跳轉(zhuǎn)時能全用LJMP除了一個場合。什么場合呢?先了解一下 AJMP AJMP是一條雙字節(jié)指令,也就說這條指令本身占用存儲器(ROM的兩個單元。而 LJMP則是三字節(jié)指令,即這條指令占用存儲器(ROM的三個單元。 下面是第四條跳轉(zhuǎn)指令。間接轉(zhuǎn)移指令JMP A+DPTR這條指令的用途也是跳轉(zhuǎn),轉(zhuǎn)到什么地方去呢?這可不能由標號簡單地決定了。讓我們從一個實際的例程入

8、手吧。MOVDPTR #TAB ;將TAB所代表的地址送入 DPTRMOVA,R0 ;從R0中取數(shù)(詳見下面說明)MOVB,#2MULA,B ;A中的值乘2 (詳見下面的說明)JMP A, A+DPTR跳轉(zhuǎn)TAB: AJMPS1 ;跳轉(zhuǎn)表格AJMPS2AJMPS3圖應(yīng)用背景介紹:在單片機開發(fā)中,經(jīng)常要用到鍵盤,見上面的9個按鈕的鍵盤。我們的要求是:當按下功能鍵 A.G時去完成不一樣的功能。這用程序設(shè)計的語言來表達的話,就是:按下不一樣的鍵去執(zhí)行不一樣的程序段,以完成不一樣的功能。怎么樣來實現(xiàn)呢?看圖2,前面的程序讀入的是按鈕的值,如按下'A'鍵后獲得的鍵值是0,按下'B

9、'鍵后獲得的值是'1'等等,然后根據(jù)不一樣的值進行跳轉(zhuǎn),如鍵值為0就轉(zhuǎn)到S1執(zhí)行,為1就轉(zhuǎn)到S2執(zhí)行。如何來實現(xiàn)這一功能呢?先從程序的下面看起,是若干個AJMP語句,這若干個AJMP語句最后在存儲器中是這樣 存放的(見圖3),也就是每個 AJMP語句都占用了兩個存儲器的空間,并且是連續(xù)存放的。而AJMPS1存放的地址是TAB到底TAB等于多少,我們不需要知道,把它留給匯編程序來 算好了。下面我們來看這段程序的執(zhí)行過程:第一句MOVDPTR #TAB執(zhí)行完了之后,DPTR中的值就是TAB第二句是 MOVA, R0,我們假設(shè) R0是由按鈕處理程序獲得的鍵值,比如按下A鍵,R

10、0中的值是0,按下B鍵,R0中的值是1,以此類推,現(xiàn)在我們假設(shè)按下的是B鍵,則執(zhí)行完第二條指令后,A中的值就是1。并且按我們的分析,按下B后應(yīng)當執(zhí)行S2這段程序,讓我們來看一看是否是這樣呢?第三條、第四條指令是將 A中的值乘2,即執(zhí)行完第4條指令后A中的值是2。下面就執(zhí)行 JMPA+DPT了,現(xiàn)在DPTR中的值是TAB而A+DPTR后就是TAB+2因此,執(zhí)行此句程序后,將會跳到TAB+這個地址繼續(xù)執(zhí)行??匆豢丛赥AB+這個地址里面放的是什么?就是 AJMPS2這條指令。因此,馬上又執(zhí)行AJMPS2指令,程序?qū)⑻絊2處往下執(zhí)行,這與我們的要求相符合。請大家自行分析按下鍵“ A”、“ C'、“D'之后的情況。這樣我們用JMP A+DPT就實現(xiàn)了按下一鍵跳到對應(yīng)的程序段去執(zhí)行的這樣一個要求。再問大家一個問題,為什么取得鍵值后要乘 2?如果例程下面的所有指令換成LJMP即:LJMPS1,LJMP S2這段程序還能正確地執(zhí)行嗎?如果不能,應(yīng)該怎么改?51實驗板推薦(點擊下面的圖片可以進入下載資料鏈接)HJ-3GHJ-1G推薦使用慧凈 51實驗板。推薦 51學(xué)習(xí)網(wǎng)

溫馨提示

  • 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

提交評論