單片機(jī)原理及應(yīng)用第3章_第1頁(yè)
單片機(jī)原理及應(yīng)用第3章_第2頁(yè)
單片機(jī)原理及應(yīng)用第3章_第3頁(yè)
單片機(jī)原理及應(yīng)用第3章_第4頁(yè)
單片機(jī)原理及應(yīng)用第3章_第5頁(yè)
已閱讀5頁(yè),還剩96頁(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)介

1、 3.1 3.1 單片機(jī)指令系統(tǒng)概述單片機(jī)指令系統(tǒng)概述 3.1.1 3.1.1 指令格式指令格式 MCS-51MCS-51單片機(jī)指令格式采用了單地址指令單片機(jī)指令格式采用了單地址指令格式。一條匯編語(yǔ)句是由標(biāo)號(hào)、操作碼、格式。一條匯編語(yǔ)句是由標(biāo)號(hào)、操作碼、目的操作數(shù)、源操作數(shù)和注釋等目的操作數(shù)、源操作數(shù)和注釋等5 5部分組成部分組成的,其中方括號(hào)中的部分是可以選擇的。的,其中方括號(hào)中的部分是可以選擇的。 指令的具體格式為:指令的具體格式為: 標(biāo)號(hào)標(biāo)號(hào) :操作碼:操作碼 目的操作數(shù)目的操作數(shù) , 源操作數(shù)源操作數(shù) ; 注釋注釋 例如:例如: HY1:MOV R3 , #08H ;執(zhí)行數(shù)據(jù)傳送操作;

2、執(zhí)行數(shù)據(jù)傳送操作 A:累加器,用于運(yùn)算及存放數(shù)據(jù)。:累加器,用于運(yùn)算及存放數(shù)據(jù)。 B:專(zhuān)用寄存器,用于:專(zhuān)用寄存器,用于MUL和和DIV指令中,存放指令中,存放第二操作數(shù)、乘積高位字節(jié)。第二操作數(shù)、乘積高位字節(jié)。 CY:進(jìn)位標(biāo)志位,或布爾處理器中的累加器。:進(jìn)位標(biāo)志位,或布爾處理器中的累加器。 bit:內(nèi)部:內(nèi)部RAM或?qū)S眉拇嫫髦械闹苯訉ぶ肺??;驅(qū)S眉拇嫫髦械闹苯訉ぶ肺弧?/bit:位地址單元內(nèi)容取反。:位地址單元內(nèi)容取反。 DPTRDPTR:1616位數(shù)據(jù)指針,也可作為位數(shù)據(jù)指針,也可作為1616位地址寄存器。位地址寄存器。RnRn:工作寄存器中的寄存器:工作寄存器中的寄存器RnRn、R0

3、R7R0R7之一,之一,RiRi:工作寄存器中的寄存器:工作寄存器中的寄存器R0R0或或R1R1#data#data:8 8位立即數(shù)位立即數(shù)#data16#data16:1616位立即數(shù)位立即數(shù)directdirect:片內(nèi):片內(nèi)RAMRAM或或SFRSFR的地址(的地址(8 8位)位) :間接尋址寄存器:間接尋址寄存器addr11addr11:1111位目的地址位目的地址addr16addr16:1616位目的地址位目的地址rel: rel: 補(bǔ)碼形式的補(bǔ)碼形式的8 8位地址偏移量。位地址偏移量。 偏移范圍為偏移范圍為-128-128127127/ /:位操作指令中,該位求反后參與操作,:位

4、操作指令中,該位求反后參與操作,不影響該位不影響該位X X:片內(nèi):片內(nèi)RAMRAM的直接地址或寄存器的直接地址或寄存器(X)(X):相應(yīng)地址單元中的內(nèi)容:相應(yīng)地址單元中的內(nèi)容:箭頭左邊的內(nèi)容送入箭頭右邊的單元內(nèi):箭頭左邊的內(nèi)容送入箭頭右邊的單元內(nèi)功能功能數(shù)據(jù)傳送類(lèi):數(shù)據(jù)傳送類(lèi):2929條條算術(shù)運(yùn)算類(lèi):算術(shù)運(yùn)算類(lèi):2424條條邏輯運(yùn)算類(lèi):邏輯運(yùn)算類(lèi):2424條條控制轉(zhuǎn)移類(lèi):控制轉(zhuǎn)移類(lèi):1717條條位操作類(lèi):位操作類(lèi): 1717條條 MCS-51MCS-51單片機(jī)共有單片機(jī)共有111111條指令,可以實(shí)現(xiàn)條指令,可以實(shí)現(xiàn)5151種基本操作。種基本操作。 1.1.按指令功能分類(lèi)按指令功能分類(lèi) MCS

5、-51單片機(jī)用機(jī)器語(yǔ)言表示的指令格式按單片機(jī)用機(jī)器語(yǔ)言表示的指令格式按字節(jié)劃分,有一字節(jié)指令、兩字節(jié)指令和三字節(jié)劃分,有一字節(jié)指令、兩字節(jié)指令和三字節(jié)指令等三種。字節(jié)指令等三種。 (1 1)一字節(jié)指令中的)一字節(jié)指令中的8 8位二進(jìn)制代碼既包含位二進(jìn)制代碼既包含操作碼的信息,也包含操作數(shù)的信息。操作碼的信息,也包含操作數(shù)的信息。 例如指令:例如指令: INC INC A A MOV MOV A A,Rn Rn XCH XCH A A,RnRn ADD ADD A A,Ri Ri DEC DEC RnRn 例如:例如: ANL A,#90HADDA, #06HDEC 30HMOVR2,#0F0H

6、操作碼 立即數(shù)或?qū)ぶ返刂?(3)三字節(jié)指令中,第一字節(jié)表示)三字節(jié)指令中,第一字節(jié)表示操作碼,另兩個(gè)字節(jié)是操作數(shù),其操作碼,另兩個(gè)字節(jié)是操作數(shù),其指令格式為:指令格式為: 例如:例如:ANL 30H,#66HMOVDPTR,#1000HLJMP0300HCJNEA,20H,HL5操作碼 立即數(shù)或?qū)ぶ返刂?立即數(shù)或?qū)ぶ返刂?MCS-51系列單片機(jī)??梢苑譃閱沃芷谥噶钕盗袉纹瑱C(jī)??梢苑譃閱沃芷谥噶?7條,條,雙周期指令雙周期指令52條和四周期指令條和四周期指令2條等。條等。 (1 1)單周期指令的執(zhí)行指令時(shí)間為一個(gè)機(jī)器周)單周期指令的執(zhí)行指令時(shí)間為一個(gè)機(jī)器周期。例如:期。例如: XCHXCHA A

