




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、12第第2 2章章:80C51:80C51系列單片機(jī)基本結(jié)構(gòu)及原理系列單片機(jī)基本結(jié)構(gòu)及原理3.1 3.1 匯編語(yǔ)言指令格式及其常用符匯編語(yǔ)言指令格式及其常用符 3.1.1 3.1.1 匯編語(yǔ)言指令格式匯編語(yǔ)言指令格式 3.1.2 3.1.2 機(jī)器碼的三種格式機(jī)器碼的三種格式 3.1.3 3.1.3 指令中常用符號(hào)說(shuō)明指令中常用符號(hào)說(shuō)明3.2 80C513.2 80C51的尋址方式的尋址方式 3.2.1 3.2.1 立即尋址立即尋址 3.2.2 3.2.2 直接尋址直接尋址 3.2.3 3.2.3 寄存器尋址寄存器尋址 3.2.4 3.2.4 寄存器間接尋址寄存器間接尋址 3.2.5 3.2.5
2、 變址尋址變址尋址 3.2.6 3.2.6 相對(duì)尋址相對(duì)尋址 3.2.7 3.2.7 位尋址位尋址目錄目錄3第第2 2章章:80C51:80C51系列單片機(jī)基本結(jié)構(gòu)及原理系列單片機(jī)基本結(jié)構(gòu)及原理3.3 3.3 數(shù)據(jù)傳送類(lèi)指令(數(shù)據(jù)傳送類(lèi)指令(2929條)條) 3.3.1 3.3.1 內(nèi)部?jī)?nèi)部RAMRAM數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令 3.3.2 3.3.2 訪(fǎng)問(wèn)外部訪(fǎng)問(wèn)外部RAMRAM的數(shù)據(jù)傳送指令的數(shù)據(jù)傳送指令MOVX MOVX 3.3.3 3.3.3 讀取讀取ROMROM中常數(shù)表的查表指令中常數(shù)表的查表指令MOVCMOVC 3.3.4 3.3.4 數(shù)據(jù)交換指令數(shù)據(jù)交換指令 3.3.5 3.3.5
3、 堆棧操作指令堆棧操作指令 3.4 3.4 算術(shù)運(yùn)算類(lèi)指令(算術(shù)運(yùn)算類(lèi)指令(2424條)條) 3.4.1 3.4.1 加法指令加法指令 3.4.2 3.4.2 減法指令減法指令 3.4.3 3.4.3 乘、除法指令乘、除法指令3.5 3.5 邏輯運(yùn)算及移位類(lèi)指令邏輯運(yùn)算及移位類(lèi)指令(24(24條條) ) 3.5.1 3.5.1 邏輯與運(yùn)算指令邏輯與運(yùn)算指令 3.5.2 3.5.2 邏輯或運(yùn)算指令邏輯或運(yùn)算指令目錄目錄4第第2 2章章:80C51:80C51系列單片機(jī)基本結(jié)構(gòu)及原理系列單片機(jī)基本結(jié)構(gòu)及原理 3.5.3 3.5.3 邏輯異或運(yùn)算指令邏輯異或運(yùn)算指令 3.5.4 3.5.4 累加器清
4、零、取反指令累加器清零、取反指令 3.5.5 3.5.5 循環(huán)移位指令循環(huán)移位指令3.6 3.6 控制轉(zhuǎn)移類(lèi)指令(控制轉(zhuǎn)移類(lèi)指令(1717條)條) 3.6.1 3.6.1 無(wú)條件轉(zhuǎn)移指令無(wú)條件轉(zhuǎn)移指令 3.6.2 3.6.2 條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令 3.6.3 3.6.3 子程序調(diào)用及返回指令子程序調(diào)用及返回指令 3.6.4 3.6.4 空操作指令空操作指令3.7 3.7 位操作類(lèi)指令位操作類(lèi)指令 3.7.1 3.7.1 位變量傳送指令位變量傳送指令 3.7.2 3.7.2 位置位、清零指令位置位、清零指令 3.7.3 3.7.3 位邏輯運(yùn)算指令位邏輯運(yùn)算指令 3.7.4 3.7.4 位控制
5、轉(zhuǎn)移指令位控制轉(zhuǎn)移指令目錄目錄5第第3 3章章80C5180C51單片機(jī)的尋址方式和指令系統(tǒng)單片機(jī)的尋址方式和指令系統(tǒng)l指令指令是規(guī)定計(jì)算機(jī)進(jìn)行某種操作的命令。l一臺(tái)計(jì)算機(jī)所能執(zhí)行的指令集合稱(chēng)為該計(jì)算機(jī)的指令系統(tǒng)指令系統(tǒng)。I能被計(jì)算機(jī)直接識(shí)別、執(zhí)行的指令是使用二進(jìn)制編碼表示的指令,這種指令被稱(chēng)為機(jī)器語(yǔ)言指令機(jī)器語(yǔ)言指令。機(jī)器語(yǔ)言機(jī)器語(yǔ)言難編寫(xiě)、難讀懂、難查錯(cuò)和難交流。I以助記符表示的指令被稱(chēng)為符號(hào)指令符號(hào)指令。匯編語(yǔ)言匯編語(yǔ)言就是典型的符號(hào)指令。l單片機(jī)常用的編程語(yǔ)言:匯編語(yǔ)言和匯編語(yǔ)言和C C語(yǔ)言語(yǔ)言。6第第3 3章章80C5180C51單片機(jī)的尋址方式和指令系統(tǒng)單片機(jī)的尋址方式和指令系統(tǒng)
6、80C51 80C51系列單片機(jī)匯編語(yǔ)言指令系統(tǒng)共有系列單片機(jī)匯編語(yǔ)言指令系統(tǒng)共有111111條指令,條指令,按功能劃分,可分為五大類(lèi):按功能劃分,可分為五大類(lèi):(1)(1)數(shù)據(jù)傳送類(lèi)指令數(shù)據(jù)傳送類(lèi)指令(29(29條條) ); (2)(2)算術(shù)運(yùn)算類(lèi)指令算術(shù)運(yùn)算類(lèi)指令(24(24條條) );(3)(3)邏輯運(yùn)算及移位類(lèi)指令邏輯運(yùn)算及移位類(lèi)指令(24(24條條) );(4)(4)控制轉(zhuǎn)移類(lèi)指令控制轉(zhuǎn)移類(lèi)指令(17(17條條) );(5)(5)位操作類(lèi)指令位操作類(lèi)指令(17(17條條) )。7 本節(jié)內(nèi)容本節(jié)內(nèi)容3.1.1 3.1.1 匯編語(yǔ)言指令格式匯編語(yǔ)言指令格式3.1.2 機(jī)器碼的三種格式3.
7、1.3 指令中常用符號(hào)說(shuō)明83.1.1 3.1.1 匯編語(yǔ)言指令格式匯編語(yǔ)言指令格式 一條完整的匯編語(yǔ)言指令通常由標(biāo)號(hào)、操作碼、操作數(shù)標(biāo)號(hào)、操作碼、操作數(shù)(一般包括目的操作數(shù)和源操作數(shù))及指令的注釋注釋構(gòu)成。指令格式:指令格式: 標(biāo)號(hào)標(biāo)號(hào): : 操作數(shù)操作數(shù) ,操作數(shù),操作數(shù);注釋?zhuān)蛔⑨?說(shuō)明:說(shuō)明:在一條指令中,方括號(hào)中的內(nèi)容可有可無(wú)方括號(hào)中的內(nèi)容可有可無(wú),尖括號(hào)中的內(nèi)容必尖括號(hào)中的內(nèi)容必須有。須有。由指令格式可見(jiàn),操作碼是指令的核心,不可缺少。操作碼是指令的核心,不可缺少。9標(biāo)號(hào)標(biāo)號(hào)標(biāo)號(hào)是該指令的起始地址,是一種符號(hào)地址。標(biāo)號(hào)可以由標(biāo)號(hào)可以由1 18 8個(gè)字符組成,第一個(gè)字符必須是字母,其
8、余字符可以是字個(gè)字符組成,第一個(gè)字符必須是字母,其余字符可以是字母、數(shù)字或其他特定符號(hào)。標(biāo)號(hào)后跟分界符母、數(shù)字或其他特定符號(hào)。標(biāo)號(hào)后跟分界符“:”。操作碼操作碼指令的助記符。操作碼規(guī)定了指令所能完成的操作功能,是指令的必需部分,是指令的核操作碼規(guī)定了指令所能完成的操作功能,是指令的必需部分,是指令的核心,不可缺少。心,不可缺少。操作數(shù)操作數(shù)指出了指令的操作對(duì)象。操作數(shù)可以是一個(gè)具體的數(shù)據(jù),也可以是存放數(shù)據(jù)的單元地址,還可以是操作數(shù)可以是一個(gè)具體的數(shù)據(jù),也可以是存放數(shù)據(jù)的單元地址,還可以是符號(hào)常量或符號(hào)地址等。符號(hào)常量或符號(hào)地址等。操作數(shù)可分為目的操作數(shù)和源操作數(shù),多個(gè)操作數(shù)之間用逗號(hào)操作數(shù)可分
9、為目的操作數(shù)和源操作數(shù),多個(gè)操作數(shù)之間用逗號(hào)“,”分隔。分隔。注釋注釋為了方便閱讀而添加的解釋說(shuō)明性的文字,用“;”開(kāi)頭。舉例:舉例:START: MOV A,#30H ; START: MOV A,#30H ; 將立即數(shù)將立即數(shù)30H30H傳送至傳送至A A中中10 本節(jié)內(nèi)容本節(jié)內(nèi)容3.1.1 匯編語(yǔ)言指令格式3.1.2 3.1.2 機(jī)器碼的三種格式機(jī)器碼的三種格式3.1.3 指令中常用符號(hào)說(shuō)明113.1.2 3.1.2 機(jī)器碼的三種格式:機(jī)器碼的三種格式: 匯編語(yǔ)言需要編譯成用機(jī)器語(yǔ)言表達(dá)的機(jī)器碼才能在ROM中存放。l按所占字節(jié)分,分三種:按所占字節(jié)分,分三種:(1)單字節(jié)指令49條(只有
10、操作碼,沒(méi)有直接數(shù)字(只有寄存器名)(只有操作碼,沒(méi)有直接數(shù)字(只有寄存器名)(2)雙字節(jié)指令45條(有一個(gè)字節(jié)(有一個(gè)字節(jié)“立即數(shù)立即數(shù)”或一個(gè)字節(jié)或一個(gè)字節(jié)“地址數(shù)地址數(shù)”)(3)三字節(jié)指令17條(有兩個(gè)字節(jié)(有兩個(gè)字節(jié)“立即數(shù)立即數(shù)”或兩個(gè)字節(jié)或兩個(gè)字節(jié)“地址數(shù)地址數(shù)”)l按執(zhí)行時(shí)間來(lái)分,分三種:按執(zhí)行時(shí)間來(lái)分,分三種:(1)1個(gè)機(jī)器周期(12個(gè)時(shí)鐘振蕩周期)的指令64條;(2)2個(gè)機(jī)器周期指令45條;(3)4個(gè)機(jī)器周期-乘、除指令2條。12一、單字節(jié)指令(一、單字節(jié)指令(4949條):條):兩種編碼格式:兩種編碼格式:1.81.8位編碼只表示一個(gè)操作碼編碼,位編碼只表示一個(gè)操作碼編碼,
11、其格式為:例如:例如:INC AINC A 該匯編指令的機(jī)器碼為:0000 0100B其十六進(jìn)制數(shù)為04H,操作數(shù)(累加器A)隱含在操作碼中。注意:注意:在匯編語(yǔ)言指令中,在匯編語(yǔ)言指令中,“A”A”代表累加器,而用代表累加器,而用“ACC”ACC”代代表累加器的地址表累加器的地址E0HE0H。132.82.8位編碼中包含操作碼和寄存器編碼,位編碼中包含操作碼和寄存器編碼,其格式為:這類(lèi)指令中高5位表示操作碼,低3位rrr為存放操作數(shù)的寄存器編碼Rn(n=0,7)。例如:例如:MOV AMOV A,R0R0該指令的編碼為:1110 1000B其十六進(jìn)制表示為E8H,低三位000為R0的編碼。1
12、4二、雙字節(jié)指令(二、雙字節(jié)指令(4545條)條)雙字節(jié)指令為雙字節(jié)指令為1616位編碼,位編碼,其格式為: 第一個(gè)字節(jié)表示操作碼,第二個(gè)字節(jié)為參與操作的操作數(shù)data或數(shù)據(jù)所在地址direct。例如:例如:MOV AMOV A,#30H#30H該指令兩個(gè)字節(jié)的編碼為0111 0100B,0011 0000B其十六進(jìn)制表示為:74H,30H,其中74H存放在指令碼的第一字節(jié),data這個(gè)具體的數(shù)據(jù)存放在第二字節(jié)。15三、三字節(jié)指令(三、三字節(jié)指令(1717條):條):三字節(jié)指令為三字節(jié)指令為2424位編碼,位編碼,其格式為:第一個(gè)字節(jié)表示操作碼,后兩個(gè)字節(jié)為參與操作的操作數(shù)data或數(shù)據(jù)所在地
13、址direct。例如:例如:MOV 20HMOV 20H,#50H#50H該指令的3個(gè)字節(jié)編碼為0111 0101B,0010 0000B,0101 0000B。其十六進(jìn)制表示為75H,20H,50H。第一個(gè)字節(jié)存放75H這個(gè)操作碼,第二個(gè)字節(jié)存放目的地址20H,第三個(gè)字節(jié)存放源操作數(shù)50H。16 本節(jié)內(nèi)容本節(jié)內(nèi)容3.1.1 匯編語(yǔ)言指令格式3.1.2 機(jī)器碼的三種格式3.1.3 3.1.3 指令中常用符號(hào)說(shuō)明指令中常用符號(hào)說(shuō)明173.1.3 3.1.3 指令中常用符號(hào)說(shuō)明指令中常用符號(hào)說(shuō)明在描述在描述80C5180C51系列單片機(jī)指令系統(tǒng)的功能時(shí),經(jīng)常使用的符號(hào)及意義如下:系列單片機(jī)指令系統(tǒng)
14、的功能時(shí),經(jīng)常使用的符號(hào)及意義如下:Rn(n=ORn(n=O7)7) 當(dāng)前選中的工作寄存器中的寄存器R0R7之一;Ri(i=0Ri(i=0、1)1) 當(dāng)前選中的工作寄存器可作為地址指針的寄存器R0、R1;#data#data 8位立即數(shù);#datal6#datal6 16位立即數(shù); direct direct 片內(nèi)部RAM的低128個(gè)單元地址,也可以是特殊功能寄存器SFR的單元地址或符號(hào); addrll addrll 11位目的地址,只限于在ACALL和AJMP指令中使用;addrl6 addrl6 16位目的地址,只限于在LCALL和LJMP指令中使用;rel rel 補(bǔ)碼形式表示的8位地址
15、偏移量,其值的范圍:128127; bit bit 片內(nèi)RAM位尋址區(qū)或可位尋址的特殊功能寄存器的位地址; 間接尋址或變址尋址的前綴標(biāo)志;C C 進(jìn)位標(biāo)志位,也稱(chēng)為位累加器; 加在位地址的前面,表示對(duì)該位先求反再參與操作,但不影響該位的值;(X)(X) 由X指定的寄存器或地址單元中的內(nèi)容;(X)(X) 由X寄存器的內(nèi)容作為地址的存儲(chǔ)單元的內(nèi)容; $ $ 本條指令的起始地址; 指令操作流程,將箭頭右邊的內(nèi)容送到箭頭左邊的單元中; 數(shù)據(jù)交換。18指令中常用符號(hào)說(shuō)明:指令中常用符號(hào)說(shuō)明:Rn當(dāng)前選中的工作寄存器組中的寄存器當(dāng)前選中的工作寄存器組中的寄存器R0-R7R0-R7之一,之一, 所以所以n=
16、0-7n=0-7。Ri當(dāng)前選中的工作寄存器組中可作地址指針的寄存器當(dāng)前選中的工作寄存器組中可作地址指針的寄存器R0R0、R1R1,所以,所以i=0i=0、1 1。#data8 8位立即數(shù)。位立即數(shù)。#data161616位立即數(shù)。位立即數(shù)。Direct內(nèi)部?jī)?nèi)部RAMRAM的的8 8位地址。即可以是內(nèi)部位地址。即可以是內(nèi)部RAMRAM的低的低128128個(gè)單元地址,也可以是特殊功能個(gè)單元地址,也可以是特殊功能寄存器的單元地址或符號(hào)。在指令中寄存器的單元地址或符號(hào)。在指令中directdirect表示直接尋址方式。表示直接尋址方式。Addr111111位目的地址,只限于在位目的地址,只限于在ACA
17、LLACALL和和AJMP AJMP 指令中使用。指令中使用。Addr161616位目的地址,只限于在位目的地址,只限于在LCALLLCALL和和LJMP LJMP 指令中使用。指令中使用。Rel補(bǔ)碼形式表示的補(bǔ)碼形式表示的8 8位地址偏移量,在相對(duì)轉(zhuǎn)移指令中使用。位地址偏移量,在相對(duì)轉(zhuǎn)移指令中使用。Bit表示片內(nèi)表示片內(nèi)RAMRAM位尋址區(qū)或可位尋址的特殊功能寄存器的位地址;位尋址區(qū)或可位尋址的特殊功能寄存器的位地址;間接尋址方式中間址寄存器的前綴標(biāo)志;間接尋址方式中間址寄存器的前綴標(biāo)志;C進(jìn)位標(biāo)志位,它是布爾處理機(jī)的累加器,也稱(chēng)之為位累加器;進(jìn)位標(biāo)志位,它是布爾處理機(jī)的累加器,也稱(chēng)之為位累
18、加器;/加在位地址的前面,表示對(duì)該位先求反再參與操作,但不影響該位的值;加在位地址的前面,表示對(duì)該位先求反再參與操作,但不影響該位的值;(x)由由x x指定的寄存器或地址單元中的內(nèi)容;指定的寄存器或地址單元中的內(nèi)容;(x)由由x x所指寄存器的內(nèi)容作為地址的存儲(chǔ)單元的內(nèi)容;所指寄存器的內(nèi)容作為地址的存儲(chǔ)單元的內(nèi)容;$表示本條指令的起始地址;表示本條指令的起始地址;表示指令操作流程,將箭頭右邊的內(nèi)容送到箭頭左邊的單元中。表示指令操作流程,將箭頭右邊的內(nèi)容送到箭頭左邊的單元中。19l尋址尋址就是尋找操作數(shù)的地址。l尋址方式尋址方式則指出尋找操作數(shù)地址的方式方法。 一條指令可能含多種尋址方式,通常根
19、據(jù)指令的源操作數(shù)來(lái)決定指令的根據(jù)指令的源操作數(shù)來(lái)決定指令的尋址方式。尋址方式。l尋址方式總體上分為兩大類(lèi):尋址方式總體上分為兩大類(lèi):一是操作數(shù)的尋址。一是操作數(shù)的尋址。二是跳轉(zhuǎn)、調(diào)用等指令所涉及的跳轉(zhuǎn)目標(biāo)地址和調(diào)用程序的首地址的尋址。二是跳轉(zhuǎn)、調(diào)用等指令所涉及的跳轉(zhuǎn)目標(biāo)地址和調(diào)用程序的首地址的尋址。2080C5180C51單片機(jī)的尋址方式有七種單片機(jī)的尋址方式有七種: :l 立即數(shù)尋址立即數(shù)尋址l 直接尋址直接尋址l 寄存器尋址寄存器尋址l 寄存器間接尋址寄存器間接尋址l 基址變址尋址基址變址尋址l 相對(duì)尋址相對(duì)尋址l 位尋址位尋址21 本節(jié)內(nèi)容本節(jié)內(nèi)容3.2.1 3.2.1 立即尋址立即尋址
20、3.2.2 直接尋址 3.2.3 寄存器尋址 3.2.4 寄存器間接尋址3.2.5 變址尋址3.2.6 相對(duì)尋址 3.2.7 位尋址223.2.13.2.1立即尋址立即尋址 所謂立即尋址立即尋址就是在指令中直接給出操作數(shù)。 通常把出現(xiàn)在指令中的操作數(shù)稱(chēng)為立即數(shù)立即數(shù),為了與直接尋址指令中的直接地址相區(qū)別,指令中需要在直接給出的具體數(shù)據(jù)前面加“#”#”標(biāo)志標(biāo)志。23【例【例3-13-1】執(zhí)行指令:】執(zhí)行指令:MOV AMOV A,#30H #30H 后累加器后累加器A A的值是多少?的值是多少?解:執(zhí)行指令如圖解:執(zhí)行指令如圖3-13-1所示,所示,(A)=30H(A)=30H。 匯編指令MOV
21、 A,#30H編譯成機(jī)器碼后為:74H,30H,其中30H就是立即數(shù),該指令功能是將30H這個(gè)數(shù)本身送入累加器A中,執(zhí)行完這條指令后累加器A中的值為30H,即(A)=30H。立即尋址所對(duì)應(yīng)的存儲(chǔ)空間為ROM空間。2425 本節(jié)內(nèi)容本節(jié)內(nèi)容3.2.1 立即尋址3.2.2 3.2.2 直接尋址直接尋址 3.2.3 寄存器尋址 3.2.4 寄存器間接尋址3.2.5 變址尋址3.2.6 相對(duì)尋址 3.2.7 位尋址263.2.2 3.2.2 直接尋址直接尋址 直接尋址方式直接尋址方式就是在指令中直接給出操作數(shù)存放在內(nèi)部RAM的地址,或直接給出特殊功能寄存器的地址或符號(hào)。 直接尋址方式可訪(fǎng)問(wèn)以下存儲(chǔ)空間
22、:直接尋址方式可訪(fǎng)問(wèn)以下存儲(chǔ)空間:1)1)內(nèi)部?jī)?nèi)部RAMRAM低低128128個(gè)字節(jié)單元,在指令中直接地址以單元地址的形式給出;個(gè)字節(jié)單元,在指令中直接地址以單元地址的形式給出;2)2)特殊功能寄存器。特殊功能寄存器。27【例【例3-23-2】已知內(nèi)部】已知內(nèi)部RAM (30H)=58HRAM (30H)=58H,執(zhí)行指令,執(zhí)行指令“MOV AMOV A,30H”30H”后,(后,(A A)= =?解:指令執(zhí)行過(guò)程如圖3-2所示,結(jié)果:(A)=58H 。該指令在ROM中的機(jī)器碼為:E5H、30H,其中30H表示直接地址,該指令功能是把內(nèi)部RAM地址為30H單元中的操作數(shù)58H傳送給累加器A,累
23、加器原先的數(shù)值被覆蓋。2829注意:注意:1 1)對(duì)于特殊功能寄存器,其直接地址既可以寫(xiě)成特殊功能寄)對(duì)于特殊功能寄存器,其直接地址既可以寫(xiě)成特殊功能寄存器的直接地址形式。存器的直接地址形式。如指令:如指令:MOV AMOV A,90H90H說(shuō)明:說(shuō)明:90H是特殊功能寄存器P1的直接地址形式。2 2)更常采用特殊功能寄存器的符號(hào)名稱(chēng)來(lái)表示。)更常采用特殊功能寄存器的符號(hào)名稱(chēng)來(lái)表示。如指令:如指令:MOV AMOV A,P1P1說(shuō)明:說(shuō)明:P1是特殊功能寄存器的符號(hào)名稱(chēng),也是符號(hào)地址,在指令中符號(hào)“P1”與地址“90H”是等同的。30 本節(jié)內(nèi)容本節(jié)內(nèi)容3.2.1 立即尋址3.2.2 直接尋址
24、3.2.3 3.2.3 寄存器尋址寄存器尋址 3.2.4 寄存器間接尋址3.2.5 變址尋址3.2.6 相對(duì)尋址 3.2.7 位尋址313.2.3 3.2.3 寄存器尋址寄存器尋址 寄存器尋址寄存器尋址就是以寄存器的內(nèi)容作為操作數(shù)?!纠纠?-33-3】如】如(RO)=60H(RO)=60H,則執(zhí)行,則執(zhí)行MOV AMOV A,R0 R0 指令后,指令后,(A)=?(A)=?解:指令執(zhí)行過(guò)程如圖3-3,結(jié)果:(A)= 60H 。 指令在ROM中的機(jī)器碼為E8H,指令對(duì)應(yīng)的機(jī)器碼是:E8H=1110 1000B,二進(jìn)制的后三位000就是隱含的R0寄存器的編碼,如果是R7其編碼為111。由于寄存器
25、在CPU內(nèi)部,所以采用寄存器尋址可以獲得較高的運(yùn)算速度。3233能實(shí)現(xiàn)這種尋址方式的寄存器有:能實(shí)現(xiàn)這種尋址方式的寄存器有:(1 1)工作寄存器)工作寄存器 R0R0R7R7 (4(4組工作寄存器均可組工作寄存器均可) )(2 2)累加器)累加器A A ( (注:使用注:使用A A為寄存器尋址,使用為寄存器尋址,使用ACCACC為直接尋址為直接尋址) )(3 3)寄存器)寄存器B B ( (注:以注:以ABAB寄存器對(duì)的形式出現(xiàn)時(shí)為寄存器尋址,單獨(dú)出現(xiàn)寄存器對(duì)的形式出現(xiàn)時(shí)為寄存器尋址,單獨(dú)出現(xiàn)時(shí)為直接尋址時(shí)為直接尋址) )(4 4)數(shù)據(jù)指針)數(shù)據(jù)指針DPTRDPTR 例如:例如:MOV AMO
26、V A,R0 R0 ;將R0寄存器的內(nèi)容送到累加器A中。 MOV R2MOV R2,A A ;把累加器A中的內(nèi)容傳送到R2寄存器中。說(shuō)明:說(shuō)明:l采用寄存器尋址方式的指令都是一字節(jié)的指令,指令中以符號(hào)名稱(chēng)來(lái)表示寄存器;l寄存器在CPU內(nèi)部,故有較高的運(yùn)算速度。34 本節(jié)內(nèi)容本節(jié)內(nèi)容3.2.1 立即尋址3.2.2 直接尋址 3.2.3 寄存器尋址 3.2.4 3.2.4 寄存器間接尋址寄存器間接尋址3.2.5 變址尋址3.2.6 相對(duì)尋址 3.2.7 位尋址353.2.4 3.2.4 寄存器間接尋址寄存器間接尋址 所謂寄存器間接尋址寄存器間接尋址就是以寄存器中的內(nèi)容作為RAM地址,該地址中的內(nèi)容
27、才是操作數(shù)。 寄存器名稱(chēng)前加“”標(biāo)志標(biāo)志來(lái)表示寄存器間接尋址。【例【例3-43-4】 (RO)=60H(RO)=60H,(60H)=32H(60H)=32H,則執(zhí)行,則執(zhí)行MOV AMOV A,R0 R0 指令后,指令后,(A)=?(A)=?,(RO)=?(RO)=?解:指令執(zhí)行過(guò)程如圖3-4,結(jié)果:(A)= 32H,(RO)=60H。 36說(shuō)明:說(shuō)明: lR0寄存器的內(nèi)容60H是操作數(shù)地址,內(nèi)部RAM60H的內(nèi)容32H才是操作數(shù),把該操作數(shù)復(fù)制到累加器A中,A中原來(lái)的數(shù)據(jù)被覆蓋了,結(jié)果(A)=32H。l若是寄存器尋址指令:MOV A,R0;則執(zhí)行結(jié)果(A)=60H。371 1)80C5180
28、C51系列單片機(jī)規(guī)定只能用寄存器系列單片機(jī)規(guī)定只能用寄存器R0R0、R1R1、DPTRDPTR作為間接作為間接尋址的寄存器。尋址的寄存器。2 2)間接尋址可以訪(fǎng)問(wèn)的存儲(chǔ)空間為)間接尋址可以訪(fǎng)問(wèn)的存儲(chǔ)空間為內(nèi)部?jī)?nèi)部RAMRAM和和外部外部RAMRAM。內(nèi)部?jī)?nèi)部RAMRAM的低的低128128個(gè)單元采用個(gè)單元采用R0R0、R1R1作為間址寄存器,在指令中表作為間址寄存器,在指令中表現(xiàn)為現(xiàn)為R0R0、R1R1的形式;的形式;外部外部RAMRAM的寄存器間接尋址有兩種形式:的寄存器間接尋址有兩種形式:一是采用一是采用R0R0、R1R1作為間址寄存器,指令中表現(xiàn)為作為間址寄存器,指令中表現(xiàn)為R0R0、R
29、1R1的形式,可尋址外部的形式,可尋址外部RAMRAM的低的低256256個(gè)單元,即可訪(fǎng)問(wèn)地址范圍為個(gè)單元,即可訪(fǎng)問(wèn)地址范圍為0000H0000H00FFH00FFH的單元;的單元;二是采用二是采用1616位的位的DPTRDPTR作為間址寄存器,指令中表現(xiàn)為作為間址寄存器,指令中表現(xiàn)為DPTRDPTR的形式,可尋址外部的形式,可尋址外部RAMRAM整個(gè)整個(gè)64KB64KB個(gè)地址空間,地址范圍為個(gè)地址空間,地址范圍為0000H0000HFFFFHFFFFH的單元。的單元。38 本節(jié)內(nèi)容本節(jié)內(nèi)容3.2.1 立即尋址3.2.2 直接尋址 3.2.3 寄存器尋址 3.2.4 寄存器間接尋址3.2.5
30、3.2.5 變址尋址變址尋址3.2.6 相對(duì)尋址 3.2.7 位尋址393.2.5 3.2.5 變址尋址變址尋址 變址尋址變址尋址是以DPTR或PC作為基址寄存器,以累加器A作為變址寄存器(存放地址偏移量),并以?xún)烧邇?nèi)容相加形成的16位地址作為操作數(shù)地址,用于讀ROM數(shù)據(jù)操作。 在變址尋址中:在變址尋址中:操作數(shù)地址基址變址操作數(shù)地址基址變址l基址寄存器:基址寄存器:16位的地址指針寄存器DPTR或16位的PC寄存器l變址寄存器:變址寄存器:累加器A兩者中的兩者中的“內(nèi)容內(nèi)容”之和形成一個(gè)之和形成一個(gè)1616位的位的“地址地址”,該,該“地址地址”所指的存儲(chǔ)單元所指的存儲(chǔ)單元中的內(nèi)容才是操作數(shù)
31、。中的內(nèi)容才是操作數(shù)。40變址尋址用于兩種情況:變址尋址用于兩種情況:(1)用于對(duì)ROM(包含內(nèi)外ROM)的數(shù)據(jù)進(jìn)行尋址例如:例如:MOVC AMOVC A,A+DPTR A+DPTR ;A(A)+(DPTR)A(A)+(DPTR) MOVC A MOVC A,A+PC A+PC ;A(A)+(PC)A(A)+(PC)l第一條指令的功能將第一條指令的功能將A A的內(nèi)容與的內(nèi)容與DPTRDPTR的內(nèi)容之和作為操作數(shù)地址,把該地的內(nèi)容之和作為操作數(shù)地址,把該地址中的內(nèi)容送入累加器址中的內(nèi)容送入累加器A A中;中;l第二條指令的功能將第二條指令的功能將A A的內(nèi)容與的內(nèi)容與PCPC的內(nèi)容之和作為操作
32、數(shù)地址,把該地址的內(nèi)容之和作為操作數(shù)地址,把該地址中的內(nèi)容送入累加器中的內(nèi)容送入累加器A A中。中。41變址尋址用于兩種情況:變址尋址用于兩種情況:(2)用于跳轉(zhuǎn)指令例如:例如:JMP A+DPTRJMP A+DPTRl跳轉(zhuǎn)指令的功能是將累加器跳轉(zhuǎn)指令的功能是將累加器A A的內(nèi)容與數(shù)據(jù)指針的內(nèi)容與數(shù)據(jù)指針DPTRDPTR的內(nèi)容相加形成指令的內(nèi)容相加形成指令跳轉(zhuǎn)的目標(biāo)地址,從而使程序轉(zhuǎn)移到該地址運(yùn)行。跳轉(zhuǎn)的目標(biāo)地址,從而使程序轉(zhuǎn)移到該地址運(yùn)行。注意:注意:變址尋址所找到的地址是ROM空間的地址,指令中表現(xiàn)為A+DPTR,A+PC的形式。42【例【例3-53-5】若】若(A)(A)03H03H,(
33、,(DPHDPH)=20H=20H,(,(DPLDPL)=00H=00H,即,即(DPTRDPTR)=2000H=2000H,ROMROM的(的(2003H2003H)=66H=66H。執(zhí)行指令執(zhí)行指令MOVC AMOVC A,A+DPTRA+DPTR后,后,(A)=?(A)=?解:指令執(zhí)行過(guò)程如圖3-5,結(jié)果:(A)= 66H,(RO)=60H。 該指令中累加器A的值和DPTR的值相加所得2003H為操作數(shù)所在ROM單元的地址,該地址中的數(shù)據(jù)66H才是要找的操作數(shù),該指令將66H覆蓋累加器A原來(lái)的值。4344 本節(jié)內(nèi)容本節(jié)內(nèi)容3.2.1 立即尋址3.2.2 直接尋址 3.2.3 寄存器尋址
34、3.2.4 寄存器間接尋址3.2.5 變址尋址3.2.6 3.2.6 相對(duì)尋址相對(duì)尋址 3.2.7 位尋址453.2.6 3.2.6 相對(duì)尋址相對(duì)尋址 相對(duì)尋址相對(duì)尋址,用于相對(duì)轉(zhuǎn)移指令相對(duì)轉(zhuǎn)移指令,將程序計(jì)數(shù)器PC的當(dāng)前值與指令中給出的偏移量rel相加,其結(jié)果作為轉(zhuǎn)移地址送入PC中。說(shuō)明:說(shuō)明:l相對(duì)尋址能修改PC的值,故可用來(lái)實(shí)現(xiàn)程序的分支轉(zhuǎn)移;lPC當(dāng)前值是指正在執(zhí)行指令的下一條指令的地址;lrel是一個(gè)帶符號(hào)的8位二進(jìn)制數(shù),取值范圍-128+127。46【例【例3-63-6】設(shè)指令】設(shè)指令SJMP 54HSJMP 54H存放在存放在ROMROM內(nèi)以?xún)?nèi)以2000H2000H起始的單元,起
35、始的單元,求執(zhí)行本指令后程序?qū)⑻D(zhuǎn)到何處執(zhí)行?求執(zhí)行本指令后程序?qū)⑻D(zhuǎn)到何處執(zhí)行?解:這是無(wú)條件相對(duì)轉(zhuǎn)移指令無(wú)條件相對(duì)轉(zhuǎn)移指令,是雙字節(jié)指令雙字節(jié)指令,指令代碼為80H、54H,其中80H是該指令的操作碼,54H是偏移量。轉(zhuǎn)移地址為轉(zhuǎn)移地址為2000H+02H+54H2000H+02H+54H2056H2056H。故指令執(zhí)行后,PC的值變?yōu)?056H,程序的執(zhí)行順序發(fā)生了轉(zhuǎn)移,指令執(zhí)行過(guò)程如圖3-6所示。在實(shí)際編程中,在實(shí)際編程中,“rel” rel” 通常用標(biāo)號(hào)代替。通常用標(biāo)號(hào)代替。例:例:SJMP LOOP1SJMP LOOP14748 本節(jié)內(nèi)容本節(jié)內(nèi)容3.2.1 立即尋址3.2.2 直接
36、尋址 3.2.3 寄存器尋址 3.2.4 寄存器間接尋址3.2.5 變址尋址3.2.6 相對(duì)尋址 3.2.7 3.2.7 位尋址位尋址493.2.7 3.2.7 位尋址位尋址 80C51系列單片機(jī)有位處理功能,位尋址方式位尋址方式是對(duì)內(nèi)RAM和特殊功能寄存器中的可尋址位進(jìn)行操作的尋址方式。 位尋址位尋址是在指令的操作數(shù)位置上直接給出位地址。 例如:例如:MOV C,07HMOV C,07H將位地址將位地址07H(07H(字節(jié)地址字節(jié)地址20H20H中最高位中最高位) )中的數(shù)據(jù)傳傳送到位累加器中的數(shù)據(jù)傳傳送到位累加器CYCY中。中。提示:提示:位地址里的數(shù)據(jù)只可能是一個(gè) 0 或 1。再如:再如
37、:MOV 30H,CMOV 30H,C CLR P1.0 CLR P1.0 ;(P1.0)0(P1.0)0 SETB ACC.7 SETB ACC.7 ;(ACC.7)1(ACC.7)1 CPL C CPL C ;CY/( CY )CY/( CY )50【例【例3-73-7】位地址為】位地址為07H07H單元中的值為單元中的值為1 1,CY=0CY=0,執(zhí)行,執(zhí)行MOV C,07HMOV C,07H指令后,指令后,CY=?CY=?解:該指令的功能是把位地址07H中的值傳送到位累加器CY中。5151系列單片機(jī)的內(nèi)部RAM有兩個(gè)區(qū)域可以位尋址:M一個(gè)是位尋址區(qū)一個(gè)是位尋址區(qū)20H20H2FH2FH
38、單元的單元的128128位;位;M另一個(gè)是字節(jié)地址能被另一個(gè)是字節(jié)地址能被8 8整除的特殊功能寄存器的相應(yīng)位。整除的特殊功能寄存器的相應(yīng)位。52在在MCS-51MCS-51系列單片機(jī)中,位地址有以下幾種表示方式:系列單片機(jī)中,位地址有以下幾種表示方式:(1 1)直接使用位地址。)直接使用位地址。對(duì)于對(duì)于20H20H2FH2FH共共1616個(gè)單元的個(gè)單元的128128位,其位地址編號(hào)是位,其位地址編號(hào)是00H00H7FH7FH,例如,例如,20H20H單元單元的的0 07 7位的位地址為位的位地址為00H00H07H07H。(2 2)用單元地址加位序號(hào)表示。)用單元地址加位序號(hào)表示。如如25H.
39、525H.5表示表示25H25H單元的單元的D5D5位(位地址是位(位地址是2DH2DH),而),而PSWPSW中的中的D3D3可表示為可表示為D0H.3D0H.3。這種表示方法可以避免查表或計(jì)算,比較方便。這種表示方法可以避免查表或計(jì)算,比較方便。(3 3)用位名稱(chēng)表示。)用位名稱(chēng)表示。特殊功能寄存器中的可尋址位均有位名稱(chēng),可以用位名稱(chēng)來(lái)表示該位。如可用特殊功能寄存器中的可尋址位均有位名稱(chēng),可以用位名稱(chēng)來(lái)表示該位。如可用RS0RS0表示表示PSWPSW中的中的D3D3位:位:D0H.3D0H.3(4 4)對(duì)特殊功能寄存器可直接用寄存器符號(hào)加位序號(hào)表示。)對(duì)特殊功能寄存器可直接用寄存器符號(hào)加位
40、序號(hào)表示。如如PSWPSW中的中的D3D3位,又可表示為位,又可表示為PSW.3PSW.3。5354 本節(jié)內(nèi)容本節(jié)內(nèi)容3.3.1 3.3.1 內(nèi)部?jī)?nèi)部RAMRAM數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令 3.3.2 訪(fǎng)問(wèn)外部RAM的數(shù)據(jù)傳送指令MOVX 3.3.3 讀取ROM中常數(shù)表的查表指令MOVC3.3.4 數(shù)據(jù)交換指令 3.3.5 堆棧操作指令 55 數(shù)據(jù)傳送類(lèi)指令數(shù)據(jù)傳送類(lèi)指令(29條)是最常用、最基本的一類(lèi)指令,主要用于數(shù)據(jù)的傳送、保存及交換等場(chǎng)合主要用于數(shù)據(jù)的傳送、保存及交換等場(chǎng)合。 數(shù)據(jù)傳送類(lèi)指令的一般功能是把源操作數(shù)傳送到目的操作功能是把源操作數(shù)傳送到目的操作數(shù),指令執(zhí)行后,源操作數(shù)不變,目的
41、操作數(shù)被源操作數(shù)代替。數(shù),指令執(zhí)行后,源操作數(shù)不變,目的操作數(shù)被源操作數(shù)代替。3.3.13.3.1內(nèi)部?jī)?nèi)部RAMRAM數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令 內(nèi)部RAM的數(shù)據(jù)傳送類(lèi)指令共16條,包括累加器累加器、寄存器寄存器、特殊功能寄存器特殊功能寄存器、RAMRAM單元單元之間的相互數(shù)據(jù)傳送。56一、以累加器一、以累加器A A為目的操作數(shù)的數(shù)據(jù)傳送指令為目的操作數(shù)的數(shù)據(jù)傳送指令 MOV AMOV A,#data #data ;AdataAdata MOV A MOV A,direct direct ;A(direct)A(direct) MOV A MOV A,Rn Rn ;A(Rn)A(Rn) MOV
42、A MOV A,Ri Ri ;A(Ri)A(Ri) l這組指令的功能:這組指令的功能:將源操作數(shù)所指定的內(nèi)容送入累加器A中。l源操作數(shù)可以采用立即尋址立即尋址、直接尋址直接尋址、寄存器尋址寄存器尋址和寄存寄存器間接尋址器間接尋址4種尋址方式。 57【例【例3-83-8】若(】若(RORO)=20H=20H,(20H)=66H(20H)=66H,試分別求解每條指令執(zhí),試分別求解每條指令執(zhí)行后,行后,(A)=?(A)=?MOV AMOV A,#20H #20H ;A20HA20HMOV AMOV A,20H 20H ;A(20H)A(20H)MOV AMOV A,R0 R0 ;A(R0)A(R0)
43、MOV AMOV A,RO RO ;A(RO)A(RO)解:執(zhí)行每條指令后:解:執(zhí)行每條指令后:(A A)=20H =20H (A A)=66H=66H(A A)=20H =20H (A A)=66H=66H58二、以寄存器二、以寄存器RnRn為目的操作數(shù)的數(shù)據(jù)傳送指令為目的操作數(shù)的數(shù)據(jù)傳送指令 MOV RnMOV Rn, A A ;Rn(A)Rn(A) MOV Rn MOV Rn,#data #data ;RndataRndata MOV Rn MOV Rn,direct direct ;Rn(direct)Rn(direct)l這組指令的功能:這組指令的功能:將源操作數(shù)所指定的內(nèi)容送到當(dāng)前
44、工作寄存器組R0R7中的某個(gè)寄存器中。l源操作數(shù)可以采用累加器累加器A A(屬于寄存器尋址)、立即尋址立即尋址和直直接尋址。接尋址。注意:沒(méi)有注意:沒(méi)有“MOV RnMOV Rn,Rn”Rn”指令,也沒(méi)有指令,也沒(méi)有“MOV RnMOV Rn,Ri”Ri”指指令。令。59【例【例3-93-9】 已知已知(A)=50H(A)=50H,(R1)=10H(R1)=10H,(R2)=20H(R2)=20H,(R3)=30H(R3)=30H,(30H)=4FH(30H)=4FH,求解每條指令的執(zhí)行結(jié)果。,求解每條指令的執(zhí)行結(jié)果。 MOV R1 MOV R1,A A ;R1(A)R1(A) MOV R2
45、MOV R2,30H 30H ;R2(30H)R2(30H) MOV R3 MOV R3,#85H #85H ;R385HR385H解:執(zhí)行后:解:執(zhí)行后: (R1)=50H(R1)=50H;(R2)=4FH(R2)=4FH;(R3)=85H(R3)=85H。 第條指令的執(zhí)行過(guò)程見(jiàn)圖3-8。6061三、以直接地址為目的操作數(shù)的數(shù)據(jù)傳送指令三、以直接地址為目的操作數(shù)的數(shù)據(jù)傳送指令 MOV directMOV direct,A A ;direct(A)direct(A) MOV direct MOV direct,#data #data ;directdatadirectdata MOV dire
46、ct1 MOV direct1,direct2 direct2 ;direct1(direct2)direct1(direct2) MOV direct MOV direct,Rn Rn ;direct(Rn)direct(Rn) MOV direct MOV direct,Ri Ri ;direct(Ri)direct(Ri)l這組指令的功能:這組指令的功能:將源操作數(shù)所指出的內(nèi)容送入由直接地址direct所指定的片內(nèi)存儲(chǔ)單元。l源操作數(shù)可以采用寄存器尋址寄存器尋址、立即尋址立即尋址、直接尋址直接尋址和寄存寄存器間接尋址器間接尋址四種方式。62【例【例3-103-10】 若(若(A A)=3
47、6H=36H,(,(50H50H)=22H=22H,(R0)=60H(R0)=60H,(60H)=72H(60H)=72H,求解每條指令執(zhí)行后,(,求解每條指令執(zhí)行后,(40H40H)?)?MOV 40HMOV 40H,A A ;40H(A)40H(A)MOV 40HMOV 40H,#50H #50H ;40H50H40H50HMOV 40HMOV 40H,50H 50H ;40H(50H)40H(50H)MOV 40HMOV 40H,R0 R0 ;40H40H(R0)R0)MOV 40HMOV 40H,R0 R0 ;(40H)(R0)(40H)(R0)解:每條指令的執(zhí)行結(jié)果分別為:(40H)
48、36H;(40H)50H;(40H)22H;(40H)60H;(40H) 72H。63MOV 40HMOV 40H,R0 R0 ;(40H)(R0)(40H)(R0)第條指令的執(zhí)行過(guò)程如圖3-9所示。64四、以間接地址四、以間接地址RiRi為目的操作數(shù)的數(shù)據(jù)傳送指令為目的操作數(shù)的數(shù)據(jù)傳送指令 MOV RiMOV Ri,A A ;(Ri)(A)(Ri)(A) MOV Ri MOV Ri,#data #data ;(Ri)data(Ri)data MOV Ri MOV Ri,direct direct ;(Ri)(direct)(Ri)(direct)l這組指令的功能:這組指令的功能:把源操作數(shù)所
49、指定的內(nèi)容送入以R0或R1為地址指針的片內(nèi)RAM單元中。l源操作數(shù)可以采用寄存器尋址寄存器尋址、立即尋址立即尋址和直接尋址直接尋址3種方式。注意注意: :沒(méi)有沒(méi)有“MOV RiMOV Ri,Rn”Rn”指令和指令和“MOV RiMOV Ri,Ri”Ri”指令。指令。 65【例【例3-113-11】 已知已知(R1)=60H(R1)=60H,(A)=20H(A)=20H,(,(30H30H)=22H =22H ,試分別,試分別求解每條指令的執(zhí)行結(jié)果。求解每條指令的執(zhí)行結(jié)果。 MOV R1 MOV R1,A A ;(R1)(A)(R1)(A) MOV R1 MOV R1,#26H #26H ;(R
50、1)26H(R1)26H MOV R1 MOV R1,30H 30H ;(R1)(30H)(R1)(30H)解:本條指令用源操作數(shù)的值修改的寄存器的值作為地址單元中的內(nèi)容,寄存器的值不變。第三條指令的執(zhí)行過(guò)程如圖3-10所示。(R1)=60H,(60H)20H;(R1)=60H,(60H)26H; (R1)=60H,(60H)22H。6667五、以五、以DPTRDPTR為目的操作數(shù)的數(shù)據(jù)傳送指令為目的操作數(shù)的數(shù)據(jù)傳送指令 MOV DPTRMOV DPTR,#data16 #data16 ;DPTRdata16DPTRdata16l這是80C51系列單片機(jī)指令系統(tǒng)唯一的一條唯一的一條1616位傳
51、送指令位傳送指令。l功能:功能:是將外部存儲(chǔ)器(RAM或ROM)某單元地址作為立即數(shù)送到DPTR中,立即數(shù)的高高8 8位送位送DPHDPH,低,低8 8位送位送DPLDPL。68在使用上述各類(lèi)傳送指令時(shí),需注意以下幾點(diǎn):在使用上述各類(lèi)傳送指令時(shí),需注意以下幾點(diǎn):(1)(1)要區(qū)分各種尋址方式的含義,正確傳送數(shù)據(jù)。要區(qū)分各種尋址方式的含義,正確傳送數(shù)據(jù)?!纠纠?-123-12】若】若(R0)=30H(R0)=30H,(30H)=50H(30H)=50H時(shí),以下指令的執(zhí)行結(jié)果:時(shí),以下指令的執(zhí)行結(jié)果:MOV AMOV A,RO RO ;MOV AMOV A,R0 R0 ;MOV AMOV A,3
52、0H 30H ;MOV AMOV A,#30H #30H ;執(zhí)行結(jié)果:執(zhí)行結(jié)果:(A)=30H(A)=30H(A)=(30H)=50H(A)=(30H)=50H(A)=(30H)=50H(A)=(30H)=50H (A)=30H(A)=30H69MCS-51MCS-51單片機(jī)片內(nèi)數(shù)據(jù)傳送圖單片機(jī)片內(nèi)數(shù)據(jù)傳送圖 70在使用上述各類(lèi)傳送指令時(shí),需注意以下幾點(diǎn):在使用上述各類(lèi)傳送指令時(shí),需注意以下幾點(diǎn):(2)(2)所有傳送指令都不影響標(biāo)志位。所有傳送指令都不影響標(biāo)志位。這里所說(shuō)的標(biāo)志位是指CY、AC和OV,涉及累加器A的將影響奇偶標(biāo)志位P。(3)(3)估算指令的字節(jié)數(shù)。估算指令的字節(jié)數(shù)。凡是指令中既
53、不包含直接地址,又不包含凡是指令中既不包含直接地址,又不包含8 8位立即數(shù)的指令均為一字節(jié)指令;位立即數(shù)的指令均為一字節(jié)指令;若指令中包含一個(gè)直接地址或若指令中包含一個(gè)直接地址或8 8位立即數(shù),指令字節(jié)數(shù)為位立即數(shù),指令字節(jié)數(shù)為2 2,若包含兩個(gè)這樣的操作數(shù),則指令字節(jié)數(shù)為若包含兩個(gè)這樣的操作數(shù),則指令字節(jié)數(shù)為3 3。如: MOV A,R0 ;1字節(jié) MOV A,direct ;2字節(jié) MOV direct,#data ;3字節(jié) MOV DPTR,#datal16 ;3字節(jié)71 本節(jié)內(nèi)容本節(jié)內(nèi)容3.3.1 內(nèi)部RAM數(shù)據(jù)傳送指令 3.3.2 3.3.2 訪(fǎng)問(wèn)外部訪(fǎng)問(wèn)外部RAMRAM的數(shù)據(jù)傳送指
54、令的數(shù)據(jù)傳送指令MOVXMOVX 3.3.3 讀取ROM中常數(shù)表的查表指令MOVC3.3.4 數(shù)據(jù)交換指令 3.3.5 堆棧操作指令 723.3.23.3.2訪(fǎng)問(wèn)外部訪(fǎng)問(wèn)外部RAMRAM的數(shù)據(jù)傳送指令的數(shù)據(jù)傳送指令MOVXMOVX 單片機(jī)片經(jīng)常會(huì)與外部RAM進(jìn)行數(shù)據(jù)交換,以及對(duì)外部I/O口輸出控制信號(hào)或讀取外部I/O口的狀態(tài)。 80C51單片機(jī)與外部外部RAMRAM或I/OI/O口口進(jìn)行數(shù)據(jù)傳送沒(méi)有專(zhuān)門(mén)的指令,都用MOVXMOVX指令指令,且必須采用寄存器間接尋址寄存器間接尋址的方法,并通過(guò)累加器累加器A A來(lái)傳送。73一、單片機(jī)讀取片外一、單片機(jī)讀取片外RAMRAM或或I/OI/O口指令口指
55、令 MOVX AMOVX A,DPTR DPTR ;A(DPTR)A(DPTR) MOVX A MOVX A,Ri Ri ;A(Ri)A(Ri)二、單片機(jī)寫(xiě)片外二、單片機(jī)寫(xiě)片外RAMRAM或或I/OI/O口指令口指令 MOVX DPTRMOVX DPTR,A A ;(DPTR)(A)(DPTR)(A) MOVX Ri MOVX Ri,A A ;(Ri)(A) (Ri)(A) l該組指令的功能:該組指令的功能:在DPTR或R0、R1所指定的外部RAM單元與累加器A之間傳送數(shù)據(jù)。l注意:注意:片外擴(kuò)展的I/O接口進(jìn)行數(shù)據(jù)的讀、寫(xiě)沒(méi)有專(zhuān)門(mén)的指令,只能與外部RAM共用這四條指令。74一、單片機(jī)讀取片外
56、一、單片機(jī)讀取片外RAMRAM或或I/OI/O口指令口指令 MOVX AMOVX A,DPTR DPTR ;A(DPTR)A(DPTR) MOVX A MOVX A,Ri Ri ;A(Ri)A(Ri)二、單片機(jī)寫(xiě)片外二、單片機(jī)寫(xiě)片外RAMRAM或或I/OI/O口指令口指令 MOVX DPTRMOVX DPTR,A A ;(DPTR)(A)(DPTR)(A) MOVX Ri MOVX Ri,A A ;(Ri)(A) (Ri)(A) l前兩條指令是以DPTRDPTR作為間址寄存器,DPTR是16位,其尋址范圍可達(dá)片外片外RAM 64KBRAM 64KB空間。l后兩條指令是以R0R0或或R1R1作為
57、間址寄存器,R0或R1是8位,其尋址范圍僅限于外部外部RAM 256RAM 256個(gè)字節(jié)個(gè)字節(jié)單元。75【例【例3-133-13】試編程,將片外】試編程,將片外RAMRAM的的2000H2000H單元內(nèi)容送入片外單元內(nèi)容送入片外RAMRAM的的20H20H單元中。單元中。解:片外RAM與片外RAM之間不能直接傳送,需通過(guò)累加器A;另外,當(dāng)片外RAM地址值大于0FFH時(shí),不能用R0和R1作為間址寄存器,需用DPTR作為間址寄存器。編程如下:MOV DPTR,#2000H ;源數(shù)據(jù)地址送DPTRMOVX A, DPTR ;從外部RAM中取數(shù)送AMOV RO, #20H ;目的地址送DPTRMOVX
58、 R0, A ;A中內(nèi)容送外部RAM76 本節(jié)內(nèi)容本節(jié)內(nèi)容3.3.1 內(nèi)部RAM數(shù)據(jù)傳送指令 3.3.2 訪(fǎng)問(wèn)外部RAM的數(shù)據(jù)傳送指令MOVX 3.3.3 3.3.3 讀取讀取ROMROM中常數(shù)表的查表指令中常數(shù)表的查表指令MOVCMOVC3.3.4 數(shù)據(jù)交換指令 3.3.5 堆棧操作指令 773.3.3 3.3.3 讀取讀取ROMROM中常數(shù)表的查表指令中常數(shù)表的查表指令MOVCMOVC 通常ROM中是用來(lái)存放供單片機(jī)CPU執(zhí)行的程序代碼的,但其內(nèi)部也可以用來(lái)存放固定不變的數(shù)據(jù),如:表格數(shù)據(jù)。 讀取ROMROM中常數(shù)表的查表指令查表指令MOVCMOVC,能夠?qū)⒊绦虼鎯?chǔ)器表格中的數(shù)據(jù)或字段代碼
59、送到累加器A中。 MOVC AMOVC A,A+DPTR A+DPTR ;A(A)+(DPTR)A(A)+(DPTR) MOVC A MOVC A,A+PC A+PC ;A(A)+(PC)A(A)+(PC)78 MOVC A MOVC A,A+DPTR A+DPTR ;A(A)+(DPTR)A(A)+(DPTR) MOVC A MOVC A,A+PC A+PC ;A(A)+(PC)A(A)+(PC)l指令的功能功能是從程序存儲(chǔ)器中讀取源操作數(shù)送入累加器從程序存儲(chǔ)器中讀取源操作數(shù)送入累加器A A中中。 l這兩條指令特別適合于讀取在ROM中建立的數(shù)據(jù)表格,故稱(chēng)做查表指令查表指令。l源操作數(shù)均為變址
60、尋址方式變址尋址方式。l兩條指令都是一字節(jié)一字節(jié)指令。79二者在使用中有一點(diǎn)差異:二者在使用中有一點(diǎn)差異:l第一條指令采用第一條指令采用DPTRDPTR作為基址寄存器。作為基址寄存器。表格數(shù)據(jù)可存放在表格數(shù)據(jù)可存放在64KB ROM64KB ROM的任意位置,使用前需將表格首地址送入的任意位置,使用前需將表格首地址送入DPTRDPTR中,因此這條指令稱(chēng)為中,因此這條指令稱(chēng)為遠(yuǎn)程查表指令遠(yuǎn)程查表指令。l第二條指令是以第二條指令是以PCPC作為基址寄存器。作為基址寄存器。表格長(zhǎng)度不能超過(guò)表格長(zhǎng)度不能超過(guò)256B,256B,程序中程序中PCPC值是確定的,為下一條指令的地址,不能值是確定的,為下一條
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45141-2025反滲透進(jìn)水修正污染指數(shù)測(cè)定方法
- 別墅清包工合同范本
- 醫(yī)院合資合同范本
- 農(nóng)藥合同范本
- 勞保買(mǎi)賣(mài)合同范本
- 二手房出售門(mén)面房合同范本
- 水槽代工合同范本
- 醫(yī)院信息咨詢(xún)合同范本
- 主體沉降觀測(cè)合同范本
- 單個(gè)產(chǎn)品銷(xiāo)售合同范本
- (正式版)JBT 14660-2024 額定電壓6kV到30kV地下掘進(jìn)設(shè)備用橡皮絕緣軟電纜
- 本科院校-基礎(chǔ)醫(yī)學(xué)-醫(yī)學(xué)細(xì)胞生物學(xué)-第二章 細(xì)胞的概念與分子基礎(chǔ)
- iso37001-2016反賄賂管理手冊(cè)程序文件表單一整套
- 2.2算法的概念及其描述課件人教中圖版高中信息技術(shù)必修1
- 新蘇教版科學(xué)六年級(jí)下冊(cè)全冊(cè)教案(含反思)
- 高速公路橋頭跳車(chē)判別和處治
- 勃利縣大四站鎮(zhèn)侵蝕溝治理工程施工組織設(shè)計(jì)
- 汽車(chē)電子技術(shù)專(zhuān)業(yè)人才培養(yǎng)方案樣本
- 血栓風(fēng)險(xiǎn)評(píng)估及個(gè)體化干預(yù)(遺傳性易栓癥風(fēng)險(xiǎn)基因檢測(cè))
- 血透患者的健康宣教課件
- 醫(yī)院輿情應(yīng)對(duì)處置預(yù)案
評(píng)論
0/150
提交評(píng)論