單片機(jī)原理第3章_第1頁
單片機(jī)原理第3章_第2頁
單片機(jī)原理第3章_第3頁
單片機(jī)原理第3章_第4頁
單片機(jī)原理第3章_第5頁
已閱讀5頁,還剩74頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、v指令是規(guī)定CPU執(zhí)行某類操作的命令vCPU具有的全部指令的集合稱為指令系統(tǒng)v指令系統(tǒng)是人機(jī)交互的紐帶v本章將介紹以下幾方面的內(nèi)容:單片機(jī)指令系統(tǒng)的格式、標(biāo)識及其助記符;單片機(jī)指令系統(tǒng)的尋址方式;單片機(jī)指令系統(tǒng)的分類以及每條指令的意義。 第第3章章 MCS51單片機(jī)指令系統(tǒng)單片機(jī)指令系統(tǒng) 3.1 單片機(jī)指令系統(tǒng)的特點(diǎn) vMCS51單片機(jī)的指令系統(tǒng)包含5種類型的指令,有7種尋址方式,其機(jī)器語言共有255種操作代碼,即機(jī)器碼v匯編語言使用42種助記符表示指令的功能v每種功能的指令所涉及的操作數(shù)可能有不同的尋址方式,因此,各種功能的指令與該指令所涉及的操作數(shù)可能有的尋址方式相組合,共構(gòu)造出111條指

2、令v即:MCS51單片機(jī)的指令系統(tǒng)一共有42種助記符,111條匯編語言指令,且用255個(gè)機(jī)器碼表示。 例如: ADD 加法助記符ADD A,RnADD A,Ri尋址方式不同具體操作數(shù)有8個(gè),所以機(jī)器碼有8個(gè) 具體操作數(shù)有2個(gè),所以機(jī)器碼有2個(gè) 匯編指令助記符機(jī)器碼3.1 單片機(jī)指令系統(tǒng)的特點(diǎn)v指令系統(tǒng)長度:單字節(jié)指令49條;雙字節(jié)指令45條;三字節(jié)指令17條。v指令執(zhí)行時(shí)間:單機(jī)器周期指令64條;雙機(jī)器周期指令45條;只有乘、除兩條指令需要4個(gè)機(jī)器周期。v指令系統(tǒng)特點(diǎn): 對存儲(chǔ)空間要求較少且執(zhí)行速度較快,可用較小的存儲(chǔ)空間存放完成功能較復(fù)雜的控制程序,精簡而高效,適于在實(shí)時(shí)測控領(lǐng)域使用。3.2

3、 匯編語言格式及機(jī)器碼表示方法3.2.1 指令系統(tǒng)的匯編語言格式v指令通常包含操作碼(Operation Code)和操作數(shù)(Operand)兩個(gè)部分操作碼指明執(zhí)行的操作的性質(zhì)與功能,即指示計(jì)算機(jī)執(zhí)行何種操作;操作數(shù)指出參加操作的數(shù)據(jù)或數(shù)據(jù)所在單元的地址。v指令系統(tǒng)的匯編語言格式為: 標(biāo)號: 操作助記符 目的操作數(shù) ,源操作數(shù) ;注釋 3.2.2 指令系統(tǒng)的機(jī)器碼表示方法一、單字節(jié)指令v單字節(jié)指令中既包含操作碼的信息,也包含操作數(shù)的信息,單字節(jié)指令包括兩種情況:一種是指令的含義和對象都很明確,用一個(gè)字節(jié)已能完全表示,即沒有與這條指令功能相同而操作對象不同的指令。 例如,將累加器A的內(nèi)容加1的指

4、令 INC A即為單字節(jié)指令,指令的編碼為:0000 0100B,這類指令的機(jī)器碼編碼格式為:另一種情況是8位編碼含有操作碼和寄存器編碼。 例如:將當(dāng)前工作寄存器R0中的數(shù)據(jù)傳送到累加器A中的指令:MOV A,R0,機(jī)器碼為1110 1000B,這類指令的機(jī)器碼編碼格式為:二.雙字節(jié)指令v雙字節(jié)指令中,用第一字節(jié)表示操作碼,第二個(gè)字節(jié)表示參與操作的數(shù)據(jù)或數(shù)據(jù)存放的地址。vMCS51指令系統(tǒng)中有45條雙字節(jié)指令。這類指令的指令編碼格式為:MOV A,01HMOV A,02H MOV A,0FFH操作數(shù)本身一字節(jié)三. 三字節(jié)指令v三字節(jié)指令的第一字節(jié)是操作碼,后兩個(gè)字節(jié)是操作數(shù)。v操作數(shù)可以是數(shù)據(jù)