7、,R1R1ADDADD A A,R1R1CLRCLR A AMOVMOV R3R3,#0F0H #0F0H (2 2)雙周期指令的執(zhí)行指令時(shí)間為)雙周期指令的執(zhí)行指令時(shí)間為2 2個(gè)機(jī)器周期。個(gè)機(jī)器周期。例如:例如:MOVMOV RnRn,30H30HDJNZDJNZ R3R3,LOOPLOOPJMPJMP a+dptra+dptr (3)四周期指令的執(zhí)行指令時(shí)間為)四周期指令的執(zhí)行指令時(shí)間為4個(gè)機(jī)個(gè)機(jī)器周期。例如:器周期。例如:DIV ABMULAB 3.2.1 3.2.1 立即尋址立即尋址Immediate AddressingImmediate Addressing 操作數(shù)就包含在指令代碼

8、中,在操作碼之后,操作數(shù)就包含在指令代碼中,在操作碼之后,稱(chēng)為立即數(shù),用稱(chēng)為立即數(shù),用“”表示。表示。 如:如: MOV P1, MOV P1, #80H#80H MOV R7, MOV R7, #0F5H#0F5H MOV DPTR MOV DPTR,#1245H#1245H 3.2.2 3.2.2 直接尋址直接尋址 Direct AddressingDirect Addressing直接使用數(shù)所在單元的直接使用數(shù)所在單元的地址地址找到了操作數(shù),找到了操作數(shù),所以稱(chēng)這種方法為所以稱(chēng)這種方法為直接尋址直接尋址。操作數(shù)在操作數(shù)在SFRSFR、內(nèi)部?jī)?nèi)部RAMRAM、位地址位地址空間??臻g。如:如:

9、 MOV AMOV A,00H00H MOV CMOV C,60H60H MOV AMOV A,0F0H 0F0H (B B寄存器)寄存器)3.2.3 3.2.3 寄存器尋址寄存器尋址 Register Addressing對(duì)選定的工作寄存器對(duì)選定的工作寄存器R0R0R7R7、累加器、累加器A A、通用寄、通用寄存器存器B B、地址寄存器、地址寄存器DPTRDPTR中的數(shù)進(jìn)行操作。中的數(shù)進(jìn)行操作。 例:例:MOV AMOV A,R0R0;將;將R0R0工作寄存器中的數(shù)據(jù)送到工作寄存器中的數(shù)據(jù)送到累加器累加器A A中去。中去。問(wèn)題:?jiǎn)栴}:我們知道,工作寄存器就是內(nèi)存單元的我們知道,工作寄存器就是

10、內(nèi)存單元的一部分,如果我們選擇工作寄存器組一部分,如果我們選擇工作寄存器組0 0,則,則R0R0就就是是RAMRAM的的00H00H單元,那么這樣一來(lái),單元,那么這樣一來(lái),MOV AMOV A,00H00H 和和 MOV AMOV A,R0R0不就沒(méi)什么區(qū)別了嗎?不就沒(méi)什么區(qū)別了嗎?執(zhí)行第一條指令需要執(zhí)行第一條指令需要2 2個(gè)機(jī)器周期,而第二條個(gè)機(jī)器周期,而第二條則只需要?jiǎng)t只需要1 1個(gè)機(jī)器周期,第一條指令變成最終個(gè)機(jī)器周期,第一條指令變成最終的目標(biāo)碼要兩個(gè)字節(jié)(的目標(biāo)碼要兩個(gè)字節(jié)(E5H 00HE5H 00H),而第二條),而第二條則只要一個(gè)字節(jié)(則只要一個(gè)字節(jié)(E8E8H H)。)。3.2

11、.4 3.2.4 間接尋址間接尋址 Register Indirect Addressing寄存器間接尋址把地址放在另外一個(gè)寄存器中,寄存器間接尋址把地址放在另外一個(gè)寄存器中,根據(jù)這個(gè)寄存器中的數(shù)值決定該到哪個(gè)單元中取根據(jù)這個(gè)寄存器中的數(shù)值決定該到哪個(gè)單元中取數(shù)據(jù)。數(shù)據(jù)。 R0R0,R1-R1-8-8位地址,位地址,片內(nèi)片內(nèi)低低128128字節(jié)或字節(jié)或片外片外DPTR-16DPTR-16位,片外位,片外64KB64KB如:如: MOV AMOV A, R0R0MOVX AMOVX A, R0R0MOVX AMOVX A, DPTRDPTR操作數(shù)在片內(nèi)RAM中操作數(shù)在片外RAM中操作數(shù)在片外RA

12、M中3.2.5 3.2.5 相對(duì)尋址相對(duì)尋址 將將PCPC中的當(dāng)前內(nèi)容與指令中的當(dāng)前內(nèi)容與指令第二字節(jié)給出的數(shù)第二字節(jié)給出的數(shù)相相加,結(jié)果作為跳轉(zhuǎn)指令的轉(zhuǎn)移地址(轉(zhuǎn)移目的地加,結(jié)果作為跳轉(zhuǎn)指令的轉(zhuǎn)移地址(轉(zhuǎn)移目的地址)。址)。 PCPC中的中的當(dāng)前當(dāng)前內(nèi)容稱(chēng)為內(nèi)容稱(chēng)為基地址基地址(本指令后的字節(jié)(本指令后的字節(jié)地址)指令第二字節(jié)給出的數(shù)據(jù)稱(chēng)為地址)指令第二字節(jié)給出的數(shù)據(jù)稱(chēng)為偏移量偏移量,1 1字節(jié)帶符號(hào)數(shù)字節(jié)帶符號(hào)數(shù). .常用于跳轉(zhuǎn)指令。常用于跳轉(zhuǎn)指令。 如如: JC 23H: JC 23H 若若C=0C=0,不跳轉(zhuǎn);,不跳轉(zhuǎn); C=1C=1,跳轉(zhuǎn),跳轉(zhuǎn). .Relative Addressi

13、ng程序存儲(chǔ)區(qū)ALU如:如:JC 23JC 231025H1000H 401025H 451001H 23 1024H 471002H 3023H1002H指令代碼當(dāng)前PC以以DPTRDPTR或或PCPC為基址寄存器,累加器為基址寄存器,累加器A A為變址寄存器。為變址寄存器。把兩者內(nèi)容相加,結(jié)果作為操作數(shù)的地址。把兩者內(nèi)容相加,結(jié)果作為操作數(shù)的地址。 常用于查表操作。 MOVCMOVC A A, A+DPTRA+DPTR ;(A+DPTR) A (A+DPTR) A MOVCMOVC A A, A+PCA+PC; PC+1 PCPC+1 PC,(A+PC)A(A+PC)A JMPJMP A+

