




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、51單片機(jī)匯編語(yǔ)言教程-慧凈電子會(huì)員收集整理(全部28課)51單片機(jī)匯編語(yǔ)言教程:第13課-單片機(jī)邏輯與或異或指令詳解(基于HJ-1G HJ-3G實(shí)驗(yàn)板)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ù)寫成二進(jìn)制形式:(71H)01110001(56H)00100110結(jié)果00100000即20H,從上面的式子能看出,兩個(gè)參與運(yùn)算的值只要其中有一個(gè)位上是0,則這位的結(jié)果就是0,兩個(gè)同是1,結(jié)果才是1。理解了邏輯與的運(yùn)算規(guī)則,結(jié)果自然就出來了??疵織l指令后面的注釋下面再舉一些例程來看。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在知道了邏輯與指令的功能后,邏輯或和邏輯異或的功能就很簡(jiǎn)單了。邏輯或是按位“或”,即有"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長(zhǎng)轉(zhuǎn)移類指令LJMPaddr16相對(duì)轉(zhuǎn)移指令SJMPrel上面的三條指令,如果要仔細(xì)分析的話,區(qū)別較大,但開始學(xué)習(xí)時(shí),可不理會(huì)這么多,統(tǒng)統(tǒng)理解成:JMP標(biāo)號(hào),也就是跳轉(zhuǎn)到一個(gè)標(biāo)號(hào)處。事實(shí)上,LJMP 標(biāo)號(hào),在前面的例程中我們已接觸過,并且也知道如何來使用了。 而AJMP和SJMP也是一樣。那么他們的區(qū)別何在呢?
7、在于跳轉(zhuǎn)的范圍不一樣。好比跳遠(yuǎn),LJMP 一下就能跳64K這么遠(yuǎn)(當(dāng)然近了更沒關(guān)系了)。而AJMP最多只能跳2K距離,而SJMP則最多只能跳256這么遠(yuǎn)。原則上,所有用SJMP或 AJMP 的地方都能用LJMP來替代。因此在開始學(xué)習(xí)時(shí),需要跳轉(zhuǎn)時(shí)能全用LJMP除了一個(gè)場(chǎng)合。什么場(chǎng)合呢?先了解一下 AJMP AJMP是一條雙字節(jié)指令,也就說這條指令本身占用存儲(chǔ)器(ROM的兩個(gè)單元。而 LJMP則是三字節(jié)指令,即這條指令占用存儲(chǔ)器(ROM的三個(gè)單元。 下面是第四條跳轉(zhuǎn)指令。間接轉(zhuǎn)移指令JMP A+DPTR這條指令的用途也是跳轉(zhuǎn),轉(zhuǎn)到什么地方去呢?這可不能由標(biāo)號(hào)簡(jiǎn)單地決定了。讓我們從一個(gè)實(shí)際的例程入
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)用背景介紹:在單片機(jī)開發(fā)中,經(jīng)常要用到鍵盤,見上面的9個(gè)按鈕的鍵盤。我們的要求是:當(dāng)按下功能鍵 A.G時(shí)去完成不一樣的功能。這用程序設(shè)計(jì)的語(yǔ)言來表達(dá)的話,就是:按下不一樣的鍵去執(zhí)行不一樣的程序段,以完成不一樣的功能。怎么樣來實(shí)現(xiàn)呢?看圖2,前面的程序讀入的是按鈕的值,如按下'A'鍵后獲得的鍵值是0,按下'B
9、'鍵后獲得的值是'1'等等,然后根據(jù)不一樣的值進(jìn)行跳轉(zhuǎn),如鍵值為0就轉(zhuǎn)到S1執(zhí)行,為1就轉(zhuǎn)到S2執(zhí)行。如何來實(shí)現(xiàn)這一功能呢?先從程序的下面看起,是若干個(gè)AJMP語(yǔ)句,這若干個(gè)AJMP語(yǔ)句最后在存儲(chǔ)器中是這樣 存放的(見圖3),也就是每個(gè) AJMP語(yǔ)句都占用了兩個(gè)存儲(chǔ)器的空間,并且是連續(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)當(dāng)執(zhí)行S2這段程序,讓我們來看一看是否是這樣呢?第三條、第四條指令是將 A中的值乘2,即執(zhí)行完第4條指令后A中的值是2。下面就執(zhí)行 JMPA+DPT了,現(xiàn)在DPTR中的值是TAB而A+DPTR后就是TAB+2因此,執(zhí)行此句程序后,將會(huì)跳到TAB+這個(gè)地址繼續(xù)執(zhí)行??匆豢丛赥AB+這個(gè)地址里面放的是什么?就是 AJMPS2這條指令。因此,馬上又執(zhí)行AJMPS2指令,程序?qū)⑻絊2處往下執(zhí)行,這與我們的要求相符合。請(qǐng)大家自行分析按下鍵“ A”、“ C'、“D'之后的情況。這樣我們用JMP A+DPT就實(shí)現(xiàn)了按下一鍵跳到對(duì)應(yīng)的程序段去執(zhí)行的這樣一個(gè)要求。再問大家一個(gè)問題,為什么取得鍵值后要乘 2?如果例程下面的所有指令換成LJMP即:LJMPS1,LJMP S2這段程序還能正確地執(zhí)行嗎?如果不能,應(yīng)該怎么改?51實(shí)驗(yàn)板推薦(點(diǎn)擊下面的圖片可以進(jìn)入下載資料鏈接)HJ-3GHJ-1G推薦使用慧凈 51實(shí)驗(yàn)板。推薦 51學(xué)習(xí)網(wǎng)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2019-2025年一級(jí)注冊(cè)建筑師之建筑結(jié)構(gòu)能力檢測(cè)試卷B卷附答案
- 2025年3月隱蔽工程影像存檔補(bǔ)充協(xié)議條款
- 自由探索的班級(jí)工作計(jì)劃
- 2025商務(wù)合同談判策略全解「」
- 2025寫字間租賃合同
- 設(shè)計(jì)有趣的班級(jí)互動(dòng)游戲計(jì)劃
- 閑置鋼管改造方案范本
- 如何讓年度工作計(jì)劃更具可持續(xù)性
- 課程與德育融合的創(chuàng)新實(shí)踐計(jì)劃
- 2025家庭護(hù)理服務(wù)合同范例
- 電動(dòng)汽車結(jié)構(gòu)原理與檢修課件:慢充系統(tǒng)檢修
- 2025年四川雅安市名山區(qū)茗城有限公司招聘筆試參考題庫(kù)含答案解析
- 2025年中國(guó)旅行車市場(chǎng)調(diào)查研究報(bào)告
- 2022年湖南省岳陽(yáng)市華容縣小升初語(yǔ)文試卷
- 專題09 產(chǎn)業(yè)區(qū)位與產(chǎn)業(yè)發(fā)展【知識(shí)精研】高考地理二輪復(fù)習(xí)
- 【北京】《總也倒不了的老屋》名師課件(第二課時(shí))
- 《肺的結(jié)構(gòu)和功能》課件
- 事業(yè)單位考試綜合基礎(chǔ)知識(shí)真題及解析
- 光伏安裝勞務(wù)分包合同
- 長(zhǎng)期護(hù)理保障失能等級(jí)評(píng)估規(guī)范
- 匯流箱工作原理及日常維護(hù)培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論