5、(立即數(shù)),也可以是存放數(shù)據(jù)的地址,因此,三字節(jié)指令的編碼形式有以下四種情況:操作碼操作碼操作碼操作碼立即數(shù)地 址立即數(shù)地 址立即數(shù)立即數(shù)地 址地 址例如:MOV 20H,#50Hv編碼為01110101B,00100000B,01010000B。十六進(jìn)制表示為75H,20H,50H。v功能是將數(shù)據(jù)“50H”傳送到內(nèi)部數(shù)據(jù)存儲(chǔ)器的20H單元中。v這類指令中的存儲(chǔ)單元有256個(gè),需用一字節(jié)表示,數(shù)據(jù)也有256個(gè),也需用一字節(jié)表示,因此需要用3個(gè)字節(jié)表示指令的具體功能3.2.3 指令中的符號標(biāo)識v為了方便講解指令系統(tǒng),本書用一些符號標(biāo)識來代替若干相似的操作數(shù),以用一條“指令”代表若干條同類指令,v

6、在后續(xù)章節(jié)中用到的符號標(biāo)識及含義如下: Rn(n=07)-當(dāng)前選中的工作寄存器組中的寄存器R0R7之一;Ri(i=0,1)-當(dāng)前選中的工作寄存器組中的寄存器R0或R1; -間址寄存器前綴; #data -8位立即數(shù);#data16-16位立即數(shù);direct-片內(nèi)數(shù)據(jù)存儲(chǔ)器地址及SFR地址(可用符號名稱表示);addr11-11位目的地址;addr16-16位目的地址;rel-補(bǔ)碼形式表示的8位地址偏移量,值在128127范圍內(nèi); bit-片內(nèi)數(shù)據(jù)存儲(chǔ)器可位尋址單元的位地址、SFR的位地址(可用符號名稱表示); /位操作數(shù)的取反操作前綴;() 表示 地址單元或寄存器中的內(nèi)容; 將箭頭右邊的內(nèi)容

7、送入箭頭左邊的單元中。 將箭頭左邊的內(nèi)容送入箭頭右邊的單元中。 3.3 MCS51單片機(jī)指令系統(tǒng)的尋址方式 v指令執(zhí)行時(shí),得到參與操作的數(shù)據(jù)或者數(shù)據(jù)所在的地址單元的方法就是尋址方式。v51指令系統(tǒng)有七種尋址方式,即:寄存器尋址、立即尋址、直接尋址、寄存器間接尋址、變址尋址、相對尋址、位尋址。v一條指令執(zhí)行時(shí),對源操作數(shù)和目的操作數(shù)都要尋址,本章針對源操作數(shù)對尋址方式進(jìn)行介紹。3.3.1 寄存器尋址 v寄存器尋址指操作數(shù)存放在寄存器中,指令中直接給出該寄存器名稱的尋址方式,v寄存器可以是:R0R7;A;B(以AB寄存器對形式出現(xiàn));DPTR。v由于寄存器在單片機(jī)內(nèi)部,無需和外部進(jìn)行信息交換,因此

8、這種尋址方式具有較高的傳送和運(yùn)算速度。v例如: MOV A,R0 ,功能是將寄存器R0的內(nèi)容傳送到累加器A。v假設(shè)R0的內(nèi)容為50H,指令執(zhí)行過程如圖所示。50H片內(nèi)數(shù)據(jù)存儲(chǔ)器區(qū)50H特殊功能寄存器區(qū)R0A3.3.2 直接尋址 v在指令中直接給出操作數(shù)的地址,即指令中操作數(shù)部分是存放操作數(shù)的地址,這種尋址方式稱為直接尋址。v直接尋址的尋址空間為片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū),即地址為00H7FH的RAM單元和地址在80H0FFH的21個(gè)特殊功能寄存器v對于特殊功能寄存器一般采用其符號名稱,這主要是為了程序可讀性好,不論使用符號名稱還是具體地址,指令的功能和對應(yīng)的機(jī)器碼都完全一樣 v直接尋址還可用于對片內(nèi)數(shù)據(jù)區(qū)