14、DPTRA+DPTR;(;(PCPC)(A+DPTRA+DPTR)3.2.6 3.2.6 變址尋址變址尋址( (基址基址+ +變址變址) )Base-Register-plus-Index-Register-Indirect Addressing操作數(shù)在程序存儲(chǔ)器中E0A程序存儲(chǔ)區(qū)2040H 9320E0H 472041H DPH 20DPL 00ALU如:如:MOVC AMOVC A,A+DPTRA+DPTR設(shè)設(shè)DPTR=2000HDPTR=2000H,A=E0HA=E0H20E0H47指令代碼E0A程序存儲(chǔ)區(qū)ALU如:如:MOVC AMOVC A,A+PCA+PC設(shè)設(shè)A = #E0HA =

15、 #E0H2121H452040H 832121H 452041H 2120H 47當(dāng)前PC指令代碼 對(duì)片內(nèi)對(duì)片內(nèi)RAMRAM的的位尋址區(qū)位尋址區(qū)和某些可和某些可位尋址位尋址的特的特殊功能寄存器進(jìn)行位操作時(shí)的尋址方式。殊功能寄存器進(jìn)行位操作時(shí)的尋址方式。 如如: SETB 3DH; : SETB 3DH; 將將27H.527H.5位置位置1 1 CLR C CLR C ;CyCy位清位清0 03.2.7 3.2.7 位尋址位尋址 Bit Addressing操作數(shù)在片內(nèi)RAM位地址區(qū)或SFR某些位中尋址方式涉及的存儲(chǔ)器空間尋址方式涉及的存儲(chǔ)器空間尋址方式尋址方式尋址空間(操作數(shù)存放空間)尋址空

16、間(操作數(shù)存放空間)立即尋址立即尋址程序存儲(chǔ)器程序存儲(chǔ)器直接尋址直接尋址片內(nèi)片內(nèi)RAMRAM低低128128字節(jié)、字節(jié)、SFRSFR寄存器尋址寄存器尋址工作寄存器工作寄存器R0R0R7,A,B,DPTRR7,A,B,DPTR寄存器間接尋址寄存器間接尋址片內(nèi)片內(nèi)RAM:R0,R1,SPRAM:R0,R1,SP片外片外RAM:R0 ,R1,DPTRRAM:R0 ,R1,DPTR變址尋址變址尋址程序存儲(chǔ)器程序存儲(chǔ)器:A+PC,A+DPTR:A+PC,A+DPTR相對(duì)尋址相對(duì)尋址程序存儲(chǔ)器程序存儲(chǔ)器256256字節(jié)范圍內(nèi)字節(jié)范圍內(nèi):PC+:PC+偏移量偏移量位尋址位尋址片內(nèi)片內(nèi)RAMRAM的位尋址區(qū)的

17、位尋址區(qū)(20H(20H2FH2FH字節(jié)地址字節(jié)地址) )某些可位尋址的某些可位尋址的SFRSFR3.33.3指令系統(tǒng)指令系統(tǒng)3.3.1 3.3.1 數(shù)據(jù)傳送類(lèi)指令數(shù)據(jù)傳送類(lèi)指令 (2929條)條) Data Transfer InstructionData Transfer Instruction助記符:助記符: MOVMOV、MOVXMOVX、MOVC MOVC XCH XCH、XCHDXCHD、SWAP SWAP PUSH PUSH、POP POP v 源操作數(shù)尋址方式(源操作數(shù)尋址方式(5 5種):種):立即尋址、直接尋址、寄存器尋址、寄存器間接立即尋址、直接尋址、寄存器尋址、寄存器間

18、接尋址、變址尋址尋址、變址尋址 目的操作數(shù)尋址方式(目的操作數(shù)尋址方式(3種):種): 直接尋址、寄存器尋址、寄存器間接直接尋址、寄存器尋址、寄存器間接尋址尋址 除了目的操作數(shù)為除了目的操作數(shù)為ACC的指令影響奇偶的指令影響奇偶標(biāo)志標(biāo)志P外,一般不影響標(biāo)志位。外,一般不影響標(biāo)志位。(1 1) 以累加器為目的操作數(shù)的指令以累加器為目的操作數(shù)的指令(4 4條)條) MOV AMOV A,RnRn ;RnARnAMOV AMOV A,directdirect;(direct)A(direct)AMOV AMOV A, RiRi ;(R(Ri i)A)AMOV AMOV A,# #datadata;d

19、ataAdataA 將源操作數(shù)指定內(nèi)容送到將源操作數(shù)指定內(nèi)容送到A A中。中。 1 1內(nèi)部數(shù)據(jù)傳送指令內(nèi)部數(shù)據(jù)傳送指令MOVMOV (2) 以寄存器以寄存器Rn為目的操作數(shù)的指令為目的操作數(shù)的指令 (3條)條) MOV Rn,A MOV Rn,direct MOV Rn,#data 這組指令功能是把源操作數(shù)指定的內(nèi)容送入這組指令功能是把源操作數(shù)指定的內(nèi)容送入當(dāng)前工作寄存器,源操作數(shù)不變。當(dāng)前工作寄存器,源操作數(shù)不變。(3 3)以寄存器間接地址為目的字節(jié)的)以寄存器間接地址為目的字節(jié)的 傳送指令(傳送指令(3條)條) MOV MOV RiRi,A A ;A (Ri i) MOVMOV RiRi,

20、directdirect;(direct) (Ri i) MOVMOV RiRi,#data#data; data (Ri i) 功能:把源操作數(shù)指定的內(nèi)容送入以功能:把源操作數(shù)指定的內(nèi)容送入以R0R0或或R1R1為為地址指針的片內(nèi)存儲(chǔ)單元中。地址指針的片內(nèi)存儲(chǔ)單元中。例:例: MOV R0MOV R0,A AMOV R1MOV R1,20H20HMOV R0MOV R0,#34H#34H(4 4) 以直接地址為目的操作數(shù)的指令以直接地址為目的操作數(shù)的指令(5 5條)條)MOV directMOV direct,A AMOV directMOV direct,RnRnMOV direct1MO

