




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第4 4章章 指令系統(tǒng)指令系統(tǒng)4.1 4.1 概述概述4.2 4.2 尋址方式尋址方式4.3 4.3 指令系統(tǒng)指令系統(tǒng)4.1 4.1 概述概述 MCS-51 MCS-51單片機(jī)使用單片機(jī)使用7 7種尋址方式,有種尋址方式,有111111條指令。其中單字節(jié)指條指令。其中單字節(jié)指令令4949條,雙字節(jié)指令條,雙字節(jié)指令4545條,三字節(jié)指令條,三字節(jié)指令1717條,可分為以下條,可分為以下7 7類(lèi):類(lèi):(1 1)數(shù)據(jù)傳送類(lèi)指令)數(shù)據(jù)傳送類(lèi)指令2929條;條;(2 2)算術(shù)運(yùn)算類(lèi)指令)算術(shù)運(yùn)算類(lèi)指令2424條;條;(3 3)邏輯運(yùn)算類(lèi)指令)邏輯運(yùn)算類(lèi)指令2020條;條;(4 4)移位類(lèi)指令)移位類(lèi)
2、指令4 4條;條;(5 5)控制轉(zhuǎn)移類(lèi)指令)控制轉(zhuǎn)移類(lèi)指令1818條;條;(6 6)調(diào)用)調(diào)用/ /返回類(lèi)指令返回類(lèi)指令4 4條;條;(7 7)位操作類(lèi)指令)位操作類(lèi)指令1717條。條。 在介紹指令功能之前,先對(duì)指令系統(tǒng)中使用的符號(hào)作以簡(jiǎn)要說(shuō)在介紹指令功能之前,先對(duì)指令系統(tǒng)中使用的符號(hào)作以簡(jiǎn)要說(shuō)明。明。 Rn Rn:當(dāng)前寄存器工作區(qū)中的寄存器,其中:當(dāng)前寄存器工作區(qū)中的寄存器,其中n=0n=07 7; directdirect:內(nèi)部數(shù)據(jù)存儲(chǔ)器地址,指定一個(gè)內(nèi)部:內(nèi)部數(shù)據(jù)存儲(chǔ)器地址,指定一個(gè)內(nèi)部RAMRAM單元或一個(gè)專(zhuān)用寄存器;單元或一個(gè)專(zhuān)用寄存器; RiRi:通過(guò):通過(guò)R1R1或或R0R0間接
3、尋址,指定數(shù)據(jù)存儲(chǔ)器間接尋址,指定數(shù)據(jù)存儲(chǔ)器RAMRAM中的一個(gè)單元;中的一個(gè)單元; #data#data:指令中的:指令中的8 8位立即數(shù);位立即數(shù); #data16#data16:指令中的:指令中的1616位立即數(shù);位立即數(shù); addr11addr11:1111位目的地址,用在位目的地址,用在ACALLACALL或或AJMPAJMP指令中,表示調(diào)用或轉(zhuǎn)移地址;指令中,表示調(diào)用或轉(zhuǎn)移地址; addr16addr16:1616位目的地址,用在位目的地址,用在LCALLLCALL或或LJMPLJMP指令中,表示調(diào)用或轉(zhuǎn)換地址;指令中,表示調(diào)用或轉(zhuǎn)換地址; relrel:8 8位偏移量,用補(bǔ)碼表示
4、,用在位偏移量,用補(bǔ)碼表示,用在SJMPSJMP等轉(zhuǎn)移指令中;等轉(zhuǎn)移指令中; bitbit:表示位尋址空間中的位地址,:表示位尋址空間中的位地址,8 8位,尋址范圍為位,尋址范圍為0 0FFHFFH。 4.2 4.2 尋址方式尋址方式 MCS-51MCS-51單片機(jī)有單片機(jī)有7 7種尋址方式。種尋址方式。1.1.立即尋址立即尋址是指操作數(shù)在指令操作數(shù)域直接給是指操作數(shù)在指令操作數(shù)域直接給出,因此也稱(chēng)為立即數(shù),用符號(hào)出,因此也稱(chēng)為立即數(shù),用符號(hào)“# #”說(shuō)明。說(shuō)明。例如指令例如指令 MOV AMOV A;#25H#25H其中其中25H25H是立即數(shù)。其功能是指立是立即數(shù)。其功能是指立即數(shù)即數(shù)25
5、H25H送入累加器送入累加器A A中,如圖中,如圖4.14.1所所示。示。PCPC+1M0010010101110100A00100101操作碼立即數(shù)圖4.1 立即尋址(MOV A, #25H)圖4.2 立即尋址(MOV DPTR, #1856H)00011000MPCPC+10101011001110100操作碼立即數(shù)高位立即數(shù)低位DPHDPL0001100001010110又如指令又如指令 MOV DPTR, #1856H MOV DPTR, #1856H 1616位立即數(shù)送地址寄存器位立即數(shù)送地址寄存器DPTRDPTR如圖如圖4.24.2所示。所示。DPHDPH表示表示DPTRDPTR的
6、高的高8 8位,位,DPLDPL表示低表示低8 8位。實(shí)際上,位。實(shí)際上,1616位立即數(shù)傳送指令僅位立即數(shù)傳送指令僅此一條。此一條。2.2.直接尋址直接尋址 是指操作數(shù)的地址直接在指令操作數(shù)域給出。是指操作數(shù)的地址直接在指令操作數(shù)域給出。 例如指令例如指令 MOV AMOV A,3CH3CH 其中其中3CH3CH為直接地址。指令功能是把內(nèi)部為直接地址。指令功能是把內(nèi)部RAMRAM中中3CH3CH單元的數(shù)據(jù)傳送給單元的數(shù)據(jù)傳送給累加器累加器A A,其示意如圖,其示意如圖4.34.3所示。所示。 由于直接地址只能用由于直接地址只能用8 8位數(shù)表示,因此僅限于尋址內(nèi)部數(shù)據(jù)存儲(chǔ)器位數(shù)表示,因此僅限于
7、尋址內(nèi)部數(shù)據(jù)存儲(chǔ)器RAMRAM和特殊功能寄存器,也是唯一能尋址特殊功能寄存器的尋址方式。和特殊功能寄存器,也是唯一能尋址特殊功能寄存器的尋址方式。圖4.3 直接尋址(MOV A,3CH)RAM010101010011110011100101M操作碼直接地址PCPC+13CHA010101013.3.寄存器尋址寄存器尋址 是指操作數(shù)在寄存器中,寄存器用符號(hào)表示。是指操作數(shù)在寄存器中,寄存器用符號(hào)表示。 例如指令例如指令 MOV AMOV A,R1R1 指令功能是把寄存器指令功能是把寄存器R1R1中的內(nèi)容送入累加器中的內(nèi)容送入累加器A A,其示意如圖,其示意如圖4.44.4所示。所示。 寄存器尋址
8、方式可訪問(wèn)寄存器尋址方式可訪問(wèn)4 4個(gè)寄存器工作區(qū)中的當(dāng)前工作寄存器組個(gè)寄存器工作區(qū)中的當(dāng)前工作寄存器組R0R0R7R7,也可用于累加器,也可用于累加器A A、通用寄存器、通用寄存器B B,地址寄存器,地址寄存器DPTRDPTR和進(jìn)位位和進(jìn)位位C C。其中。其中R0R0R7R7由指令操作碼的低由指令操作碼的低3 3位表示,位表示,A A、B B、DPTRDPTR以及以及C C隱含在指令操作碼中隱含在指令操作碼中 PCM11101001R1圖4.4 寄存器尋址(MOV A, R1)操作碼A11111111R1111111114.4.寄存器間接尋址寄存器間接尋址 是指寄存器中存放的是操作數(shù)的地址,
9、而操作數(shù)在存儲(chǔ)器中。寄是指寄存器中存放的是操作數(shù)的地址,而操作數(shù)在存儲(chǔ)器中。寄存器間接尋址用符號(hào)存器間接尋址用符號(hào)“”表示。表示。 例如指令例如指令 MOV AMOV A,R0R0 R0 R0中存放的是操作數(shù)地址,指令功能是把中存放的是操作數(shù)地址,指令功能是把R0R0中的內(nèi)容所指定的中的內(nèi)容所指定的RAMRAM單元中的數(shù)據(jù)送入累加器單元中的數(shù)據(jù)送入累加器A A中,其示意如圖中,其示意如圖4-54-5所示??捎米鏖g接尋址所示。可用作間接尋址的寄存器有的寄存器有R0R0、R1R1、 DPTRDPTR和和SPSP。 圖4.5 寄存器間接尋址(MOV A, R0)3CHA11111111R000111
10、100RAM000110005.5.相對(duì)尋址相對(duì)尋址 是以程序計(jì)數(shù)器是以程序計(jì)數(shù)器PCPC的當(dāng)前值為基地址,加上指令中給出的偏移量的當(dāng)前值為基地址,加上指令中給出的偏移量relrel作為作為轉(zhuǎn)移目的地址。由于目的地址是相對(duì)于轉(zhuǎn)移目的地址。由于目的地址是相對(duì)于PCPC中的當(dāng)前值,所以稱(chēng)為相對(duì)地址。中的當(dāng)前值,所以稱(chēng)為相對(duì)地址。PCPC的當(dāng)前值是指取出該指令后的內(nèi)容,即下一條指令地址。因此,轉(zhuǎn)移目的地址的當(dāng)前值是指取出該指令后的內(nèi)容,即下一條指令地址。因此,轉(zhuǎn)移目的地址可用如下公式表示:可用如下公式表示:轉(zhuǎn)移目的地址轉(zhuǎn)移目的地址= =下一條指令地址下一條指令地址 + rel+ rel偏移量偏移量r
11、elrel是一個(gè)帶符號(hào)的是一個(gè)帶符號(hào)的8 8位二進(jìn)制數(shù),表示范圍為位二進(jìn)制數(shù),表示范圍為-128-128+127+127。例如指令例如指令 JC 80HJC 80H若進(jìn)位標(biāo)志若進(jìn)位標(biāo)志Cy=0Cy=0,則,則PCPC值不變;若進(jìn)位位值不變;若進(jìn)位位Cy=1Cy=1,則以,則以PCPC當(dāng)前值加偏移量當(dāng)前值加偏移量80H80H后所得的值作為轉(zhuǎn)移目的地址,其示意如圖后所得的值作為轉(zhuǎn)移目的地址,其示意如圖4.64.6所示。所示。圖4.6 相對(duì)尋址(JC 80H)0F82HPC1000HPC+11001HPC+21002HM1000000001110100操作碼偏移量0F82HALU1002HPC 10
12、02H+FF80H 0F82H6.6.變址尋址變址尋址 是以地址寄存器是以地址寄存器DPTRDPTR或程序計(jì)數(shù)器或程序計(jì)數(shù)器PCPC作為基址寄存器,累加器作為基址寄存器,累加器A A作為變址寄存器,二者的內(nèi)容相加,其和作為操作數(shù)地址。這種尋址作為變址寄存器,二者的內(nèi)容相加,其和作為操作數(shù)地址。這種尋址方式只能訪問(wèn)程序存儲(chǔ)器。方式只能訪問(wèn)程序存儲(chǔ)器。 例如例如 MOVC AMOVC A,A+DPTRA+DPTR 指令功能為指令功能為DPTRDPTR中的內(nèi)容與中的內(nèi)容與A A中的內(nèi)容相加,其和所指示的單元中的內(nèi)容相加,其和所指示的單元的數(shù)送入累加器的數(shù)送入累加器A A,如圖,如圖4.74.7所示。
13、所示。 圖4.7 變址尋址(MOV A, A+DPTR)10010011MA DPHDPLPC1000HPC+11001H操作碼8888H100010001000100000000000ALU7 7位尋址位尋址 是指對(duì)一些內(nèi)部是指對(duì)一些內(nèi)部RAMRAM和特殊功能寄存器進(jìn)行位操作時(shí)的尋址方和特殊功能寄存器進(jìn)行位操作時(shí)的尋址方式。在指令操作數(shù)域直接給出該位的地址。位地址與字節(jié)直接尋式。在指令操作數(shù)域直接給出該位的地址。位地址與字節(jié)直接尋址的形式一樣,主要由操作碼來(lái)區(qū)分。址的形式一樣,主要由操作碼來(lái)區(qū)分。 例如指令例如指令 ORL CORL C,50H50H 指令功能是把位累加器指令功能是把位累加器
14、CyCy中的內(nèi)容與中的內(nèi)容與50H50H所指示的位單元中的所指示的位單元中的內(nèi)容進(jìn)行內(nèi)容進(jìn)行“或或”運(yùn)算,其結(jié)果在位累加器運(yùn)算,其結(jié)果在位累加器CyCy中。中。 以上以上7 7種尋址方式,概括種尋址方式,概括如表如表4.14.1所示。所示。 序號(hào)尋址方式使用的變量尋址空間1立即尋址 程序存儲(chǔ)器2直接尋址 內(nèi)部RAM和特殊功能寄存器3寄存器尋址R0R7、A、B、C、DPTR 4寄存器間址R0、R1、SP 內(nèi)部RAMR0、R1、DPTR外部RAM5相對(duì)尋址PC+偏移量程序存儲(chǔ)器6變址尋址A+DPTR、A+PC數(shù)據(jù)程序存儲(chǔ)器7位尋址 內(nèi)部RAM和特殊功能寄存器的位空間表4.1 MCS-51尋址方式
15、4.3 指令系統(tǒng) 在在MCS-51MCS-51單片機(jī)使用了單片機(jī)使用了4242種助記符,與種助記符,與7 7種尋址方式組合,構(gòu)成種尋址方式組合,構(gòu)成111111條指令。下面分為條指令。下面分為7 7 類(lèi)予以介紹。類(lèi)予以介紹。4.3.1 4.3.1 數(shù)據(jù)傳送類(lèi)指令數(shù)據(jù)傳送類(lèi)指令4.3.2 4.3.2 算術(shù)運(yùn)算類(lèi)指令算術(shù)運(yùn)算類(lèi)指令4.3.3 4.3.3 邏輯運(yùn)算類(lèi)指令邏輯運(yùn)算類(lèi)指令4.3.4 4.3.4 移位類(lèi)指令移位類(lèi)指令4.3.5 4.3.5 控制轉(zhuǎn)移類(lèi)指令控制轉(zhuǎn)移類(lèi)指令4.3.6 4.3.6 調(diào)用調(diào)用/ /返回類(lèi)指令返回類(lèi)指令4.3.7 4.3.7 位操作類(lèi)指令位操作類(lèi)指令4.3.14.3.
16、1數(shù)據(jù)傳送類(lèi)指令數(shù)據(jù)傳送類(lèi)指令 共有共有2929條,其中包括條,其中包括8 8位、位、1616位數(shù)據(jù)傳送指令、交位數(shù)據(jù)傳送指令、交換指令、查表指令以及堆棧操作指令等。這類(lèi)指令除換指令、查表指令以及堆棧操作指令等。這類(lèi)指令除向累加器向累加器A A傳送數(shù)據(jù),影響奇?zhèn)魉蛿?shù)據(jù),影響奇/ /偶標(biāo)志偶標(biāo)志P P之外,不影響其之外,不影響其它狀態(tài)標(biāo)志。它狀態(tài)標(biāo)志。1. 1. 內(nèi)部?jī)?nèi)部8 8位數(shù)據(jù)傳送指令位數(shù)據(jù)傳送指令內(nèi)部?jī)?nèi)部8 8位數(shù)據(jù)傳送指令主要用于內(nèi)部位數(shù)據(jù)傳送指令主要用于內(nèi)部RAMRAM、寄存器之間的傳、寄存器之間的傳送,共有送,共有1515條,如表?xiàng)l,如表4.24.2所示,可分為所示,可分為4 4種
17、。種。(1)(1)累加器傳送指令有累加器傳送指令有4 4條:條:MOV A,Rn ;A(Rn)MOV A, direct ;A(direct)MOV A, R ;A(R1)MOV A, #data ;Adata例如指令例如指令 MOV A, R4 MOV A, R4 (2) (2) 寄存器傳送指令有寄存器傳送指令有3 3條:條:MOV Rn,A ;RnA)MOV Rn,direct ;Rndirect)MOV Rn,#data ;Rndata例如指令例如指令 MOV R5, 72H MOV R5, 72H (3) (3) 直接地址單元傳送指令有直接地址單元傳送指令有5 5條;條;MOV dir
18、ect, A ;direct(A)MOV direct, Rn ;direct(Rn)MOV direct, Ri ;direct(Ri)MOV direct,direct2 ;direct1(direct2)MOV direct, #data ;directdata例如指令例如指令 MOV 80HMOV 80H,75H75H(4) (4) 間接地址單元傳送指令有間接地址單元傳送指令有3 3條;條;MOV Ri, A ;(Ri)(A)MOV Ri, direct ;(Ri)(direct)MOV Ri, #data ;(Ri)data例如指令例如指令 MOV MOV R0R0,#0FH#0FH
19、 2. 16 2. 16位數(shù)據(jù)傳送指令位數(shù)據(jù)傳送指令MOV DPTR,#dat16 ;DPTRdata161616位數(shù)據(jù)傳送指令僅此一條,如表位數(shù)據(jù)傳送指令僅此一條,如表3.33.3所示,是把所示,是把1616位的立即數(shù)位的立即數(shù)傳送到地址寄存器傳送到地址寄存器DPTRDPTR中,其中高中,其中高8 8位送位送DPHDPH中,低中,低8 8位送位送DPLDPL中,中,如圖如圖4.24.2所示。所示。1616位傳送類(lèi)指令對(duì)狀態(tài)標(biāo)志沒(méi)有影響。位傳送類(lèi)指令對(duì)狀態(tài)標(biāo)志沒(méi)有影響。3. 3. 外部數(shù)據(jù)傳送指令外部數(shù)據(jù)傳送指令MOVX AMOVX A,Ri ;A(Ri)MOVX MOVX Ri,A ;(Ri
20、)(A)MOVX AMOVX A,DPTR ;A (DPTR)MOVX MOVX DPTR,A ;(DPTR)(A) 其功能是在累加器與外部數(shù)據(jù)存儲(chǔ)器之間進(jìn)行數(shù)據(jù)傳送。如果用其功能是在累加器與外部數(shù)據(jù)存儲(chǔ)器之間進(jìn)行數(shù)據(jù)傳送。如果用RiRi間接尋址,其范圍為外部數(shù)據(jù)存儲(chǔ)器的低間接尋址,其范圍為外部數(shù)據(jù)存儲(chǔ)器的低256256個(gè)字節(jié)單元。如果用個(gè)字節(jié)單元。如果用DPTRDPTR間接尋址,其范圍是外部數(shù)據(jù)存儲(chǔ)器的間接尋址,其范圍是外部數(shù)據(jù)存儲(chǔ)器的64KB64KB單元。外部數(shù)據(jù)傳送指令單元。外部數(shù)據(jù)傳送指令如表如表4.44.4所示。所示。4.4.交換指令交換指令XCH AXCH A,Rn Rn ;(;(
21、A A)(RnRn)XCH AXCH A,direct direct ;(;(A A)(directdirect)XCH AXCH A,Ri Ri ;(;(A A)(RiRi)XCHD AXCHD A,Ri Ri ;(;(A A)3 30 0(RiRi)3 30 0SWAP A SWAP A ;(;(A A)3 30 0 (A A)7 74 4 如表如表4.54.5所示,分為所示,分為3 3種。第一種是累加器種。第一種是累加器A A與工作寄存器與工作寄存器RnRn或直接或直接地址單元或地址單元或RiRi所指示的間接地址單元進(jìn)行所指示的間接地址單元進(jìn)行8 8位數(shù)據(jù)交換,第二種是累加位數(shù)據(jù)交換,第
22、二種是累加器器A A與與RiRi所指示的間接地址單元進(jìn)行低半字節(jié)交換,第三種是累加器所指示的間接地址單元進(jìn)行低半字節(jié)交換,第三種是累加器A A中的高半字節(jié)與低半字節(jié)交換。中的高半字節(jié)與低半字節(jié)交換。 例如指令例如指令 XCH AXCH A,R7 R7 ;累加器;累加器A A與寄存器與寄存器R7R7交換交換 又如指令又如指令 XCHD AXCHD A,R1 R1 ;累加器;累加器A A中的低中的低4 4位與位與R1R1中的內(nèi)容所指中的內(nèi)容所指示單元中的低示單元中的低4 4位交換。位交換。5.查表指令查表指令MOVC A,A+DPTR ;A (A)+(DPTR)MOVC A,A+PC ;A (A)
23、+(PC) 采用變址尋址方式,其中采用變址尋址方式,其中A A為變址寄存器,為變址寄存器,DPTRDPTR和和PCPC為基址寄存為基址寄存器。其功能是把器。其功能是把A A中內(nèi)容與中內(nèi)容與DPTRDPTR或或PCPC中的內(nèi)容之和所指示單元中的數(shù)中的內(nèi)容之和所指示單元中的數(shù)據(jù)送入累加器據(jù)送入累加器A A中,查表指令如表中,查表指令如表4.54.5所示。所示。 6.6.堆棧操作指令堆棧操作指令 PUSH direct PUSH direct ;SP(SP)+1SP(SP)+1,(SP)(direct)(SP)(direct) POP direct POP direct ;direct(SP)dir
24、ect(SP),SP(SP)-1SP(SP)-1 堆棧操作指令共有兩條,如表堆棧操作指令共有兩條,如表4.64.6所示。一條是壓棧指令所示。一條是壓棧指令PUSHPUSH,也稱(chēng)為進(jìn)棧;另一條彈棧指令也稱(chēng)為進(jìn)棧;另一條彈棧指令POPPOP,也稱(chēng)為出棧。這兩條指令采用直,也稱(chēng)為出棧。這兩條指令采用直接尋址方式,壓棧時(shí)指針接尋址方式,壓棧時(shí)指針SP+1SP+1,數(shù)據(jù)進(jìn)棧;彈棧時(shí)數(shù)據(jù)出棧,指針,數(shù)據(jù)進(jìn)棧;彈棧時(shí)數(shù)據(jù)出棧,指針SP-1SP-1。堆棧操作指令只能對(duì)字節(jié)數(shù)進(jìn)行操作。堆棧操作指令只能對(duì)字節(jié)數(shù)進(jìn)行操作。例如指令例如指令 PUSH DPL PUSH DPL ;DPTRDPTR低低8 8位地址壓棧位
25、地址壓棧 PUSH DPH PUSH DPH ;DPTRDPTR高高8 8位地址壓棧位地址壓棧又如指令又如指令 POP R1 POP R1 ;堆棧頂部數(shù)據(jù)彈出,送;堆棧頂部數(shù)據(jù)彈出,送R1R14.3.2算術(shù)運(yùn)算類(lèi)指令 這類(lèi)指令共有這類(lèi)指令共有2424條,其中包括加法、減法、加條,其中包括加法、減法、加1 1,減,減1 1以及乘法以及乘法除法運(yùn)算指令,對(duì)狀態(tài)標(biāo)志位均有影響,如表除法運(yùn)算指令,對(duì)狀態(tài)標(biāo)志位均有影響,如表4.74.7所示。所示。1 1加法指令加法指令A(yù)DD A,Rn ;A (A)+(Rn)ADD A,direct ;A (A)+(direct)ADD A,Ri ;A (A)+(Ri)
26、ADD A,#data ;A (A)+data帶進(jìn)位的加法指令帶進(jìn)位的加法指令A(yù)DD A,Rn ;A (A)+(Rn)+(C)ADD A,direct ;A (A)+(direct)+(C)ADD A,Ri ;A (A)+(Ri)+(C)ADD A,#data ;A (A)+data+(C)用于的把源操作數(shù)與累加器中的數(shù)相加,結(jié)果在累加器中。帶進(jìn)位加法指令用于的把源操作數(shù)與累加器中的數(shù)相加,結(jié)果在累加器中。帶進(jìn)位加法指令還要再加上進(jìn)位位。運(yùn)算結(jié)果影響還要再加上進(jìn)位位。運(yùn)算結(jié)果影響PSWPSW中的中的CyCy、OVOV、ACAC和和P P。CyCy:當(dāng):當(dāng)D D7 7有進(jìn)位時(shí)有進(jìn)位時(shí)CyCy置置
27、1 1,否則清,否則清0 0。OVOV:當(dāng)算術(shù)運(yùn)算有溢出時(shí):當(dāng)算術(shù)運(yùn)算有溢出時(shí)OVOV置置1 1,否則清,否則清0 0。ACAC:當(dāng):當(dāng)D D3 3有進(jìn)位時(shí)有進(jìn)位時(shí)ACAC置置1 1,否則清,否則清0 0。P P:當(dāng)累加器:當(dāng)累加器A A中中“1 1”的個(gè)數(shù)為奇數(shù)時(shí)的個(gè)數(shù)為奇數(shù)時(shí)P P置置1 1,否則清,否則清0 0?!纠?-14-1】試編寫(xiě)計(jì)算試編寫(xiě)計(jì)算6655H+11FFH6655H+11FFH的程序。的程序。解:兩個(gè)解:兩個(gè)1616位數(shù)據(jù)相加可分為兩步,先對(duì)低位數(shù)據(jù)相加可分為兩步,先對(duì)低8 8位相加,再對(duì)高位相加,再對(duì)高8 8位用帶進(jìn)位加位用帶進(jìn)位加法指令相加。設(shè)結(jié)果存入法指令相加。設(shè)
28、結(jié)果存入51H51H和和50H50H單元中,程序設(shè)計(jì)如下:?jiǎn)卧?,程序設(shè)計(jì)如下: MOV AMOV A,#55H#55H ADD A ADD A,#0FFH#0FFH MOV 50H MOV 50H,A A MOV A MOV A,#66H#66H ADDC A ADDC A,#11H#11H MOV 51H MOV 51H,A A 2 2帶借位的減法指令帶借位的減法指令SUBB ASUBB A,Rn Rn ;AA(A A)- -(RnRn)- -(c c)SUBB ASUBB A,direct direct ;AA(A A)- -(directdirect)- -(c c)SUBB ASUB
29、B A,Ri Ri ;AA(A A)- -(RiRi)- -(c c)SUBB ASUBB A,#data #data ;AA(A A)-data-data-(C C) 在在MCS-51MCS-51單片機(jī)中只有帶進(jìn)位減法指令,用累加器中單片機(jī)中只有帶進(jìn)位減法指令,用累加器中的數(shù)減去源操作數(shù)后,再減進(jìn)位位,結(jié)果在累加器中。的數(shù)減去源操作數(shù)后,再減進(jìn)位位,結(jié)果在累加器中。運(yùn)算結(jié)果影響運(yùn)算結(jié)果影響PSWPSW中的中的CyCy、OVOV、ACAC和和P P。【例例4-24-2】 試編寫(xiě)計(jì)算試編寫(xiě)計(jì)算EE33H-ADE0HEE33H-ADE0H的程序。的程序。解:在進(jìn)行上述解:在進(jìn)行上述1616位減法運(yùn)
30、算時(shí),也要分成兩步進(jìn)行。先進(jìn)行低位減法運(yùn)算時(shí),也要分成兩步進(jìn)行。先進(jìn)行低8 8位運(yùn)算,若產(chǎn)生借位,則再在高位運(yùn)算,若產(chǎn)生借位,則再在高8 8位運(yùn)算時(shí)一起減去,程序設(shè)計(jì)如下:位運(yùn)算時(shí)一起減去,程序設(shè)計(jì)如下:CLA C CLA C ;進(jìn)位位;進(jìn)位位C C清清0 0MOV AMOV A,#33H #33H ;A33HA33HSUBB ASUBB A,#E0H #E0H ;A(A)-E0H-(C)A(A)-E0H-(C)MOV 50HMOV 50H,A A ;50H (A)50H (A)MOV AMOV A,#EEH #EEH ;A EEHA EEHSUBB ASUBB A,#A0H #A0H ;A
31、(A)-A0H-(C)A (A)-A0H-(C)MOV 51HMOV 51H,A A ;51H(A)51H(A) 3. 3. 加加1 1指令指令I(lǐng)NC A ;A(A)+1INC Rn ;Rn(Rn)+1INc direct ;direct(direct)+1INC Ri ;(Ri)(Ri)+1INC DPTR ;DPTR(DPTR)+1加加1 1指令是給目的地址單元中的數(shù)加指令是給目的地址單元中的數(shù)加1 1,結(jié)果仍在原來(lái)地址單元。加,結(jié)果仍在原來(lái)地址單元。加1 1指令對(duì)狀態(tài)標(biāo)志寄存器指令對(duì)狀態(tài)標(biāo)志寄存器PSWPSW沒(méi)有影響。沒(méi)有影響。4. 4. 減減1 1指令指令DEC A ;A(A)-1DE
32、C Rn ;Rn(Rn)-1DEC direct ;direct(direct)-1DEC Ri ;(Ri)(Ri)-1減減1 1指令是把目的地址單元中的數(shù)減指令是把目的地址單元中的數(shù)減1 1,結(jié)果仍在原來(lái)地址單元中。,結(jié)果仍在原來(lái)地址單元中。減減1 1指令對(duì)狀態(tài)標(biāo)志寄存器指令對(duì)狀態(tài)標(biāo)志寄存器PSWPSW沒(méi)有影響。沒(méi)有影響。 5. 5. 十進(jìn)制調(diào)整指令十進(jìn)制調(diào)整指令 DA ADA A 是一條單字節(jié)指令,也稱(chēng)為是一條單字節(jié)指令,也稱(chēng)為BCDBCD碼修正指令,對(duì)碼修正指令,對(duì)BCDBCD碼的加法運(yùn)算結(jié)果進(jìn)碼的加法運(yùn)算結(jié)果進(jìn)行修正。行修正。 當(dāng)?shù)桶胱止?jié)的值當(dāng)?shù)桶胱止?jié)的值99或或AC=1AC=1時(shí),低
33、半字節(jié)加時(shí),低半字節(jié)加6 6; 當(dāng)高半字節(jié)的值當(dāng)高半字節(jié)的值99或或C=1C=1時(shí),高半字節(jié)加時(shí),高半字節(jié)加6 6 在使用時(shí)只要在在使用時(shí)只要在BCDBCD碼加法運(yùn)算指令的后面跟一條十進(jìn)制調(diào)整指令就可碼加法運(yùn)算指令的后面跟一條十進(jìn)制調(diào)整指令就可以了,但不能用于減法運(yùn)算。以了,但不能用于減法運(yùn)算。6. 6. 乘法指令乘法指令 MUL AB MUL AB ;BABA(A A)(B B) 是一條單字節(jié)指令,是把累加器是一條單字節(jié)指令,是把累加器A A和寄存器和寄存器B B中的兩個(gè)無(wú)符號(hào)數(shù)相乘,結(jié)中的兩個(gè)無(wú)符號(hào)數(shù)相乘,結(jié)果的低果的低8 8位在位在A A中,高中,高8 8位在位在B B中。影響狀態(tài)標(biāo)志中
34、。影響狀態(tài)標(biāo)志OVOV和和CyCy。 OVOV:當(dāng)乘積結(jié)果大于:當(dāng)乘積結(jié)果大于0FFH0FFH時(shí)時(shí)OVOV置置1 1,否則清,否則清0 0; CyCy:總是清:總是清0 0。7. 7. 除法指令除法指令 DIV ABDIV AB 是一條單字節(jié)指令,是把累加器是一條單字節(jié)指令,是把累加器A A中的無(wú)符號(hào)數(shù)中的無(wú)符號(hào)數(shù)除以寄存器除以寄存器B B中的無(wú)符號(hào)數(shù)。結(jié)果的商在中的無(wú)符號(hào)數(shù)。結(jié)果的商在A A中,余數(shù)在中,余數(shù)在B B中。影響狀態(tài)標(biāo)志中。影響狀態(tài)標(biāo)志OVOV和和CyCy。 OVOV:若除數(shù)為:若除數(shù)為0 0,OVOV置置1 1,否則清,否則清0 0。 CyCy:總是清:總是清0 0。 4.3.
35、3、邏輯運(yùn)算類(lèi)指令 共有共有2020條,如表?xiàng)l,如表4.84.8所示,包括所示,包括“與與”、“或或”、“異或異或”及累加及累加器清器清“0 0”、取反等。除改變累加器、取反等。除改變累加器A A中的內(nèi)容的指令對(duì)奇中的內(nèi)容的指令對(duì)奇/ /偶標(biāo)志偶標(biāo)志P P有影有影響外,不影響其它狀態(tài)標(biāo)志。響外,不影響其它狀態(tài)標(biāo)志。1 1邏輯邏輯“與與”運(yùn)算指令運(yùn)算指令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 direc
36、t,#data ;direct(direct) data 有有6 6條,把目的操作數(shù)與源操作數(shù)接位條,把目的操作數(shù)與源操作數(shù)接位“與與”,結(jié)果在目的地址單,結(jié)果在目的地址單元中;可用來(lái)屏蔽掉字節(jié)數(shù)據(jù)中的某些位。元中;可用來(lái)屏蔽掉字節(jié)數(shù)據(jù)中的某些位?!纠?-34-3】把累加器把累加器A A中的低中的低4 4位數(shù)據(jù)送外部數(shù)據(jù)存儲(chǔ)器的位數(shù)據(jù)送外部數(shù)據(jù)存儲(chǔ)器的2580H2580H單元中。單元中。 解:用解:用0FH0FH屏蔽掉高屏蔽掉高4 4位,然后傳送,程序設(shè)計(jì)如下:位,然后傳送,程序設(shè)計(jì)如下:MOV DPTRMOV DPTR,#2580H#2580HANL AANL A,#0FH#0FHMOVX
37、 DPTRMOVX DPTR,A A2 2邏輯邏輯“或或”運(yùn)算指令運(yùn)算指令ORL AORL A,Rn Rn ;AA(A A)(RnRn)ORL AORL A,direct direct ;AA(A A)(directdirect)ORL AORL A,Ri Ri ;AA(A A)(RiRi)ORL AORL A,#data #data ;AA(A A)datadataORL directORL direct,A A ;directdirect(directdirect)(A A)ORL directORL direct,#data #data ;directdirect(directdirec
38、t)datadata 有有6 6條,把目的操作數(shù)與源操作數(shù)按位條,把目的操作數(shù)與源操作數(shù)按位“或或”,結(jié)果在目的地址單元,結(jié)果在目的地址單元中;可用來(lái)把兩個(gè)操作數(shù)中的中;可用來(lái)把兩個(gè)操作數(shù)中的“1 1”合并到一個(gè)操作數(shù)中,或者說(shuō)把目的操合并到一個(gè)操作數(shù)中,或者說(shuō)把目的操作數(shù)中的某些位置作數(shù)中的某些位置1 1。3. 3. 邏輯邏輯“異或異或”運(yùn)算指令運(yùn)算指令XRL A,Rn ;A(A)(Rn)XRL A,direct ;A(A)(direct)XRL A,Ri ;A(A)(Ri)XRL A,#data ;A(A)dataXRL direct,A ;direct(direct)(A)XRL dir
39、ect,#data ;direct(direct)data有有6 6條,把目的操作數(shù)與源操作數(shù)按位條,把目的操作數(shù)與源操作數(shù)按位“異或異或”,結(jié)果在目的地,結(jié)果在目的地址單元中。址單元中。例如累加器例如累加器A A中的內(nèi)容為中的內(nèi)容為1100001111000011,寄存器,寄存器R7R7中的內(nèi)容為中的內(nèi)容為1010101010101010,執(zhí)行指令,執(zhí)行指令XRL A,R7后,累加器后,累加器A A中的內(nèi)容為中的內(nèi)容為0110100101101001。 4. 4. 累加器清累加器清0 0指令指令CLR A ;A05. 5. 累加器取反指令累加器取反指令CPL A ;A( )A4.3.4 移位
40、類(lèi)指令 共有共有4 4條,對(duì)累加器條,對(duì)累加器A A中的數(shù)據(jù)進(jìn)行移位操作,如表中的數(shù)據(jù)進(jìn)行移位操作,如表4.94.9所示,除帶進(jìn)所示,除帶進(jìn)位的移位指令對(duì)進(jìn)位位位的移位指令對(duì)進(jìn)位位C C和奇和奇/ /偶標(biāo)志位偶標(biāo)志位P P有影響外,不影響其它狀態(tài)標(biāo)志位。有影響外,不影響其它狀態(tài)標(biāo)志位。1 1不帶進(jìn)位循環(huán)左移指令不帶進(jìn)位循環(huán)左移指令RL A RL A ;ACC.(i+1)ACC.i, ACC.0ACC.7ACC.(i+1)ACC.i, ACC.0ACC.72 2帶進(jìn)位循環(huán)左移指令帶進(jìn)位循環(huán)左移指令RLC A RLC A ;ACC.(i+1)ACC.i, ACC.0Cy, CyACC.7ACC.(
41、i+1)ACC.i, ACC.0Cy, CyACC.73. 3. 不帶進(jìn)位循環(huán)右移指令不帶進(jìn)位循環(huán)右移指令RR A RR A ;ACC.i ACC.(i+1), ACC.7ACC.0ACC.i ACC.(i+1), ACC.7ACC.04.4.帶進(jìn)位循環(huán)右移指令帶進(jìn)位循環(huán)右移指令RRC A RRC A ;ACC.iACC.(i+1), ACC.7Cy, CyACC.0ACC.iACC.(i+1), ACC.7Cy, CyACC.0移位指令用來(lái)把累加器移位指令用來(lái)把累加器A A中的數(shù)據(jù)循環(huán)左移一位或者右移一位。對(duì)于帶中的數(shù)據(jù)循環(huán)左移一位或者右移一位。對(duì)于帶進(jìn)位的循環(huán)移位指令,進(jìn)位位進(jìn)位的循環(huán)移位
42、指令,進(jìn)位位CyCy的狀態(tài)由移入的數(shù)位決定。的狀態(tài)由移入的數(shù)位決定。 4.3.5 控制轉(zhuǎn)移類(lèi)指令 共共1818條,包括無(wú)條件轉(zhuǎn)移指令,條件轉(zhuǎn)移指令,比較轉(zhuǎn)移條,包括無(wú)條件轉(zhuǎn)移指令,條件轉(zhuǎn)移指令,比較轉(zhuǎn)移指令及計(jì)數(shù)轉(zhuǎn)移指令等,如表指令及計(jì)數(shù)轉(zhuǎn)移指令等,如表4.104.10所示。其功能是無(wú)條件或者所示。其功能是無(wú)條件或者有條件地控制程序轉(zhuǎn)移到目的地址單元。有條件地控制程序轉(zhuǎn)移到目的地址單元。 1 1無(wú)條件轉(zhuǎn)移指令無(wú)條件轉(zhuǎn)移指令 無(wú)條件轉(zhuǎn)移指令共有無(wú)條件轉(zhuǎn)移指令共有4 4條。條。(1 1)LJMP daar16 LJMP daar16 ;PCaddrPCaddr1616 三字節(jié)直接尋址的無(wú)條件轉(zhuǎn)移指
43、令,轉(zhuǎn)移地址在指令操作三字節(jié)直接尋址的無(wú)條件轉(zhuǎn)移指令,轉(zhuǎn)移地址在指令操作域直接給出,尋址范圍為域直接給出,尋址范圍為64K64K(0000H0000HFFFFHFFFFH),所以稱(chēng)為長(zhǎng)轉(zhuǎn)),所以稱(chēng)為長(zhǎng)轉(zhuǎn)移指令。移指令。(2 2)AJMP addrAJMP addr1111 ;PCPC10100 0 addr addr1111 PC高5位 PC低11位高3位8位 第一字節(jié) 第二字節(jié)操作碼地址域圖4.8 裝入11轉(zhuǎn)移地址 雙字節(jié)直接尋址的無(wú)條件轉(zhuǎn)移指令,指令操作數(shù)域給出雙字節(jié)直接尋址的無(wú)條件轉(zhuǎn)移指令,指令操作數(shù)域給出1111位的轉(zhuǎn)地位的轉(zhuǎn)地址。它把址。它把PCPC高高5 5位與操作碼的高位與操作碼
44、的高3 3位以及指令第二字節(jié)并在一起,構(gòu)成位以及指令第二字節(jié)并在一起,構(gòu)成1616位的轉(zhuǎn)移址址,如圖位的轉(zhuǎn)移址址,如圖4.84.8所示,常稱(chēng)為絕對(duì)轉(zhuǎn)移指令。所示,常稱(chēng)為絕對(duì)轉(zhuǎn)移指令。尋址范圍為該指令地址加尋址范圍為該指令地址加2 2后,向下的后,向下的2K2K區(qū)域,其指令碼如下:區(qū)域,其指令碼如下:A10 a9 a8 0 0 0 0 1 a7 a6 a5 a4 a3 a2 a1 a0(3 3)SJMP rel SJMP rel ;PC(PC)+relPC(PC)+rel 雙字節(jié)相對(duì)尋址的無(wú)條件轉(zhuǎn)移指令,第二字節(jié)給出轉(zhuǎn)移地址的偏移雙字節(jié)相對(duì)尋址的無(wú)條件轉(zhuǎn)移指令,第二字節(jié)給出轉(zhuǎn)移地址的偏移量量re
45、lrel(帶符號(hào)的(帶符號(hào)的8 8位二位制補(bǔ)碼數(shù)),尋址范圍為位二位制補(bǔ)碼數(shù)),尋址范圍為256256(-80H-80H+7FH+7FH)。轉(zhuǎn)移地址為程序計(jì)數(shù)器。轉(zhuǎn)移地址為程序計(jì)數(shù)器PCPC的當(dāng)前值加偏移量,因此稱(chēng)為相對(duì)短轉(zhuǎn)移指的當(dāng)前值加偏移量,因此稱(chēng)為相對(duì)短轉(zhuǎn)移指令。令。 在用匯編語(yǔ)言編程時(shí),相對(duì)地址的偏移量在用匯編語(yǔ)言編程時(shí),相對(duì)地址的偏移量relrel可以用目的地址的標(biāo)可以用目的地址的標(biāo)號(hào)(符號(hào)地址)表示,程序匯編時(shí)自動(dòng)計(jì)算偏移量。號(hào)(符號(hào)地址)表示,程序匯編時(shí)自動(dòng)計(jì)算偏移量。 例如指令例如指令 HEREHERE:SJMP HERESJMP HERE 或或 HEREHERE:SJMP $
46、SJMP $ $代表本指令地址。代表本指令地址。(4 4)JMP A+DPTR JMP A+DPTR ;PC(A)+(DPTR)PC(A)+(DPTR) 單字節(jié)變址尋址的無(wú)條件轉(zhuǎn)移指令,累加器單字節(jié)變址尋址的無(wú)條件轉(zhuǎn)移指令,累加器A A中存放的是相對(duì)偏移中存放的是相對(duì)偏移量,量,DPTRDPTR中存放的是變址基值,二者之和為轉(zhuǎn)移地址,尋址范圍為中存放的是變址基值,二者之和為轉(zhuǎn)移地址,尋址范圍為64K64K(0000H0000HFFFFHFFFFH),因此稱(chēng)為相對(duì)長(zhǎng)轉(zhuǎn)移指令。),因此稱(chēng)為相對(duì)長(zhǎng)轉(zhuǎn)移指令。 2 2條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令是根據(jù)特定的條件控制程序的轉(zhuǎn)移,共有是根據(jù)特定的條件控制程序的
47、轉(zhuǎn)移,共有4 4條,均是相對(duì)尋址的雙字條,均是相對(duì)尋址的雙字節(jié)指令。轉(zhuǎn)移地址為程序計(jì)數(shù)器節(jié)指令。轉(zhuǎn)移地址為程序計(jì)數(shù)器PCPC的當(dāng)前值加偏移量的當(dāng)前值加偏移量relrel。JZ rel JZ rel ;若(;若(A A)=0,=0,則則PCPC(PCPC)+rel+relJNZ rel JNZ rel ;若(;若(A A)0 0,則,則PC(PC)+relPC(PC)+relJC rel JC rel ;若;若Cy=1Cy=1,則,則PCPC(PCPC)+rel+relJNC rel JNC rel ; 若若Cy=0Cy=0,則,則PCPC(PCPC)+rel+rel3. 3. 位測(cè)試轉(zhuǎn)移指令位
48、測(cè)試轉(zhuǎn)移指令對(duì)位地址單元進(jìn)行測(cè)試,根據(jù)測(cè)試結(jié)果控制程序的轉(zhuǎn)移,共有對(duì)位地址單元進(jìn)行測(cè)試,根據(jù)測(cè)試結(jié)果控制程序的轉(zhuǎn)移,共有3 3條,條,均是相對(duì)尋址的三字節(jié)指令。其中第二字節(jié)是位地址,第三字節(jié)是偏移量均是相對(duì)尋址的三字節(jié)指令。其中第二字節(jié)是位地址,第三字節(jié)是偏移量。轉(zhuǎn)移地址為程序計(jì)數(shù)器。轉(zhuǎn)移地址為程序計(jì)數(shù)器PCPC的當(dāng)前值加偏移量。的當(dāng)前值加偏移量。JB bit, rel JB bit, rel ;若;若(bit)=1, (bit)=1, 則則PCPC(PCPC)+rel+relJNB bit, rel JNB bit, rel ;若;若(bit)=0,(bit)=0,則則PCPC(PCPC)+
49、rel+relJBC bit, rel JBC bit, rel ;若;若(bit)=1(bit)=1,則,則PCPC(PCPC)+rel+rel,且,且bit0bit0。 4. 4. 比較轉(zhuǎn)移指令比較轉(zhuǎn)移指令是根據(jù)兩數(shù)比較的結(jié)果決定程序是否轉(zhuǎn)移,共有是根據(jù)兩數(shù)比較的結(jié)果決定程序是否轉(zhuǎn)移,共有4 4條,均是相對(duì)尋址條,均是相對(duì)尋址的三字節(jié)指令。比較相等時(shí),程序順序執(zhí)行,不相等時(shí)轉(zhuǎn)移。的三字節(jié)指令。比較相等時(shí),程序順序執(zhí)行,不相等時(shí)轉(zhuǎn)移。CJNE A, #data, rel CJNE A, #data, rel ;若(;若(A A)datadata,則,則PCPC(PCPC)+rel +rel
50、CJNE Rn, #data,rel CJNE Rn, #data,rel ;若(;若(RnRn)datadata,則,則PCPC(PCPC)+rel+relCJNE Ri, #data, rel CJNE Ri, #data, rel ;若;若(Ri)data(Ri)data,則,則PCPC(PCPC)+rel+relCJNE A, irect, rel CJNE A, irect, rel ;若;若(A) (direct)(A) (direct),則,則PCPC(PCPC)+rel+rel當(dāng)目的地址單元中的數(shù)小于源地址單元中的數(shù)據(jù)時(shí),進(jìn)位位當(dāng)目的地址單元中的數(shù)小于源地址單元中的數(shù)據(jù)時(shí),進(jìn)位
51、位CyCy置置1 1,否則清否則清0 0,不影響其它狀態(tài)標(biāo)志位。,不影響其它狀態(tài)標(biāo)志位。 5.5.計(jì)數(shù)轉(zhuǎn)移指令計(jì)數(shù)轉(zhuǎn)移指令對(duì)指定單元減對(duì)指定單元減1 1計(jì)數(shù),結(jié)果不為零時(shí)轉(zhuǎn)移,否則順序執(zhí)行,共計(jì)數(shù),結(jié)果不為零時(shí)轉(zhuǎn)移,否則順序執(zhí)行,共有有2 2條,均是相對(duì)尋址的轉(zhuǎn)移指令。條,均是相對(duì)尋址的轉(zhuǎn)移指令。DJNZ Rn, rel DJNZ Rn, rel ;Rn(Rn)-1Rn(Rn)-1,若,若(Rn) 0(Rn) 0,則,則PC(PC)+relPC(PC)+relDJNZ direct,relDJNZ direct,rel;direct(direct)-1direct(direct)-1,若,若(
52、direct) 0,(direct) 0,則則PC(PC)+relPC(PC)+rel【例例4.44.4】設(shè)片內(nèi)設(shè)片內(nèi)RAMRAM的的50H50H和和60H60H單元中分別存放有兩個(gè)無(wú)符單元中分別存放有兩個(gè)無(wú)符號(hào)數(shù),找出最大者,送號(hào)數(shù),找出最大者,送70H70H單元。單元。 解:用比較轉(zhuǎn)移和有進(jìn)位轉(zhuǎn)移指令共同判斷兩數(shù)的大小,程序設(shè)計(jì)解:用比較轉(zhuǎn)移和有進(jìn)位轉(zhuǎn)移指令共同判斷兩數(shù)的大小,程序設(shè)計(jì)如下:如下: MOV AMOV A,50H50H CJNE A CJNE A,60H60H,LI LI ;比較,不相等轉(zhuǎn)移;比較,不相等轉(zhuǎn)移 MOV 70MOV 70,A A SJMP HH SJMP HH
53、LL LL:JC MM JC MM ;小于轉(zhuǎn)移;小于轉(zhuǎn)移 MOV 70HMOV 70H,A A SJMP HH SJMP HH MM MM:MOV 70HMOV 70H,60H60H HH HH:6. 6. 空操作指令空操作指令 NOPNOP 單字節(jié)指令,其功能是取指令,譯碼,不進(jìn)行任何操作(即空操作)單字節(jié)指令,其功能是取指令,譯碼,不進(jìn)行任何操作(即空操作)而轉(zhuǎn)下一條指令。而轉(zhuǎn)下一條指令。4.3.6 調(diào)用/返回類(lèi)指令 調(diào)用指令在主程序中使用,執(zhí)行時(shí)保護(hù)斷點(diǎn),使程序轉(zhuǎn)向子程序調(diào)用指令在主程序中使用,執(zhí)行時(shí)保護(hù)斷點(diǎn),使程序轉(zhuǎn)向子程序入口;返回指令在子程序的末尾使用,其作用是返回到主程序中原來(lái)被
54、入口;返回指令在子程序的末尾使用,其作用是返回到主程序中原來(lái)被斷開(kāi)的地方,即斷點(diǎn)。調(diào)用斷開(kāi)的地方,即斷點(diǎn)。調(diào)用/ /返回類(lèi)指令如表返回類(lèi)指令如表4.114.11所示。所示。1.1.調(diào)用指令調(diào)用指令(1 1)LCALL addrLCALL addr1616 ;(;(PCPC)壓棧,)壓棧,PCaddrPCaddr1616直接尋址的三字節(jié)指令,使程序計(jì)數(shù)器直接尋址的三字節(jié)指令,使程序計(jì)數(shù)器PCPC的當(dāng)前值壓棧,子程序入的當(dāng)前值壓棧,子程序入口地址口地址ddrddr1616送送PCPC。尋址范圍為。尋址范圍為64K64K(0000H0000HFFFFHFFFFH),稱(chēng)為長(zhǎng)調(diào)用指令),稱(chēng)為長(zhǎng)調(diào)用指令。
55、指令執(zhí)行過(guò)程如下:。指令執(zhí)行過(guò)程如下:SP(SP)+1SP(SP)+1(SP)(PC)(SP)(PC)7 70 0SP(SP)+1SP(SP)+1(SP)(PC)(SP)(PC)15158 8PCaddrPCaddr1616 (2 2)ACALL addr11 ACALL addr11 ;(;(PCPC)壓棧,)壓棧,PCPC10100 0addraddr1111 直接尋址的雙字節(jié)指令,使程序計(jì)數(shù)器直接尋址的雙字節(jié)指令,使程序計(jì)數(shù)器PCPC的當(dāng)前值壓棧,的當(dāng)前值壓棧,1111位的子位的子程序入口地址程序入口地址addraddr1111送送PCPC的低的低1111位,與其高位,與其高5 5位并成位并成1616位地址,常稱(chēng)為絕位地址,常稱(chēng)為絕對(duì)調(diào)用指令,指令格式與絕對(duì)轉(zhuǎn)移指令對(duì)調(diào)用指令,指令格式與絕對(duì)轉(zhuǎn)移指令A(yù)JMPAJMP類(lèi)似,尋址范圍為類(lèi)似,尋址范圍為2K2K,其指,其指令碼如下:令碼如下:a10 a9 a8 1 0 0 0 1 a7 a6 a5 a4 a3 a2 a1 a0指令執(zhí)行過(guò)程如下:指令執(zhí)行過(guò)程如下:SP(SP)+1SP(SP)+1(SP)(PC)(SP)(PC)7 70 0SP(SP)+1SP(SP)+1(SP)(PC)(SP)(PC)15158 8PCaddrPCaddr11112. 2. 返
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 河北省鄭口中學(xué)2025年高一化學(xué)第二學(xué)期期末調(diào)研模擬試題含解析
- 江蘇省無(wú)錫市江陰市2025屆高二化學(xué)第二學(xué)期期末復(fù)習(xí)檢測(cè)試題含解析
- 2025屆安徽省新城高升學(xué)校高一下化學(xué)期末綜合測(cè)試試題含解析
- 工業(yè)園區(qū)運(yùn)營(yíng)管理方案
- 抗癌宣傳活動(dòng)方案
- 護(hù)士減負(fù)活動(dòng)方案
- 護(hù)理倫理課堂活動(dòng)方案
- 報(bào)社營(yíng)銷(xiāo)公司策劃方案
- 抽獎(jiǎng)送禮活動(dòng)方案
- 拉手小人活動(dòng)方案
- 新生兒吸入性肺炎的觀察與護(hù)理
- 醫(yī)院布草洗滌服務(wù)方案(技術(shù)方案)
- 嬰幼兒輔食添加課件
- 單片機(jī)課程設(shè)計(jì)之超聲波測(cè)距-電子工程系單片機(jī)課程設(shè)計(jì)報(bào)告
- 寧騷公共政策學(xué)
- 地下室頂板行車(chē)與堆載驗(yàn)算與加固方案
- 四年級(jí)閱讀訓(xùn)練概括文章主要內(nèi)容(完美)
- GB/T 37234-2018文件鑒定通用規(guī)范
- 高中英語(yǔ)讀后續(xù)寫(xiě)教學(xué)策略的探究
- 2022年動(dòng)畫(huà)制作行業(yè)分析及未來(lái)五至十年行業(yè)發(fā)展報(bào)告
- 染缸操作規(guī)范
評(píng)論
0/150
提交評(píng)論