9、中可位尋址單元的位和可位尋址的特殊功能寄存器的位進(jìn)行尋址v特殊功能寄存器可尋址位的位地址表示方法與特殊功能寄存器地址的表示方法類似:既可用其位名稱也可用位地址,為了使程序可讀性好,一般使用位名稱代表其具體地址。 使用直接尋址要注意兩個(gè)問題 v 注意區(qū)分操作數(shù)是字節(jié)地址還是位地址 MOV A,30HMOV C,30H v 注意寄存器尋址與直接尋址的區(qū)別 INC A機(jī)器碼為04H INC ACC 機(jī)器碼為05E0H INC 0E0H 3.3.3 立即尋址 v指令編碼中直接給出操作數(shù)(數(shù)據(jù))的尋址方式稱為立即尋址。v立即數(shù)可以為一個(gè)字節(jié),也可以是兩個(gè)字節(jié),并要用符號“#”來標(biāo)識v由于立即數(shù)是一個(gè)常數(shù)

10、,所以只能作為源操作數(shù)。v立即尋址所對應(yīng)的尋址空間為程序存儲(chǔ)器。 例:MOV A,#5AH 5AH特殊功能寄存器區(qū)A74H5AH程序存儲(chǔ)器3.3.4 寄存器間接尋址 v指令中給出寄存器名,以該寄存器中的內(nèi)容為地址,從該地址去取操作數(shù)的尋址方式稱為寄存器間接尋址。v尋址的存儲(chǔ)空間為片內(nèi)數(shù)據(jù)存儲(chǔ)器或片外數(shù)據(jù)存儲(chǔ)器。 v為了和寄存器尋址相區(qū)別,寄存器名前加“”符號v尋址片內(nèi)數(shù)據(jù)存儲(chǔ)器時(shí),數(shù)據(jù)傳送采用“MOV”類指令,CPU不產(chǎn)生訪問外部數(shù)據(jù)存儲(chǔ)器的讀/寫信號,間接尋址寄存器采用寄存器R0或R1(堆棧操作時(shí)采用SP);v尋址片外數(shù)據(jù)存儲(chǔ)器時(shí),數(shù)據(jù)傳送采用“MOVX”類指令,CPU將產(chǎn)生訪問外部數(shù)據(jù)存儲(chǔ)

11、器的讀/寫信號,這時(shí)間接尋址寄存器有兩種選擇:采用R0和R1作間址寄存器,這時(shí)R0或R1提供低8位地址(外部數(shù)據(jù)存儲(chǔ)器多于256字節(jié)采用頁面方式訪問時(shí),由P2口未使用的I/O引腳提供高位地址);采用DPTR作為間址寄存器,提供16位地址,可訪問整個(gè)片外數(shù)據(jù)存儲(chǔ)器的64K空間。 例:假設(shè)DPTR內(nèi)容為2000H, 片外數(shù)據(jù)存儲(chǔ)器2000H單元內(nèi)容為30H,片外數(shù)據(jù)存儲(chǔ)器累加器A執(zhí)行MOVX A,DPTR將以DPTR的內(nèi)容2000H為地址,把片外數(shù)據(jù)存儲(chǔ)器2000H單元內(nèi)容30H傳送到累加器A3.3.5 變址尋址v以一個(gè)基地址加上一個(gè)偏移量形成操作數(shù)地址的尋址方式稱為變址尋址。v基址寄存器可以是數(shù)

12、據(jù)指針DPTR或程序計(jì)數(shù)器PC,基地址則是基址寄存器的內(nèi)容;v累加器A作為偏移量寄存器,其內(nèi)容為偏移量v基址寄存器的內(nèi)容與偏移量寄存器的內(nèi)容之和作為操作數(shù)地址。變址尋址的尋址空間為程序存儲(chǔ)器。變址尋址的指令只有兩條,即: MOVC A,A+PC; MOVC A,A+DPTR v兩條指令均訪問程序存儲(chǔ)器3.3.6 相對尋址 v相對尋址用于轉(zhuǎn)移類指令,該尋址方式以程序計(jì)數(shù)器PC的當(dāng)前值(指讀出該2字節(jié)或3字節(jié)的轉(zhuǎn)移指令后,PC指向的下條指令的地址)為基準(zhǔn),加上指令中給出的相對偏移量 rel 形成目標(biāo)地址,并將目標(biāo)地址送入PC,使程序轉(zhuǎn)移到目標(biāo)地址繼續(xù)執(zhí)行 v目標(biāo)地址源地址轉(zhuǎn)移指令的字節(jié)數(shù)rel v