21、V direct1,direct2direct2MOV directMOV direct,RiRiMOV directMOV direct,#data#data 這組指令功能是把源操作數(shù)指定的內(nèi)容送這組指令功能是把源操作數(shù)指定的內(nèi)容送入由直接地址指出的片內(nèi)存儲(chǔ)單元。入由直接地址指出的片內(nèi)存儲(chǔ)單元。MOV 20H,AMOV 20H,R1MOV 20H,30HMOV 20H,R1MOV 0A0H,#34HMOV P2,#34H(5 5)1616位數(shù)據(jù)傳送指令(位數(shù)據(jù)傳送指令(1 1條)條) MOV DPTRMOV DPTR,#data16#data16功能:將一個(gè)功能:將一個(gè)1616位的立即數(shù)送入

22、位的立即數(shù)送入DPTRDPTR中去。其中中去。其中高高8 8位送入位送入DPHDPH,低,低8 8位送入位送入DPLDPL。 例:例:MOV DPTRMOV DPTR,#1234H#1234H如果分別向如果分別向DPHDPH,DPLDPL送數(shù),則結(jié)果也一樣。送數(shù),則結(jié)果也一樣。 如下面兩條指令:如下面兩條指令:MOV DPHMOV DPH,#35H#35H MOV DPL MOV DPL,#12H#12H。 則就相當(dāng)于執(zhí)行了則就相當(dāng)于執(zhí)行了 MOV DPTRMOV DPTR,#3512H#3512H。 MOVC A,A+DPTR;A(A)+(DPTR) MOVCA,A+PC;A(A)+(PC)

23、 已知內(nèi)存單元已知內(nèi)存單元40H40H中有一個(gè)中有一個(gè)0 09 9范圍內(nèi)的數(shù),用查表指范圍內(nèi)的數(shù),用查表指令編出能查出該數(shù)平方值的程序。設(shè)平方表表頭地址為令編出能查出該數(shù)平方值的程序。設(shè)平方表表頭地址為0200H0200H。程序及執(zhí)行后的結(jié)果如下:。程序及執(zhí)行后的結(jié)果如下: MOVMOV A A,40H40H MOV MOV DPTR DPTR,#LAB#LAB MOVC A MOVC A,A+DPTRA+DPTR LAB:DB 0LAB:DB 0,1 1,4 4,9 9,10H10H,19H 19H 若(若(40H40H)為)為2 2,查表得,查表得4 4并存于并存于A A中中 2 2外部數(shù)

24、據(jù)傳送指令外部數(shù)據(jù)傳送指令MOVXMOVX (4條) MOVX AMOVX A,RiRi MOVX Ri MOVX Ri,A A MOVX A MOVX A,DPTRDPTR MOVX DPTR MOVX DPTR,A A說(shuō)明:說(shuō)明:1.1.在在5151中,與中,與外外部存儲(chǔ)器部存儲(chǔ)器RAMRAM打交道的只可打交道的只可以是以是A A累加器。所有需要送入外部累加器。所有需要送入外部RAMRAM的數(shù)據(jù)必需的數(shù)據(jù)必需要通過(guò)要通過(guò)A A送去,而所有要讀入的外部送去,而所有要讀入的外部RAMRAM中的數(shù)據(jù)中的數(shù)據(jù)也必需通過(guò)也必需通過(guò)A A讀入。讀入。 在此我們可以看出內(nèi)外部在此我們可以看出內(nèi)外部RAM

25、RAM的區(qū)別了,內(nèi)部的區(qū)別了,內(nèi)部RAMRAM間可以直接進(jìn)行數(shù)據(jù)的傳遞,而外部則不行。間可以直接進(jìn)行數(shù)據(jù)的傳遞,而外部則不行。 2. 2.要讀或?qū)懲獠康囊x或?qū)懲獠康腞AMRAM,當(dāng)然也必須要知道,當(dāng)然也必須要知道RAMRAM的地址,的地址,在后兩條指令中,地址是被直接放在在后兩條指令中,地址是被直接放在DPTRDPTR中的。而前兩條中的。而前兩條指令,由于指令,由于RiRi(即(即R0R0或或R1R1)只是)只是8 8位的寄存器,所以只提位的寄存器,所以只提供低供低8 8位地址。高位地址。高8 8位地址由位地址由P2P2口口來(lái)提供。來(lái)提供。(演示舉例) 3.3.使用時(shí)應(yīng)先將要讀或?qū)懙牡刂匪腿?/p>

26、使用時(shí)應(yīng)先將要讀或?qū)懙牡刂匪腿隓PTRDPTR或或RiRi中,然后中,然后再用讀寫(xiě)命令。再用讀寫(xiě)命令。 例例:將外部:將外部RAMRAM中中100H100H單元中的內(nèi)容送入外部單元中的內(nèi)容送入外部RAMRAM中中200H200H單元中。單元中。MOV DPTRMOV DPTR,#0100H#0100HMOVX AMOVX A,DPTRDPTRMOV DPTRMOV DPTR,#0200H#0200HMOVX DPTRMOVX DPTR,A A3堆棧操作指令(堆棧操作指令(PUSH、POP) (2條)條)PUSH directPUSH direct ;SPSPSP+1SP+1,(SP)(SP)(

27、direct)(direct)POP directPOP direct ; ; (direct) (direct) (SP),(SP), SPSP-1第一條為壓入指令,就是將direct中的內(nèi)容送入堆棧中,第二條為彈出指令,就是將堆棧中的內(nèi)容送回到direct中。例: MOV SPMOV SP,#5FH#5FH MOV A MOV A,#100#100 MOV B MOV B,#20#20 PUSH ACCPUSH ACC PUSH B PUSH B 4 4數(shù)據(jù)交換指令數(shù)據(jù)交換指令 (5 5條)條)XCH AXCH A,RnRn ;ARnARnXCH AXCH A, directdirect

28、;A(direct)A(direct)XCH AXCH A, RiRi ;A(Ri)A(Ri)XCHD AXCHD A, RiRi ;A.3A.3A.0(Ri).3A.0(Ri).3(Ri).0(Ri).0SWAP ASWAP A ;A.3A.3A.0A.7A.0A.7A.4A.4例:例: 已知已知A A中的內(nèi)容為中的內(nèi)容為34H34HMOV R6MOV R6, #29H#29HXCH AXCH A, R6R6SWAP ASWAP AXCH AXCH A, R6R6 XCHD AXCHD A, R0R0;R6=29H;A=29H,R6=34H;A=92H;A=34H,R6=92H;A=34H,

29、(R0)=56H ( (原值)原值)執(zhí)行后執(zhí)行后A=36H, (R0)=54(40H)= H 50H = H A= H (41H)= H 51H= H R0= H 課堂練習(xí)1.設(shè):內(nèi)部RAM中,(40H)=50H,(41H)=60H,(50H)=30H, (51H)=70H,執(zhí)行下列片段后:MOV R0MOV R0,40H40H MOV A MOV A,R0R0 INC R0 INC R0 MOV R0 MOV R0,A Ab. MOV R0b. MOV R0,#40H#40H MOV A MOV A,R0R0 INC R0 INC R0 MOV A MOV A,R0R0;R0=50H;R0=

