一文詳解80C51單片機(jī)的指令集_第1頁(yè)
一文詳解80C51單片機(jī)的指令集_第2頁(yè)
一文詳解80C51單片機(jī)的指令集_第3頁(yè)
一文詳解80C51單片機(jī)的指令集_第4頁(yè)
一文詳解80C51單片機(jī)的指令集_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

一文詳解80C51單片機(jī)的指令集數(shù)據(jù)傳送類(lèi)指令數(shù)據(jù)傳送是單片機(jī)最基本的操作。數(shù)據(jù)傳送的一般功能是將源操作數(shù)傳送到指令所指定的目的操作數(shù),指令執(zhí)行后,源操作數(shù)不變。數(shù)據(jù)傳送類(lèi)指令一般不影響標(biāo)志位。數(shù)據(jù)傳送類(lèi)指令共29條,可以分為兩大類(lèi)。一是采用MOV操作符,稱(chēng)為一般傳送指令,共16條;二是采用非MOV操作符,稱(chēng)為特殊傳送指令,共13條。一般傳送指令的匯編指令格式為:MOV是傳送指令的操作助記符。其功能是將源操作數(shù)傳送到目的操作數(shù),源操作數(shù)內(nèi)容不變。該類(lèi)指令的助記符,操作數(shù),功能,字節(jié)數(shù)及執(zhí)行時(shí)長(zhǎng)(機(jī)器周期數(shù)),按目的操組數(shù)歸類(lèi)如下。1)內(nèi)部8位數(shù)據(jù)傳送指令內(nèi)部RAM區(qū)是數(shù)據(jù)傳送最活躍的區(qū)域,8位內(nèi)部數(shù)據(jù)傳送指令共15條,用于單片機(jī)內(nèi)部的數(shù)據(jù)存儲(chǔ)器和寄存器之間的數(shù)據(jù)傳送。有立即尋址,直接尋址,寄存器尋址及寄存器間接尋址等尋址方式。2)16位數(shù)據(jù)傳送指令該指令是80C51指令集中唯一的一條16位數(shù)據(jù)傳送指令,其作用是將外部存儲(chǔ)器某單元地址送到數(shù)據(jù)指針DPTR。這個(gè)存儲(chǔ)單元可以是外部RAM也可以是外部ROM,也可以是擴(kuò)展的片外接口地址。如果地址傳送到DPTR后用刀MOVC,則一定是ROM地址;用到的是MOVX,則一定是RAM地址或片外接口地址。以上一般數(shù)據(jù)傳送指令中,可以用4種目的字節(jié)為基礎(chǔ)來(lái)構(gòu)造4類(lèi)指令。使用時(shí)請(qǐng)注意:除direct外,源字節(jié)尋址與目的字節(jié)方式是不相同的;Rn寄存器尋址與寄存器間接尋址間不相互傳送;只有以累加器A作為目的操作數(shù)的指令,才可能影響奇偶標(biāo)志P。3)特殊傳送指令特殊傳送指令包括:ROM查表,讀/寫(xiě)外部RAM,堆棧操作和交換指令,共13條。ROM中常數(shù)讀取指令為了取出存放在程序存儲(chǔ)器中的表格數(shù)據(jù),80C51單片機(jī)提供了兩條查表指令,這兩條指令的操作碼助記符為MOVC(movecode),表示操作對(duì)象是程序存儲(chǔ)器。指令MOVCA,@A+PC以PC為基址寄存器,A為變址寄存器,A中的8位無(wú)符號(hào)數(shù)與PC內(nèi)容(該指令的嚇一跳指令的起始地址)相加后得到一個(gè)16位ROM地址,然后將該地址單元的內(nèi)容取出送累加器A。指令MOVCA,@A+DPTR以DPTR為基址寄存器,A為變址寄存器,A中的8位無(wú)符號(hào)數(shù)與DPTR內(nèi)容相加后得到一個(gè)16位ROM地址,然后將該地址單元的內(nèi)容取出送累加器A。片外RAM的讀/寫(xiě)指令使用MOV類(lèi)指令,內(nèi)部RAM單元內(nèi)容可以有很多種靈活的數(shù)據(jù)傳送方式,而外部RAM數(shù)據(jù)的傳送只能與A進(jìn)行,且必須使用助記符為MOVX類(lèi)的指令。注意指令以Ri為間接尋址寄存器的,對(duì)外部RAM的尋址空間為256字節(jié)。而DPTR的尋址空間是整個(gè)64KB的片外RAM。堆棧操作指令堆棧操作是通過(guò)指令來(lái)完成的。將數(shù)據(jù)送入堆棧的過(guò)程稱(chēng)為壓棧操作,而從堆棧中取出數(shù)據(jù)的過(guò)程稱(chēng)為彈出(出棧)操作。壓棧指令的功能是先將堆棧指針SP的內(nèi)容加1,然后將指令指定的直接尋址單元內(nèi)容傳送至棧頂單元。出棧指令的功能是將當(dāng)前堆棧指針SP所指示的單元的內(nèi)容傳送到該指令指定的單元中,然后SP中的內(nèi)容減1。數(shù)據(jù)交換指令數(shù)據(jù)傳送都是源操作數(shù)傳送到目的操作數(shù),而源操作數(shù)不變,數(shù)據(jù)流是單方向的;數(shù)據(jù)交換類(lèi)指令則是雙方向的,源和目的操作數(shù)都會(huì)發(fā)送改變。XCH為字節(jié)交換,XCHD為半字節(jié)交換(僅交換低4位數(shù)據(jù)),SWAP是自交換(高4位與低4位交換)。算術(shù)運(yùn)算類(lèi)指令算術(shù)操作指令共有24條,可分為加減乘除和BCD碼調(diào)整指令,除加1減1指令外,算術(shù)運(yùn)算指令的執(zhí)行結(jié)果都將影響CY,AC,OV標(biāo)志。1)不帶進(jìn)位加法指令及BCD碼加法調(diào)整指令前4條指令都是兩個(gè)數(shù)相加后將結(jié)果送給A,參與運(yùn)算的都是兩個(gè)8位二進(jìn)制數(shù)。對(duì)于微型計(jì)算機(jī)作加法時(shí),做的是純正的二進(jìn)制數(shù)相加,但對(duì)用戶(hù)來(lái)說(shuō),這些8位的二進(jìn)制數(shù),可能是無(wú)符號(hào)數(shù),有符號(hào)數(shù)的補(bǔ)碼,還可能是BCD碼。為此,微型計(jì)算機(jī)設(shè)計(jì)了若干個(gè)結(jié)果標(biāo)志或調(diào)整指令供用戶(hù)使用。無(wú)符號(hào)數(shù)相加:若相加結(jié)果超8位,則CY為1,表示產(chǎn)生進(jìn)位,否則CY為0。有符號(hào)數(shù)相加:8位二進(jìn)制數(shù)表示的十進(jìn)制范圍為-128~127,當(dāng)相加結(jié)果不在這個(gè)范圍時(shí),OV為1,表示溢出。OV為1表示加法運(yùn)算的結(jié)果不可用。BCD碼相加:若兩個(gè)BCD數(shù)相加結(jié)果大于1001,則要加0110進(jìn)行調(diào)整;若兩個(gè)BCD數(shù)相加結(jié)果在本位上并不大與1001,但產(chǎn)生了進(jìn)位,相當(dāng)于計(jì)算結(jié)果大于9,那么也要加0110進(jìn)行調(diào)整。調(diào)整指令用專(zhuān)用這指令DAA。2)帶進(jìn)位加法指令這4條指令是將累加器A中的值與源操作數(shù)以及進(jìn)位CY中的值相加,結(jié)果送A。常用于多字節(jié)數(shù)的加法運(yùn)算中。需要注意的是這里的CY是指令開(kāi)始執(zhí)行時(shí)的進(jìn)位標(biāo)志位,不是相加后產(chǎn)生的。3)加1指令加法仍按無(wú)符號(hào)二進(jìn)制數(shù)進(jìn)行,只有INCA影響就標(biāo)志P,其余指令不影響標(biāo)志位。4)帶借位減法指令這4條指令的操作是,將A與源操作數(shù)及進(jìn)位標(biāo)志相減,結(jié)果回送到A。無(wú)符號(hào)數(shù)相減:CY為1表示D7位有錯(cuò)位,否則CY為0。CY為1就表示A<源操作數(shù)。有符號(hào)數(shù)相減:若OV為1,表明補(bǔ)碼減法運(yùn)算結(jié)果超出8位二進(jìn)制數(shù)表示范圍。若要進(jìn)行不帶進(jìn)位的減法運(yùn)算,只要將CY清0即可。5)減1指令只有DECA會(huì)影響奇偶標(biāo)志P。6)乘除指令兩個(gè)8位無(wú)符號(hào)數(shù)相乘結(jié)果為16位無(wú)符號(hào)數(shù),乘積的低8位存放在A,高8位存放在寄存器B。如果乘積超過(guò)0FFH,則OV為1,否則清零。CY總為0,P仍按A中1的奇偶來(lái)確定。兩個(gè)8位無(wú)符號(hào)數(shù)相除的商存放在A,余數(shù)存放在B。如果除數(shù)B為0,則OV為1。CY總為0,P仍按A中1的奇偶來(lái)確定。邏輯運(yùn)算類(lèi)指令邏輯運(yùn)算指令共24條,包括邏輯與,或,異或,清零,取反,移位的指令。1)邏輯與指令2)邏輯或指令3)邏輯異或指令4)累加器清零指令5)取反指令6)移位指令控制轉(zhuǎn)移類(lèi)指令通常情況下,微機(jī)是順序執(zhí)行程序的,但在有些情況下需要改變程序的走向,控制轉(zhuǎn)移類(lèi)指令就是可以改變程序運(yùn)行走向的指令。80C51共16條,包括無(wú)條件轉(zhuǎn)移指令,條件轉(zhuǎn)移指令以及子程序調(diào)用和返回指令。1)無(wú)條件轉(zhuǎn)移指令無(wú)條件轉(zhuǎn)移指令是當(dāng)程序執(zhí)行該指令時(shí),不需要任何條件,程序自動(dòng)轉(zhuǎn)移到該指令所指的目的地址運(yùn)行新的程序段。AJMP為短轉(zhuǎn)移指令,在譯成機(jī)器碼時(shí),只取目的地址的低11位,高5位使用PC地址的高5位。很明顯這是一條跳轉(zhuǎn)范圍為2KB的指令。SJMP為相對(duì)轉(zhuǎn)移指令,雙字節(jié)指令,rel為有符號(hào)的補(bǔ)碼,所以轉(zhuǎn)移的目標(biāo)地址在SJMP指令前126B到后129B之間。LJMP為長(zhǎng)轉(zhuǎn)移指令,該指令可以使程序從當(dāng)前地址轉(zhuǎn)移到64KB程序存儲(chǔ)器地址空間的任意地址。JMP為散轉(zhuǎn)移指令,該指令以DPTR和A的內(nèi)容進(jìn)行無(wú)符號(hào)相加后作為PC的新目標(biāo)地址,可以實(shí)現(xiàn)64KB范圍內(nèi)的轉(zhuǎn)移。該指令的特點(diǎn)是根據(jù)A的值不同實(shí)現(xiàn)多分支轉(zhuǎn)移。2)條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令是指在滿(mǎn)足指定條件時(shí)就進(jìn)行轉(zhuǎn)移,否則程序繼續(xù)執(zhí)行本指令的下一條指令。條件轉(zhuǎn)移指令都是相對(duì)轉(zhuǎn)移。JZ指令是當(dāng)A的內(nèi)容為0就轉(zhuǎn)移,而JNZ相反。CJNE指令比較轉(zhuǎn)移指令,是對(duì)兩個(gè)操作數(shù)進(jìn)行比較,然后根據(jù)比較結(jié)果來(lái)決定是否轉(zhuǎn)移到目的地址。若不相等就轉(zhuǎn)移,相等就順序執(zhí)行。CJNE指令影響CY標(biāo)志位,若目的操作數(shù)大于源操作數(shù),則CY為0,反之為1。DJNZ指令為減1非零轉(zhuǎn)移指令。對(duì)操作數(shù)減1,并保存結(jié)果,判斷值是否為0,為0就往下執(zhí)行,否則跳轉(zhuǎn)。3)調(diào)用及返回指令A(yù)CALL和LCALL會(huì)將斷點(diǎn)地址壓棧,RET會(huì)將斷點(diǎn)地址出棧,彈回PC。RETI是從中斷服務(wù)子程序返回的指令,在RET的功能基礎(chǔ)上,它還要清除80C51單片機(jī)內(nèi)部的中斷優(yōu)先級(jí)狀態(tài)觸發(fā)器,使得已申請(qǐng)的同級(jí)或較低級(jí)的中斷申請(qǐng)可以得到響應(yīng)。布爾變量操作指令布爾變量即開(kāi)關(guān)量,是以位為基本單位來(lái)進(jìn)行運(yùn)算和操作的。80C51系統(tǒng)具有對(duì)位變量的處理能力,它有自己的累加器CY,稱(chēng)為位累加器,有自己的位存儲(chǔ)空間,還有自己獨(dú)立的運(yùn)算處理硬件系統(tǒng)和軟件指令系統(tǒng),共17條。為方便書(shū)寫(xiě),指令中的C代表CY。1)位傳送指令2)位置位指令3)位運(yùn)算指令4)位控制轉(zhuǎn)移指令位控制轉(zhuǎn)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論