13、假設(shè)轉(zhuǎn)移指令 SJMP 08H從程序存儲(chǔ)器2000H單元開始存放,因?yàn)檫@條指令是兩字節(jié)指令,所以v目標(biāo)地址2000H208H200AH3.3.7 位尋址 v對位地址中的內(nèi)容進(jìn)行操作的尋址方式稱為位尋址。v采用位尋址指令的操作數(shù)是8位二進(jìn)制數(shù)中的某一位。下列指令均是位尋址指令:MOV C,20HSETB 30HCLR RI v位尋址指令中,操作數(shù)部分是要操作的數(shù)的位地址,因此,位尋址實(shí)質(zhì)上是直接尋址。 位地址的表示方法1. 用位名稱(限特殊功能寄存器) 例如: CLR RS02. 用位地址(通用) 例如: CLR 0D3H3. 用“字節(jié)地址.位”的形式(通用) 例如: CLR 0D0H.3 4.

14、 對于可位尋址的特殊功能寄存器,可用“特殊功能寄存器名.位” 例如: CLR PSW.35.通過BIT偽指令給位地址賦予名稱,然后使用名稱對位進(jìn)行操作 例如: FLAG BIT 30H MOV C,F(xiàn)LAG 3.4 指令系統(tǒng)分類介紹 v指令系統(tǒng)的111條指令,按照指令功能可分為數(shù)據(jù)傳送類指令、算術(shù)操作類指令、邏輯操作類指令、程序轉(zhuǎn)移類指令、位操作指令。注意v不同的指令尋址的存儲(chǔ)區(qū)不一樣,要操作某個(gè)地址單元中的數(shù)據(jù),不僅地址要正確,還必須保證所使用的指令能尋址數(shù)據(jù)所在的那個(gè)邏輯存儲(chǔ)區(qū)。v必須清楚指令中源操作數(shù)和目的操作數(shù)所對應(yīng)的邏輯存儲(chǔ)區(qū) 3.4.1 數(shù)據(jù)傳送類指令 v傳送類指令是最基本,使用最

15、多的一類指令,可實(shí)現(xiàn)數(shù)據(jù)傳送、存儲(chǔ)和交換等操作v這類指令一般不影響標(biāo)志寄存器PSW的狀態(tài),v例外:將數(shù)據(jù)傳送到累加器A時(shí),會(huì)影響奇偶標(biāo)志P 1.以累加器以累加器A為目的操作數(shù)的傳送指令為目的操作數(shù)的傳送指令 v源操作數(shù)的尋址方式可以是寄存器尋址、直接尋址、寄存器間接尋址、和立即尋址四種基本尋址方式 MOV A , Rn ; (A)(Rn)MOV A , direct ;(A)(direct)MOV A , Ri ;(A)(Ri)MOV A, #data ;(A)#data 例:已知(A)30H,(R0)=40H,片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū)40H單元的內(nèi)容為(40H)=50H:MOV A,R0 ;將R0中的

16、數(shù)據(jù)取出送入A,(A)=40HMOV A,40H ;將40H單元數(shù)據(jù)送入A,(A)=50HMOV A,R0 ;以R0為間址寄存器,將其內(nèi)容40H作為地址,再把該地址單元(片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū)40H單元)的內(nèi)容送入A,(A)=50H。2.以寄存器Rn為目的操作數(shù)的傳送指令 vMOV Rn,direct; Rn (direct)vMOV Rn,#data; Rn #datavMOV Rn,A; Rn A 例:若片內(nèi)數(shù)據(jù)存儲(chǔ)器50H單元的內(nèi)容(50H)=40H, 執(zhí)行指令 MOV R6,50H 后,(R6)40H。 3.以直接地址為目的操作數(shù)的傳送指令 vMOV direct,A;(direct) (A)