30、50H;A=30H;A=30H;R0=51H;R0=51H;(51H)=30H;(51H)=30H;R0=40H;R0=40H;A=50H;A=50H;(40)=51H;(40)=51H;A=51H;A=51H2 2. .給出每條指令執(zhí)行后的結(jié)果給出每條指令執(zhí)行后的結(jié)果 MOV 23H,#30HMOV 12H,#34HMOV R0,#23HMOV R7,12HMOV R1,#12HMOV A,R0MOV 34H,R1MOV 45H,34HMOV DPTR,#6712HMOV 12H,DPHMOV R0,DPLMOV A,R0;(23H)=30H;(12H)=34H;R0=23HXXXXXXXX

31、XXXXXXXXXXXXXXXXXXXXXXXXXXXXDPHDPHDPLDPL45H45H34H34H23H23H12H12HR7R7R1R1R0R0XXXXXXXXXXXXXXXX30303434XXXXXXXX2323XXXXXXXXXXXXXXXX30303434343412122323676712123434343430303434343412122323676712123434343430306767343412121212;R7=34H;R1=12H;A=30H;(34H)=34H;(45H)=34H;DPTR=6712H;(12H)=6767H;R0=1212H;A=6767H

32、內(nèi)部RAM3.3.利用傳送類(lèi)指令并用多種方法將內(nèi)部利用傳送類(lèi)指令并用多種方法將內(nèi)部RAMRAM中中50H50H單元的內(nèi)容與單元的內(nèi)容與40H40H單元的內(nèi)容互換。單元的內(nèi)容互換。3.3.2 3.3.2 算術(shù)運(yùn)算類(lèi)指令算術(shù)運(yùn)算類(lèi)指令 (24(24條條) ) Arithmetic Operations Arithmetic Operations 主要對(duì)主要對(duì)8 8位無(wú)符號(hào)數(shù);也可用于帶符號(hào)數(shù)運(yùn)算。位無(wú)符號(hào)數(shù);也可用于帶符號(hào)數(shù)運(yùn)算。 包括:加、減、乘、除、加包括:加、減、乘、除、加1 1、減、減1 1運(yùn)算指令運(yùn)算指令 影響影響PSWPSW有關(guān)位。有關(guān)位。 1. 加法指令(13條)ADD AADD A

33、,#data#data ; A AdataAdataAADD AADD A,directdirect ; A A(direct )A(direct )AADD AADD A,RnRn ; A ARnARnAADD AADD A,RiRi ; A A(Ri)A(Ri)A用途:用途:將將A A中的值與源操作數(shù)所指內(nèi)容相加,最中的值與源操作數(shù)所指內(nèi)容相加,最終結(jié)果終結(jié)果 存在存在A A中。中。(1)不帶進(jìn)位位的加法指令(4條)例例1 1:ADD AADD A,#47H#47HADD AADD A,34H34HADD AADD A,R7R7ADD AADD A,R0R0例例2 2: MOV AMOV

34、A,#0AEH #0AEH ;-82D;-82D ADD A ADD A,#81H #81H ;-127D;-127D則執(zhí)行完本條指令后,則執(zhí)行完本條指令后,A A中的值為中的值為2FH;2FH;C=1C=1, ,AC=0AC=0, ,OV=1OV=1, ,P=1P=1。對(duì)無(wú)符號(hào)數(shù):結(jié)果為對(duì)無(wú)符號(hào)數(shù):結(jié)果為1 12FH;2FH;帶符號(hào)數(shù)運(yùn)算:帶符號(hào)數(shù)運(yùn)算:OV=1OV=1,有錯(cuò),有錯(cuò)。實(shí)驗(yàn)驗(yàn)證一下本例(2)帶進(jìn)位位的加法指令(4條)ADDC AADDC A,RnRn; A ARnRnCYACYAADDC AADDC A,directdirect; A A(direct )(direct )CY

35、ACYAADDC AADDC A,RiRi; A A(Ri)(Ri)CYACYAADDC AADDC A,#data#data; A AdatadataCYACYA用途:用途:將將A A中的值和其后面的值以及進(jìn)位位中的值和其后面的值以及進(jìn)位位C C中的中的值相加,最終結(jié)果存在值相加,最終結(jié)果存在A A,常用于多字節(jié)數(shù)運(yùn)算中。,常用于多字節(jié)數(shù)運(yùn)算中。例: 先做先做67H+A0H=107H67H+A0H=107H,而,而1 107H07H顯然超過(guò)了顯然超過(guò)了0FF0FFH H,因此最終保存在因此最終保存在A A中的是中的是07H07H,而,而1 1則到了則到了PSWPSW中的中的CYCY位了。換言

36、之,位了。換言之,CYCY就相當(dāng)于是就相當(dāng)于是100H100H。 然后再做然后再做10H + 30H + 10H + 30H + CYCY,結(jié)果是,結(jié)果是41H41H,所以,所以最終的結(jié)果是最終的結(jié)果是4107H4107H。1067H+30A0H1067H+30A0H0001 0000 0110 0111 0011 0000 1010 0000 0100 0001 0000 0111 1067H1067H30A0H30A0H4107H4107H設(shè):設(shè):1067H1067H存在存在R1R0R1R0中,中, 30A0H30A0H存在存在R3R2R3R2中中, ,計(jì)算計(jì)算R1R0+R3R2R1R0+

37、R3R2,結(jié)果存在結(jié)果存在R5R4R5R4中。中。MOV A,R0MOV A,R0ADD A,R2 ADD A,R2 ;R0+R2AR0+R2A和和CYCYMOV R4,AMOV R4,AMOV A,R1MOV A,R1ADDC A,R3 ADDC A,R3 ;R1+R3+CYAR1+R3+CYA和和CYCYMOV R5,AMOV R5,A又例: 先做先做67H+20H=87H67H+20H=87H,沒(méi)有超過(guò),沒(méi)有超過(guò)0FF0FFH H,因此最終,因此最終保存在保存在A A中的是中的是87H87H,而,而PSWPSW中的中的CY=0CY=0。 然后再做然后再做10H + 30H + 10H +

38、 30H + CYCY,結(jié)果是,結(jié)果是40H40H,所以,所以最終的結(jié)果是最終的結(jié)果是4087H4087H。1067H+3020H1067H+3020H0001 0000 0110 0111 0011 0000 0010 0000 0100 0000 1000 0111 1067H1067H3020H3020H4087H4087H實(shí)驗(yàn)驗(yàn)證一下本例設(shè):1067H存在R1R0中, 3020H存在R3R2中,計(jì)算R1R0+R3R2,結(jié)果存在R5R4中。(3) 加1指令(5條)INC AINC A ;A+1AA+1A,影響,影響P P標(biāo)志標(biāo)志INC RnINC Rn ;Rn+1RnRn+1RnINC

39、directINC direct;(direct)+1(direct)(direct)+1(direct)INC RiINC Ri ;(Rn)+1(Rn)(Rn)+1(Rn)INC DPTRINC DPTR ;DPTR+1DPTRDPTR+1DPTR功能很簡(jiǎn)單,就是將后面目標(biāo)中的值加功能很簡(jiǎn)單,就是將后面目標(biāo)中的值加1 1。例:例:A=12HA=12H,R0=33HR0=33H,(21H)=32H(21H)=32H, (34H)=22H(34H)=22H,DPTR=1234HDPTR=1234H。連續(xù)執(zhí)行下面的指令:連續(xù)執(zhí)行下面的指令: INC AINC A INC R0 INC R0 INC

40、 21H INC 21H INC R0 INC R0 INC DPTR INC DPTR; A=13HA=13H; R0=34HR0=34H;(;(21H21H)=33H=33H;(;(34H34H)=23H=23H; DPTR=1235HDPTR=1235H2. 減法指令(8條)SUBB ASUBB A,RnRn ; A ARnRnCYACYASUBB ASUBB A,directdirect ; A A(direct )(direct )CYACYASUBB ASUBB A,RiRi ; A A(Ri)(Ri)CYACYASUBB ASUBB A,#data#data ; A Adatad

41、ataCYACYA將將A A中的值減去源操作數(shù)所指內(nèi)容以及進(jìn)位位中的值減去源操作數(shù)所指內(nèi)容以及進(jìn)位位C C中的中的值,最終結(jié)果存在值,最終結(jié)果存在A A中。中。如:如: SUBB ASUBB A,R2R2設(shè):設(shè): A=C9HA=C9H,R2=55HR2=55H,CY=1CY=1,執(zhí)行指令之后,執(zhí)行指令之后,A A中的值為中的值為73H73H。(1) 帶借位的減法指令(4條)說(shuō)明說(shuō)明:沒(méi)有不帶借位的減法指令沒(méi)有不帶借位的減法指令,如果需,如果需要做要做不不帶位的減法指令(在做第一次相減帶位的減法指令(在做第一次相減時(shí)),只要將時(shí)),只要將CYCY清零清零即可。即可。對(duì)帶符號(hào)數(shù)對(duì)帶符號(hào)數(shù),要注意,

42、要注意OVOV標(biāo)志。標(biāo)志。OV=1OV=1,出錯(cuò)出錯(cuò)。2. 減1指令(4條)DEC ADEC A;A-1A,A-1A,影響影響P P標(biāo)志標(biāo)志DEC RnDEC Rn;Rn-1RnRn-1RnDEC directDEC direct ;(direct)-1(direct)(direct)-1(direct)DEC RiDEC Ri;(Rn)-1(Rn)(Rn)-1(Rn) 與加與加1 1指令類(lèi)似。指令類(lèi)似。DA ADA A在進(jìn)行在進(jìn)行BCDBCD碼加法運(yùn)算時(shí),跟在碼加法運(yùn)算時(shí),跟在ADDADD和和ADDCADDC指指令之后,用來(lái)對(duì)令之后,用來(lái)對(duì)BCDBCD碼加法運(yùn)算結(jié)果進(jìn)行碼加法運(yùn)算結(jié)果進(jìn)行自動(dòng)

43、修自動(dòng)修正正。例:例:A=0001 0101 BCDA=0001 0101 BCD(代表十進(jìn)制數(shù)(代表十進(jìn)制數(shù)1515) ADD AADD A,#8#83. 十進(jìn)制調(diào)整指令(1 1條)條); A=1DH; A=1DH,按二進(jìn)制規(guī)律加,按二進(jìn)制規(guī)律加; A=23H; A=23H,按十進(jìn)制規(guī)律加,按十進(jìn)制規(guī)律加DA ADA A 【例【例3-12】編寫(xiě)程序完成】編寫(xiě)程序完成68+89的的BCD加法程加法程序,并對(duì)調(diào)整過(guò)程進(jìn)行分析。序,并對(duì)調(diào)整過(guò)程進(jìn)行分析。 解:二進(jìn)制加法和十進(jìn)制調(diào)整過(guò)程為:解:二進(jìn)制加法和十進(jìn)制調(diào)整過(guò)程為:0 1 1 0 1 0 0 01 0 0 0 1 0 0 11 1 1 1

44、0 0 0 1+)0 1 1 01 1 1 1 0 1 1 10 1 1 0 0 0 0 00 1 0 1 0 1 1 1+)+)01低4位9,加6調(diào)整高4位9,加60調(diào)整CY=14. 乘法指令(1條)MUL AB MUL AB ;A ABBABBA此指令的功能是將此指令的功能是將A A和和B B中的兩個(gè)中的兩個(gè)8 8位無(wú)符號(hào)數(shù)位無(wú)符號(hào)數(shù)相乘,兩數(shù)相乘結(jié)果一般比較大,因此最終結(jié)果相乘,兩數(shù)相乘結(jié)果一般比較大,因此最終結(jié)果用用1 1個(gè)個(gè)1616位數(shù)來(lái)表達(dá),其中高位數(shù)來(lái)表達(dá),其中高8 8位放在位放在B B中,低中,低8 8位位放在放在A A中。在乘積大于中。在乘積大于FFHFFH時(shí),時(shí),0V0V置

45、置1 1,否則,否則OVOV為為0 0;而而CYCY總是總是0 0。例:例: A=4EHA=4EH,B=5DHB=5DH,執(zhí)行指令,執(zhí)行指令MUL ABMUL AB后,后,乘積是乘積是1C56H1C56H,所以在,所以在B B中放的是中放的是1CH1CH,而,而A A中放的中放的則是則是56H56H。OV= OV= P= P= 1 1 0 05. 除法指令(1 1條)條)DIV ABDIV AB;A AB B的商的商AA,余數(shù),余數(shù)BB此指令的功能是將此指令的功能是將A A中的中的8 8位無(wú)符號(hào)數(shù)除位無(wú)符號(hào)數(shù)除B B中的中的8 8位位無(wú)符號(hào)數(shù)(無(wú)符號(hào)數(shù)(A/BA/B)。除了以后,商放在)。除了