17、vMOV direct,Rn;(direct) (Rn)vMOV direct,direct1;(direct)(direct1)vMOV direct,Ri ;(direct)(Ri)vMOV direct,#data;(direct) #data 4. 以間接地址為目的操作數(shù)的傳送指令 vMOV Ri , A ; (Ri) (A)vMOV Ri , direct ; (Ri) (direct)vMOV Ri , #data ; (Ri) #data 5. 查表指令查表指令 vMOVC A,A+DPTR ;(A)(A)+(DPTR) vMOVC A,A+PC ;(PC)(PC)+1,(A)(

18、A)+(PC) 問題: 1 兩條指令尋址的存儲(chǔ)空間是哪個(gè)空間? 2 兩條指令的查找范圍各是多大?6. 外部數(shù)據(jù)存儲(chǔ)器傳送指令 MOVX A,DPTR ;(A) (DPTR)MOVX DPTR,A ;(DPTR) (A)MOVX A,Ri ;(A) (P2Ri)MOVX Ri,A ;(P2Ri)(A) v注意:v 該組指令既可訪問外部數(shù)據(jù)存儲(chǔ)器,也可訪問I/O單元v 注意每條指令的數(shù)據(jù)傳輸方向1. 注意每條指令的16位外部地址的形成方法7.數(shù)據(jù)交換類指令vXCHA , Rn ; (A) (Rn)vXCHA , direct ; (A)(direct)vXCHA , Ri ; (A)(Ri)vXC

19、HDA , Ri ; (A03)(Ri)03)vSWAPA ; (A03)(A47) 交換類指令數(shù)據(jù)傳送示意圖片內(nèi)數(shù)據(jù)存儲(chǔ)器片內(nèi)數(shù)據(jù)存儲(chǔ)器8. 16位數(shù)據(jù)傳送指令 MOV DPTR, #data16 ;(DPTR) #data16 9. 堆棧操作類指令堆棧操作類指令 PUSH direct ; (SP)(SP)+1,(SP)(direct) POP direct ; (direct)(SP),(SP) (SP)1v壓棧時(shí)堆棧指針SP先加1,然后進(jìn)行數(shù)據(jù)傳送;v彈棧時(shí)先進(jìn)行數(shù)據(jù)傳送,然后堆棧指針SP減1 v使用堆棧時(shí)要注意壓棧和彈棧的順序,并保證堆棧平衡傳送類指令小節(jié)v內(nèi)數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)傳送使用M

20、OV、XCH、XCHD、SWAP、PUSH、POP等助記符;v程序存儲(chǔ)器數(shù)據(jù)傳送或稱查表指令使用 MOVC助記符,共兩條指令。v片外數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)傳送使用 MOVX助記符,共四條指令;內(nèi)部數(shù)據(jù)傳送途徑3.4.2 算術(shù)運(yùn)算類指令 v該類指令可以完成加、減、乘、除以及加1、減1和十進(jìn)制調(diào)整等運(yùn)算v這類指令多數(shù)以A為源操作數(shù)之一,同時(shí)又使A為目的操作數(shù)。 1. 加法指令vADD A, #data;(A) (A) + #data vADD A , Rn;(A) (A) + (Rn)vADD A , direct;(A) (A) + (direct)vADD A , Ri;(A) (A) + (Ri)2

21、. 帶進(jìn)位加法指令A(yù)DDC A , Rn ; (A) (A) + (Rn) + (CY)ADDC A , direct ; (A) (A)+(direct)+ (CY)ADDC A , Ri ; (A) (A)+ (Ri)+ (CY)ADDC A , #data ; (A) (A) + #data + (CY)3. 帶借位加法指令SUBB A , Rn ; (A) (A) (Rn) (CY)SUBB A , direct ; (A) (A) (direct) (CY)SUBB A , Ri ; (A) (A) (Ri) (CY)SUBB A , #data ; (A) (A) #data (C

22、Y)4.加1和減1指令I(lǐng)NC A ;(A)(A)+1INC Rn;(Rn)(Rn)+1INC direct ;(direct)(direct)+1INCRi;(Ri)(Ri)+1INCDPTR ;(DPTR)(DPTR)+1DEC A ;(A)(A)1DEC Rn;(Rn)(Rn)1DEC direct ;(direct)(direct)1DEC Ri;(Ri)(Ri)15.十進(jìn)制調(diào)整指令 DA A ;把A中的二進(jìn)制數(shù)調(diào)整為BCD碼v調(diào)整要完成的任務(wù):1)當(dāng)累加器A中的低4位數(shù)出現(xiàn)了非BCD碼(10101111)或低4位產(chǎn)生進(jìn)位(AC=1),則應(yīng)在低4位加6調(diào)整,以產(chǎn)生低4位正確的BCD結(jié)果。