46、以后,商放在A A中,余數(shù)放中,余數(shù)放在在B B中。中。CYCY和和OVOV都是都是0 0。如果在做除法前。如果在做除法前B B中的值是中的值是00H00H,也,也就是除數(shù)為就是除數(shù)為0 0,那么,那么0V=10V=1。如如:A=11HA=11H,B=04HB=04H,執(zhí)行指令,執(zhí)行指令DIV ABDIV AB后,后,結(jié)果結(jié)果:A=04HA=04H,B=1B=1。CY=OV= P=001 算數(shù)運(yùn)算類(lèi)指令對(duì)標(biāo)志位的影響算數(shù)運(yùn)算類(lèi)指令對(duì)標(biāo)志位的影響 : 影 響 標(biāo) 志 指令助記符 Cy OV AC 備 注 ADD (加) ADDC (帶進(jìn)位加) SUBB (帶借位減) MUL (乘) 0 DIV

47、(除) 0 DA (二進(jìn)制調(diào)整) “”表示有影響(可置1 或清0);“0”表示總清0 練習(xí)練習(xí)試編寫(xiě)試編寫(xiě)1234H-0FA3H1234H-0FA3H的程序段,將結(jié)果高的程序段,將結(jié)果高8 8位存入位存入51H51H, 低低8 8位存入位存入50H50H單元。單元。MOV AMOV A,#34H#34HSUBB ASUBB A,#0A3H#0A3HMOV 50HMOV 50H,A AMOV AMOV A,#12H#12HSUBB ASUBB A,#0FH#0FHMOV 51HMOV 51H,A ACLR C3.3.3 邏輯運(yùn)算指令 (24條)主要用于對(duì)主要用于對(duì)2 2個(gè)操作數(shù)按個(gè)操作數(shù)按位進(jìn)行

48、邏輯位進(jìn)行邏輯操作,結(jié)操作,結(jié)果送到果送到A A或直接尋址單元?;蛑苯訉ぶ穯卧 主要操作主要操作 與、或、異或、移位、取反、清零等。與、或、異或、移位、取反、清零等。v 對(duì)標(biāo)志位的影響對(duì)標(biāo)志位的影響 除了目的操作數(shù)為除了目的操作數(shù)為ACCACC的指令影響奇偶標(biāo)的指令影響奇偶標(biāo)志志P P外,一般不影響標(biāo)志位。外,一般不影響標(biāo)志位。Logic Operations1邏輯邏輯“與與”指令(指令(6條)條) ANL A,Rn ;ARnAANL A,direct ;A(direct)AANL A,Ri ;A(Ri)AANL A,#data ;AdataAANL direct,A ;(direct)A

49、(direct)ANL direct,#data ;(direct)data(direct)影響影響P P標(biāo)志標(biāo)志例:例:71H71H和和56H56H相與:相與:01110001 01110001 (71H71H) )01010110 01010110 (56H56H) 01010000 01010000 即即50H50H后兩條指令,若直接地址為后兩條指令,若直接地址為I/OI/O端口,則為端口,則為“讀改讀改寫(xiě)寫(xiě)”操作。操作。 ANd Logic Instruction例:例:MOV AMOV A,#45H#45HMOV R1MOV R1,#25H#25HMOV 25HMOV 25H,#79

50、H#79HANL AANL A,R1R1ANL 25HANL 25H,#15H#15HANL 25HANL 25H,A A;A=45HA=45H;R1=25HR1=25H;(25H)=79H(25H)=79H;45H79H = 41HA45H79H = 41HA; 79H15H = 11H (25H)79H15H = 11H (25H); 11H41H = 01H (25H)11H41H = 01H (25H)實(shí)驗(yàn)驗(yàn)證一下本例2. 2. 邏輯或指令(邏輯或指令(6 6條)條)ORL A,Rn ;ARnAORL A,direct ;A(direct)AORL A,Ri ;A(Ri)AORL A,

51、#data;AdataAORL direct,A;(direct)A(direct)ORL direct,#data ;(direct)data(direct)影響影響P P標(biāo)志標(biāo)志例:例:71H和和56H相或:相或:01110001 (71H) ) 01010110 (56H) 01110111 即即77H后兩條指令,若直接地址為后兩條指令,若直接地址為I/OI/O端口,則為端口,則為“讀改讀改寫(xiě)寫(xiě)”操作。操作。 OR Logic Instruction例:MOV AMOV A,#45H#45HMOV R1MOV R1,#25H#25HMOV 25HMOV 25H,#39H#39HORL A

52、ORL A,R1R1ORL 25HORL 25H,#13H#13HORL 25HORL 25H,A A;A=45HA=45H;R1=25HR1=25H;(25H)=39H(25H)=39H;45H39H = 7DHA45H39H = 7DHA;39H13H = 3BH (25H)39H13H = 3BH (25H); 3BH7DH =7FH (25H)3BH7DH =7FH (25H)實(shí)驗(yàn)驗(yàn)證一下本例例:例:71H71H和和56H56H相異或:相異或: 01110001 01110001 (71H71H) ) 01010110 ) 01010110 (56H56H) 3. 邏輯異或指令(6 6

53、條)條)XRL A,Rn ;A RnAXRL A,direct ;A (direct)AXRL A,Ri ;A (Ri)AXRL A,#data ;A dataAXRL direct,A ;(direct) A(direct)XRL direct,#data ;(direct) data(direct)影響影響P標(biāo)志標(biāo)志00100111 00100111 即即27H27H后兩條指令,若直接地址為后兩條指令,若直接地址為I/OI/O端口,則為端口,則為“讀改讀改寫(xiě)寫(xiě)”操作。操作。 eXclusive-oR Logic Instruction例:MOV AMOV A,#45H#45HMOV R1M

54、OV R1,#25H#25HMOV 25HMOV 25H,#39H#39HXRL AXRL A,R1R1XRL 25HXRL 25H,#13H#13HXRL 25HXRL 25H,A A;A=45HA=45H;R1=25HR1=25H;(25H)=39H(25H)=39H; 45H39H = 7CHA45H39H = 7CHA; 39H13H = 2AH (25H)39H13H = 2AH (25H);2AH7CH =56H (25H)2AH7CH =56H (25H)實(shí)驗(yàn)驗(yàn)證一下本例4. 清清0 0與與取反指令(2 2條)條)取反:取反:CPL ACPL A ;/AA/AA例:例:若若A=5

55、CHA=5CH,執(zhí)行,執(zhí)行CPL ACPL A 結(jié)果:結(jié)果:A=A3HA=A3H清清0 0:CLR ACLR A ;0A0A3.3.4 循環(huán)移位指令(4 4條)條)RL ARR ARLC ARRC AA.7 A.0A.7 A.0A.7 A.0CYCYA.7 A.0后兩條指令,影響后兩條指令,影響P P標(biāo)志和標(biāo)志和CYCY。 Rotate Logic instruction例:若若A=5CHA=5CH,CY=1CY=1,執(zhí)行,執(zhí)行RLC ARLC A后,后,v 對(duì)對(duì)RLCRLC、RRCRRC指令,在指令,在CY=0CY=0時(shí)時(shí) RLCRLC相當(dāng)于相當(dāng)于乘乘以以2 2 RRCRRC相當(dāng)于相當(dāng)于除除

56、以以2 2結(jié)果:結(jié)果:A=B9HA=B9H,CY=0CY=0,P=1P=10101 11000101 11001 11011 10011011 10010 0綜合舉例:綜合舉例:ANL AANL A,#0FH#0FH ;屏蔽;屏蔽A A的高的高4 4位位SWAP ASWAP AANL P1ANL P1,#0FH#0FH ;清;清P1P1口高口高4 4位位ORL P1ORL P1,A A ;P1P1口高口高4 4位輸出位輸出A A的低的低4 4位;位; 把累加器把累加器A A中的低中的低4 4位狀態(tài),通過(guò)位狀態(tài),通過(guò)P1P1口的高口的高4 4位輸位輸出,出, P1P1口的低口的低4 4位狀態(tài)不變

57、。位狀態(tài)不變。共有控制程序轉(zhuǎn)移類(lèi)指令共有控制程序轉(zhuǎn)移類(lèi)指令( (不包括位操作類(lèi)的轉(zhuǎn)移不包括位操作類(lèi)的轉(zhuǎn)移指令指令) )。此類(lèi)指令一般不影響。此類(lèi)指令一般不影響PSWPSW。包括以下類(lèi)型:包括以下類(lèi)型:無(wú)條件轉(zhuǎn)移和條件轉(zhuǎn)移無(wú)條件轉(zhuǎn)移和條件轉(zhuǎn)移相對(duì)轉(zhuǎn)移和絕對(duì)轉(zhuǎn)移相對(duì)轉(zhuǎn)移和絕對(duì)轉(zhuǎn)移長(zhǎng)轉(zhuǎn)移和短轉(zhuǎn)移長(zhǎng)轉(zhuǎn)移和短轉(zhuǎn)移調(diào)用與返回指令調(diào)用與返回指令 短轉(zhuǎn)移類(lèi)指令:短轉(zhuǎn)移類(lèi)指令:AJMP AJMP addr11addr11 長(zhǎng)轉(zhuǎn)移類(lèi)指令:長(zhǎng)轉(zhuǎn)移類(lèi)指令:LJMP LJMP addr16addr16 相對(duì)轉(zhuǎn)移指令:相對(duì)轉(zhuǎn)移指令:SJMP SJMP relrel 間接轉(zhuǎn)移指令:間接轉(zhuǎn)移指令:JMP JMP A+DPTR

58、A+DPTR(1 1)上面的前三條指令,統(tǒng)統(tǒng)理解成:上面的前三條指令,統(tǒng)統(tǒng)理解成:PCPC值改值改變,即跳轉(zhuǎn)到一個(gè)標(biāo)號(hào)處。變,即跳轉(zhuǎn)到一個(gè)標(biāo)號(hào)處。 那么他們的區(qū)別何在呢?那么他們的區(qū)別何在呢?v跳轉(zhuǎn)的范圍不同。跳轉(zhuǎn)的范圍不同。 短轉(zhuǎn)移類(lèi)指令:短轉(zhuǎn)移類(lèi)指令:AJMP AJMP addr11addr11 長(zhǎng)轉(zhuǎn)移類(lèi)指令:長(zhǎng)轉(zhuǎn)移類(lèi)指令:LJMP LJMP addr16addr16 相對(duì)轉(zhuǎn)移指令:相對(duì)轉(zhuǎn)移指令:SJMP SJMP relrel轉(zhuǎn)移范圍轉(zhuǎn)移范圍:2KB2KB64KB64KB-128-128+127+127v指令構(gòu)成不同。指令構(gòu)成不同。 AJMPAJMP、LJMPLJMP后跟的是后跟的是絕對(duì)

59、地址絕對(duì)地址, 而而SJMPSJMP后跟的是后跟的是相對(duì)地址相對(duì)地址。 v指令長(zhǎng)度不同指令長(zhǎng)度不同v 原則上,所有用原則上,所有用SJMPSJMP或或AJMPAJMP的地方都可以用的地方都可以用 LJMPLJMP來(lái)替代。來(lái)替代。間接轉(zhuǎn)移指令:間接轉(zhuǎn)移指令:JMPJMP A+DPTRA+DPTR 這條指令的用途也是跳轉(zhuǎn),轉(zhuǎn)到什么地方去呢?這條指令的用途也是跳轉(zhuǎn),轉(zhuǎn)到什么地方去呢?這可不能由標(biāo)號(hào)簡(jiǎn)單地決定了。這可不能由標(biāo)號(hào)簡(jiǎn)單地決定了。 轉(zhuǎn)移地址由轉(zhuǎn)移地址由A+DPTRA+DPTR形成,并直接送入形成,并直接送入PCPC。指令對(duì)指令對(duì)A A、DPTRDPTR和標(biāo)志位均無(wú)影響和標(biāo)志位均無(wú)影響。 本指

60、令可代替眾多的判別跳轉(zhuǎn)指令,又稱(chēng)為本指令可代替眾多的判別跳轉(zhuǎn)指令,又稱(chēng)為散散轉(zhuǎn)指令轉(zhuǎn)指令,多用于多分支程序結(jié)構(gòu)中。,多用于多分支程序結(jié)構(gòu)中。(2 2)第四條指令與前三條指令相比有所不同第四條指令與前三條指令相比有所不同例例: MOV DPTRMOV DPTR,#TAB #TAB ;將;將TABTAB代表的地址送入代表的地址送入DPTRDPTR JMP A+DPTR JMP A+DPTR ;跳轉(zhuǎn);跳轉(zhuǎn)TAB: AJMP ROUT0 TAB: AJMP ROUT0 ;跳轉(zhuǎn);跳轉(zhuǎn)ROUT0ROUT0開(kāi)始的程序段開(kāi)始的程序段TAB+2: AJMP ROUT1 AJMP ROUT1 ;跳轉(zhuǎn);跳轉(zhuǎn)ROUT

溫馨提示

  • 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)論