23、2)當(dāng)累加器A中的高4位數(shù)出現(xiàn)了非BCD碼(10101111)或高4位產(chǎn)生進(jìn)位(CY=1),則應(yīng)在高4位加6調(diào)整,以產(chǎn)生高4位正確的BCD結(jié)果。v執(zhí)行本指令后,PSW中的CY表示結(jié)果的百位值。例:設(shè)A的內(nèi)容為BCD碼56,R3內(nèi)容為BCD 碼69 ,要求兩數(shù)按10進(jìn)制相加執(zhí)行指令 ADD A,R3 DA A01010110011010011011111101100110 調(diào)整 001001011結(jié)果 125 10進(jìn)制6. 乘除指令乘法 MUL AB ;(B)158(A)70 (A)(B)v乘數(shù)、被乘數(shù)分別存于A、Bv乘積低字節(jié)存于A。如果乘積大于0FFH,則高字節(jié)存于B,且置位溢出標(biāo)志,否則溢

24、出標(biāo)志清零v進(jìn)位標(biāo)志CY總是為零 除 法DIV AB ;(A)商 (B)余數(shù) (A) /(B) v運(yùn)算前,被除數(shù)、除數(shù)分別存于A、B;v運(yùn)算后,商存于A,余數(shù)存于B;v進(jìn)位標(biāo)志CY清零;v若除數(shù)為零,置位溢出標(biāo)志OV,否則清零OV。 3.4.3 邏輯操作類指令1.邏輯與指令A(yù)NL A, Rn ;(A)(A)(Rn)ANL A, direct ;(A)(A)(direct)ANL A, Ri ;(A)(A)(Ri)ANL A, #data ;(A)(A) #dataANL direct, A ;(direct)(direct)(A)ANL direct, #data ;(direct)(dire

25、ct) #data2. 邏輯或指令ORL A, Rn ;(A)(A)(Rn)ORL A, direct ;(A)(A)(direct)ORL A, Ri;(A)(A)(Ri)ORL A, #data ;(A)(A) #data ORL direct, A ;(direct)(direct)(A)ORL direct, #data ;(direct)(direct)#data3. 邏輯異或指令XRL A, Rn ;(A)(A) (Rn)XRL A, direct ;(A)(A) (direct)XRL A, Ri ;(A)(A) (Ri)XRL A, #data ;(A)(A) # data X

26、RL direct, A ;(direct)(direct)+(A)XRL direct, #data ;(direct)(direct) # datav與、或、異或三類指令都是按位進(jìn)行邏輯運(yùn)算,不影響CY、AC和OV標(biāo)志位;v以A為目的操作數(shù)的指令影響P標(biāo)志位。v如果操作數(shù)direct或Ri是并行I/O口地址,則內(nèi)容取自I/O口鎖存器而非引腳內(nèi)容;v當(dāng)目的操作數(shù)direct是并行I/O口地址是,這類指令是“讀修改寫”指令4. 累加器清零及取反指令CPL A ;(A)(/A)CLR A ;(A)0v這兩條指令影響P標(biāo)志位;v第二條指令還影響Z標(biāo)志5. 移位指令v所有移位指令只能對累加器A內(nèi)容進(jìn)

27、行操作 v循環(huán)左移指令 RL A ;(An1)(An),(A0)(A7)CyA7 A0v 循環(huán)右移指令 RR A ;(An)(An1),(A7)(A0) v 帶進(jìn)位位循環(huán)左移指令 RLC A ;(An1)(An),(CY)(A7), (A0)(CY) CyA7 A0v 帶進(jìn)位位循環(huán)左移指令 RRC A ;(An)(An1),(CY)(A0), (A7)(CY) CyA7 A03.4.4 控制轉(zhuǎn)移類指令 v控制轉(zhuǎn)移類指令可改變程序執(zhí)行的順序,是實(shí)現(xiàn)判斷、分支以及循環(huán)等程序結(jié)構(gòu)的必需指令v控制轉(zhuǎn)移類指令,可分為無條件轉(zhuǎn)移指令、條件轉(zhuǎn)移指令、調(diào)用子程序及返回指令及一條空操作指令1. 無條件轉(zhuǎn)移指令

28、LJMP addr16 ;PC addr16SJMP rel ;PC PC + 2 + relAJMP addr11 ;PC100 addr11 JMP A+DPTR;PC A + DPTRv第一條為長轉(zhuǎn)移指令,直接給出16位目標(biāo)地址,可轉(zhuǎn)移到64K程序存儲(chǔ)器的任何單元 v第二條為相對轉(zhuǎn)移指令,操作數(shù)為偏移量,即目標(biāo)地址與相對轉(zhuǎn)移指令的下一條指令之間的差值,因?yàn)樵撝噶畋旧硎且粭l兩字節(jié)指令 ,所以:目標(biāo)地址源地址 + 2 + rel v第三條稱為短跳轉(zhuǎn)指令,指令給出11位目標(biāo)地址。由操作碼的高3位和一字節(jié)操作數(shù)構(gòu)成 A10 A9 A8 00 0 0 1A7 A0操作碼操作碼操作數(shù)操作數(shù)v該指令執(zhí)

29、行時(shí),PC加2指向下一條指令,然后由新的PC值的高5位和指令給出的11位地址組合成16位目標(biāo)地址,控制程序的轉(zhuǎn)向。 目標(biāo)地址PC1511A10A0v由于短跳轉(zhuǎn)指令只給出了11位目標(biāo)地址,它只能在2K范圍內(nèi)轉(zhuǎn)移 注意:v短跳轉(zhuǎn)指令轉(zhuǎn)移的范圍與相對尋址方式范圍不一樣:相對尋址是以指令(如SJMP)的下一條指令為中心的前后范圍,這一范圍隨指令位置不同而浮動(dòng);短跳轉(zhuǎn)指令的跳轉(zhuǎn)范圍是其下一條指令所在的從程序存儲(chǔ)器0000H單元開始依次劃分的2K區(qū)域,即這個(gè)區(qū)域是固定的。 程序存儲(chǔ)器區(qū)域劃分 序號地址范圍序號地址范圍序號地址范圍序號地址范圍10000H07FFH94000H47FFH178000H87FF

30、H25C000HC7FFH20800H0FFFH104800H4FFFH188800H8FFFH26C800HCFFFH31000H17FFH115000H57FFH199000H97FFH27D000HD7FFH41800H1FFFH125800H5FFFH209800H9FFFH28D800HDFFFH52000H27FFH136000H67FFH21A000HA7FFH29E000HE7FFH62800H2FFFH146800H6FFFH22A800HAFFFH30E800HEFFFH73000H37FFH157000H77FFH23B000HB7FFH31F000HF7FFH83800

31、H3FFFH167800H7FFFH24B800HBFFFH32F800HFFFFHv最后一條為間接轉(zhuǎn)移指令。v轉(zhuǎn)移的目標(biāo)地址為A的內(nèi)容和DPTR的內(nèi)容按無符號數(shù)相加而得到的16位值。v本指令一般用于多分支轉(zhuǎn)移(也稱為散轉(zhuǎn)):由DPTR決定散轉(zhuǎn)表首址,由A確定具體的分支 例:當(dāng)(A)0時(shí),執(zhí)行PRG0段程序,(A)1時(shí),執(zhí)行PRG1段程序,(A)n時(shí),執(zhí)行PRGn段程序(n0,1,2,3) MOV DPTR, #TABLE ;表首址送DPTR RL A ;A乘2 JMP A+DPTR ;散轉(zhuǎn)TABLE: AJMP PRG0 AJMP PRG1 AJMP PRGn2. 條件轉(zhuǎn)移指令 vJZ rel ;若A=0 則轉(zhuǎn)移 (PC PC+2+rel), 若A0 程序順序執(zhí)行vJNZ rel ;若A0 則轉(zhuǎn)移 (PC PC+2+rel), 若A=0 程序順序執(zhí)行vDJNZ Rn, rel ;Rn Rn1, 若Rn0,則轉(zhuǎn)移 (PC PC+2+rel), 若Rn=0,程序順序執(zhí)行vDJNZ direct, rel ;(direct)(direct)1, 若(direct) 0,則轉(zhuǎn)移 (PCPC+3+rel), 若(direct)=0,程序順序執(zhí)行 vCJ

溫馨提示

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

評論

0/150

提交評論