第3章.指令系統(tǒng)[上new]_第1頁
第3章.指令系統(tǒng)[上new]_第2頁
第3章.指令系統(tǒng)[上new]_第3頁
第3章.指令系統(tǒng)[上new]_第4頁
第3章.指令系統(tǒng)[上new]_第5頁
已閱讀5頁,還剩80頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、l3.1 .1 匯編語言匯編語言l匯編語言是用助記符、符號和數(shù)字等來表示指令的程序語言。匯編語言是用助記符、符號和數(shù)字等來表示指令的程序語言。l機器語言是用二進制編碼來表示的。機器語言是用二進制編碼來表示的。l89C51單片機是單片機是8位機,其機器語言以位機,其機器語言以8位二進制碼為單位位二進制碼為單位(一個字節(jié))。(一個字節(jié))。89C51指令有:單字節(jié)、雙字節(jié)或三字節(jié)指指令有:單字節(jié)、雙字節(jié)或三字節(jié)指令。令。例:“10+20”匯編語言程序 機器語言程序MOV A,#0AH 74 0AHADD A,#14H 24 14H機器語言程序(機器碼,或稱為機器語言程序(機器碼,或稱為“代碼代碼”)

2、通過某種方法)通過某種方法存放在存放在ROM中。中。l89C51匯編語言指令組成:匯編語言指令組成:操作碼操作碼 +操作數(shù)操作數(shù)l格式:格式: 操作碼操作碼目的操作數(shù)目的操作數(shù) ,源操作數(shù),源操作數(shù)l例:例: MOV A,#13H 標(biāo)號段標(biāo)號段-由用戶定義的符號組。標(biāo)號段可有可無。若一條指令中由用戶定義的符號組。標(biāo)號段可有可無。若一條指令中 有標(biāo)號段,標(biāo)號代表該指令的第有標(biāo)號段,標(biāo)號代表該指令的第1個字節(jié)所存放的存儲個字節(jié)所存放的存儲 器單元的地址,故標(biāo)號又稱為符號地址,在匯編時,把器單元的地址,故標(biāo)號又稱為符號地址,在匯編時,把 該地址賦值給標(biāo)號。該地址賦值給標(biāo)號。 操作碼操作碼-規(guī)定指令所

3、實現(xiàn)的操作功能,由規(guī)定指令所實現(xiàn)的操作功能,由25個英文字母表示。個英文字母表示。操作數(shù)操作數(shù)-指出了參與操作的數(shù)據(jù)來源和操作結(jié)果存放的目的單元。指出了參與操作的數(shù)據(jù)來源和操作結(jié)果存放的目的單元。 操作數(shù)可以是:一個常數(shù)(立即數(shù));一個數(shù)據(jù)所在的操作數(shù)可以是:一個常數(shù)(立即數(shù));一個數(shù)據(jù)所在的地址,即在執(zhí)行指令時從指定的地址中取出操作數(shù)。地址,即在執(zhí)行指令時從指定的地址中取出操作數(shù)。 操作碼和操作數(shù)都有相對應(yīng)的二進制代碼(即機器碼)。指令操作碼和操作數(shù)都有相對應(yīng)的二進制代碼(即機器碼)。指令代碼由若干字節(jié)組成。代碼由若干字節(jié)組成。l注釋段注釋段-可有可無。加入注釋段的目的是便于閱讀。在閱可有可

4、無。加入注釋段的目的是便于閱讀。在閱讀讀 程序,尤其是在調(diào)試程序時會帶來很多方便。程序,尤其是在調(diào)試程序時會帶來很多方便。l不同的指令,指令的字節(jié)數(shù)也不同。在不同的指令,指令的字節(jié)數(shù)也不同。在89C5189C51指令指令系統(tǒng)中,有系統(tǒng)中,有單字節(jié)(一字節(jié))、雙字節(jié)或單字節(jié)(一字節(jié))、雙字節(jié)或3 3字節(jié)指字節(jié)指令令。第一個字節(jié)第一個字節(jié)第二個字節(jié)第二個字節(jié)第三個字節(jié)第三個字節(jié)單字節(jié)指令單字節(jié)指令操作碼操作碼雙字節(jié)指令雙字節(jié)指令操作碼操作碼操作數(shù)操作數(shù)三字節(jié)指令三字節(jié)指令操作碼操作碼操作數(shù)操作數(shù)操作數(shù)操作數(shù)1. 單字節(jié)(一字節(jié))指令單字節(jié)(一字節(jié))指令單字節(jié)指令中的單字節(jié)指令中的8位二進制代碼既包

5、含操作碼的信息,也包含位二進制代碼既包含操作碼的信息,也包含操作數(shù)的信息。操作數(shù)的信息。 單字節(jié)指令又有二種情況:單字節(jié)指令又有二種情況:記?。阂蛔止?jié)記?。阂蛔止?jié)=8位二進制數(shù)位二進制數(shù)1). 指令碼中隱含著對某一個寄存器的操作指令碼中隱含著對某一個寄存器的操作例如,指令:例如,指令:INC DPTR“DPTR”是是“數(shù)據(jù)指針數(shù)據(jù)指針”,屬于,屬于“特殊功能寄存器特殊功能寄存器”。該條指令翻譯成機器碼為:該條指令翻譯成機器碼為:A3H。二進制數(shù)為:。二進制數(shù)為:1010 0011B。該機器碼是人為(芯片發(fā)明者)規(guī)定的,該機器碼是人為(芯片發(fā)明者)規(guī)定的,INTEL 51系列單片機系列單片機的指

6、令參見教材附錄的指令參見教材附錄A、B。2). 由指令碼中的由指令碼中的rrr三位的不同編碼指定某一個寄存器三位的不同編碼指定某一個寄存器例如,工作寄存器向累加器例如,工作寄存器向累加器A傳送數(shù)據(jù)指令:傳送數(shù)據(jù)指令:MOV A,Rn其指令格式(機器碼)為:其指令格式(機器碼)為:1110 1rrr2. 雙字節(jié)指令雙字節(jié)指令用一字節(jié)表示操作碼,另一字節(jié)表示操作數(shù)或操作數(shù)所在的地址。用一字節(jié)表示操作碼,另一字節(jié)表示操作數(shù)或操作數(shù)所在的地址。其格式為:其格式為:如:如:ADD A,#45H機器碼:機器碼:24H 45H問:該條指令占用問:該條指令占用ROM中幾個單元?中幾個單元?3. 3字節(jié)指令字節(jié)

7、指令一字節(jié)表示操作碼,另兩個字節(jié)為操作數(shù)。其格式為:一字節(jié)表示操作碼,另兩個字節(jié)為操作數(shù)。其格式為:如:如:MOV DPTR,#2100H機器碼:機器碼:90H 21H 00H尋址尋址-就是尋找就是尋找(或確定)(或確定)指令中指令中操作數(shù)操作數(shù)或或操作數(shù)所在的地址操作數(shù)所在的地址。尋址方式尋址方式-就是如何找到存放操作數(shù)的地址,并把操作數(shù)提就是如何找到存放操作數(shù)的地址,并把操作數(shù)提 取出來的方法。取出來的方法。尋址方式越多,計算機尋址能力越強,但指令系統(tǒng)也就越復(fù)雜。尋址方式分為以下七種:尋址方式分為以下七種: 按功能分為以下五種:按功能分為以下五種:1 1、立即數(shù)尋址、立即數(shù)尋址 1 1、數(shù)

8、據(jù)傳送指令、數(shù)據(jù)傳送指令2 2、直接尋址、直接尋址 2 2、算術(shù)運算指令、算術(shù)運算指令3 3、寄存器尋址、寄存器尋址 3 3、邏輯運算指令、邏輯運算指令4 4、寄存器間接尋址、寄存器間接尋址 4 4、控制轉(zhuǎn)移類指令、控制轉(zhuǎn)移類指令5 5、相對尋址、相對尋址 5 5、位操作指令位操作指令6 6、變址尋址、變址尋址7 7、位尋址、位尋址l指令中常用符號說明指令中常用符號說明(P56P56)Rn當(dāng)前寄存器區(qū)的8個工作寄存器R0R7(n07);Ri當(dāng)前寄存器區(qū)可作地址寄存器的2個工作寄存器R0和R1(i0,1);direct8位內(nèi)部RAM單元的地址(即字節(jié)地址)及特殊功能寄存器的地址;#data表示8

9、位常數(shù)(立即數(shù));#datal6表示16位常數(shù);addr16表示16位地址;addrll表示11位地址;rel8位帶符號的地址偏移量。偏移范圍為-128+127。bit表示位地址;間接尋址寄存器或基址寄存器的前綴; / 位操作指令中,該位求反后參與操作,不影響該位;X 片內(nèi)RAM的直接地址或寄存器;(X) 相應(yīng)地址單元中的內(nèi)容;(X)表示X地址單元中的內(nèi)容; :箭頭左邊的內(nèi)容送入箭頭右邊的單元內(nèi)1、寄存器尋址、寄存器尋址 由指令指出寄存器組由指令指出寄存器組R0R7中某一個或其他寄存器中某一個或其他寄存器的內(nèi)容作為操作數(shù)。的內(nèi)容作為操作數(shù)。 如:1)、MOV A, R0 ;(R0) A 2)、

10、ADD A,R1 ;(A)+(R1) A 3)、MOV P1,A ;(A) P1口 操作數(shù)在寄存器中,如R0R7,A、B、Cy(位)、DPTR等。 在此寄存器中存放著在此寄存器中存放著真正的被操作對象真正的被操作對象。l例:例:“INC Rn” 指令的機器為:指令的機器為:0000 1rrr。 若若Rn為為R 3 時,即時,即 INC R3 ,則其機器碼為,則其機器碼為0000 1011。2、直接尋址直接尋址 指令中直接給出的操作數(shù)是片內(nèi)指令中直接給出的操作數(shù)是片內(nèi)RAM單元的的地單元的的地址。址。 如:MOV A,40H ;(40H) A ,即片內(nèi)即片內(nèi)RAM40H單元的內(nèi)容送入單元的內(nèi)容送

11、入A中中 使用使用 直接尋址方式可訪問片內(nèi)直接尋址方式可訪問片內(nèi)RAM的低的低128個單元及特殊個單元及特殊功能寄存器(功能寄存器(SFR)。)。 對對SFR,既可使用其字節(jié)地址,也可使用其名字。,既可使用其字節(jié)地址,也可使用其名字。 如:如: MOV A , P0 ; (P0) A P0口的字節(jié)地址為口的字節(jié)地址為80H,故上條指令又可寫成:,故上條指令又可寫成: MOV A, 80H ; (80H) A 3、立即數(shù)尋址、立即數(shù)尋址 操作碼后面緊跟的是一字節(jié)或兩字節(jié)操作數(shù)。操作碼后面緊跟的是一字節(jié)或兩字節(jié)操作數(shù)。 用用“#” 表示,以區(qū)別直接地址。表示,以區(qū)別直接地址。 如:如:MOV A,

12、 #40H ;40H A 該指令與該指令與“MOV A,40H”有何區(qū)別?有何區(qū)別?89C51中只有一條要求操作碼后面兩字節(jié)立即數(shù)的指令:中只有一條要求操作碼后面兩字節(jié)立即數(shù)的指令: MOV DPTR, #datal6例:例:MOV DPTR,#2100H ;2100H DPTR 其機器碼為:其機器碼為:90 21 00H4、寄存器間接尋址、寄存器間接尋址 操作數(shù)的地址事先存放在某個寄存器中,然后把操作數(shù)的地址事先存放在某個寄存器中,然后把 這個寄存器中的內(nèi)容作為地址,由該地址所指定這個寄存器中的內(nèi)容作為地址,由該地址所指定 的單元內(nèi)容作為操作數(shù)。的單元內(nèi)容作為操作數(shù)。 89C51規(guī)定規(guī)定用用

13、R0或或R1作為間接尋址寄存器,可尋址片內(nèi)作為間接尋址寄存器,可尋址片內(nèi)RAM低位地低位地址的址的128字節(jié)單元內(nèi)容;字節(jié)單元內(nèi)容; 用用DPTR(數(shù)據(jù)指針)作為間接寄存器,尋址數(shù)據(jù)指針)作為間接寄存器,尋址片外片外RAM(數(shù)據(jù)存儲器)的數(shù)據(jù)存儲器)的64KB空間,但不能用這種尋址方法尋址特殊空間,但不能用這種尋址方法尋址特殊功能寄存器(功能寄存器(SFR)。)。如如: MOV A,R0 MOVX A,DPTR操作數(shù)在片操作數(shù)在片內(nèi)內(nèi)RAMRAM中中操作數(shù)在操作數(shù)在片外片外RAMRAM中中例如:將片內(nèi)例如:將片內(nèi)RAM 65H單元的內(nèi)容單元的內(nèi)容47H送送A。其中其中R0中的內(nèi)容為中的內(nèi)容為6

14、5H。 程序如下:程序如下: MOV R0,#65H ;65H (R0R0) MOV 65H,#47H ;47H (6565H H) MOV A,R0 ;(;(R0) A A使用使用“MOV A,Ri”時時 R0或或R1要先賦值。要先賦值。5 5、變址尋址、變址尋址( (基址寄存器基址寄存器+ +變址寄存器尋址變址寄存器尋址) ) 以以DPTR或或PC為基址寄存器,以為基址寄存器,以A為變址寄存器(為變址寄存器(A中的中的內(nèi)容為無符號數(shù)),把兩者內(nèi)容相加(形成的內(nèi)容為無符號數(shù)),把兩者內(nèi)容相加(形成的16位地址)位地址)作為操作數(shù)的地址。作為操作數(shù)的地址。 用變址尋址方式用變址尋址方式只能訪問

15、只能訪問ROM(從(從ROM中讀取數(shù)據(jù)),中讀取數(shù)據(jù)),訪問范圍:訪問范圍:64KB。 例:例: MOVC A, A+DPTR ;(;(A)+(DPTR) A 變址尋址方式常用于查表操作。變址尋址方式常用于查表操作。使用該指令時,使用該指令時, DPTR要先賦值。這個數(shù)值一般要先賦值。這個數(shù)值一般稱為表的首地址。稱為表的首地址。E0A程序存儲區(qū)2040H 9320E0H 472041H DPH 20DPL 00ALU20E0H47指令代碼例如: 2040H:MOVC A,A+DPTR 設(shè)DPTR=2000H,A=0E0H機器碼為機器碼為:93HPC6 6、相對尋址、相對尋址將將PCPC中的當(dāng)前

16、內(nèi)容與指令中的當(dāng)前內(nèi)容與指令第二字節(jié)給出的數(shù)第二字節(jié)給出的數(shù)相加,結(jié)果作為跳相加,結(jié)果作為跳轉(zhuǎn)指令的轉(zhuǎn)移地址(轉(zhuǎn)移目的地址)。轉(zhuǎn)指令的轉(zhuǎn)移地址(轉(zhuǎn)移目的地址)。PCPC中的中的當(dāng)前當(dāng)前內(nèi)容稱為內(nèi)容稱為基基地址地址(本指令后的字節(jié)地址)指令第二字節(jié)給出的數(shù)據(jù)稱為(本指令后的字節(jié)地址)指令第二字節(jié)給出的數(shù)據(jù)稱為偏偏移量移量( (rel)rel),1 1字節(jié)帶符號數(shù)字節(jié)帶符號數(shù). . 常用于跳轉(zhuǎn)指令。常用于跳轉(zhuǎn)指令。 如如: : JC 23H ;JC 23H ;若若Cy=0Cy=0,不跳轉(zhuǎn);不跳轉(zhuǎn); Cy=1Cy=1,跳轉(zhuǎn)跳轉(zhuǎn)改變PC程序存儲區(qū)ALU如:1000H: JC 23H;若若Cy=0,不跳

17、轉(zhuǎn);不跳轉(zhuǎn); Cy=1,向前跳轉(zhuǎn)向前跳轉(zhuǎn)23H個單個單元元1025H1000H 401025H 451001H 23 1024H 471002H 3023H1002H指令代碼當(dāng)前PC其機器碼為:其機器碼為:40 2340 23H H地址共共23H個單元個單元PC目的地址目的地址 = = 源地址源地址 + 2 + 2(相對轉(zhuǎn)移指令字節(jié)數(shù))(相對轉(zhuǎn)移指令字節(jié)數(shù))+ + relrel相對轉(zhuǎn)移分為相對轉(zhuǎn)移分為正向跳轉(zhuǎn)正向跳轉(zhuǎn)和和反向跳轉(zhuǎn)反向跳轉(zhuǎn)。正向跳轉(zhuǎn)時:正向跳轉(zhuǎn)時: rel = rel = 目的地址目的地址 源地址源地址 2 2反向跳轉(zhuǎn)時:反向跳轉(zhuǎn)時:rel = FEH rel = FEH 地址差

18、地址差7 7、位尋址、位尋址對片內(nèi)對片內(nèi)RAMRAM的的位尋址區(qū)位尋址區(qū)和某些可和某些可位尋址位尋址的特殊功能寄存器進行的特殊功能寄存器進行位操作時的尋址方式。位操作時的尋址方式。 如如: : SETB 3DH; SETB 3DH; 將將2727H.5H.5位置位置1 1 CLR C CLR C ;CyCy位清位清0 0操作數(shù)在片內(nèi)RAM位地址區(qū)或SFR某些位中 MCS-51指令系統(tǒng)分為五大類指令系統(tǒng)分為五大類l數(shù)據(jù)傳送指令(數(shù)據(jù)傳送指令(28條)條)l算術(shù)運算指令(算術(shù)運算指令(24條)條)l邏輯運算及移位指令(邏輯運算及移位指令(25條)條)l控制轉(zhuǎn)移指令(控制轉(zhuǎn)移指令(17條)條)l位操

19、作指令或布爾操作(位操作指令或布爾操作(17條)條) 共共111條指令。條指令。l傳送傳送-把源地址單元的內(nèi)容傳送到目的地把源地址單元的內(nèi)容傳送到目的地址單元中去址單元中去,而源地址單元的內(nèi)容不變而源地址單元的內(nèi)容不變;或者或者源、目的單元內(nèi)容互換。源、目的單元內(nèi)容互換。傳送指令的助記符:傳送指令的助記符:“MOV”功能:功能:將源地址單元的內(nèi)容傳送到目的字節(jié),而將源地址單元的內(nèi)容傳送到目的字節(jié),而 源字節(jié)的內(nèi)容不變。源字節(jié)的內(nèi)容不變。1. 1. 以累加器以累加器A A為目的操作數(shù)的指令為目的操作數(shù)的指令 匯編指令格式匯編指令格式 操作操作 MOV A, data ; data A。 2字節(jié)指

20、令字節(jié)指令 機器碼:機器碼:74H dataH MOV A, Rn ; n=07, (Rn) A。 1字節(jié)指令字節(jié)指令 MOV A, Ri ; i=0,1 , (Ri) A。 1字節(jié)指令字節(jié)指令 MOV A, direct ; (direct) A ,direct為內(nèi)部為內(nèi)部RAM或或SFR地址。地址。 2字節(jié)指令字節(jié)指令上述操作會影響上述操作會影響PSW的內(nèi)容(即影響的內(nèi)容(即影響P標(biāo)志位)。標(biāo)志位)。例:執(zhí)行下列指令后,(例:執(zhí)行下列指令后,(A)=?MOV R0, #30HMOV 30H, #60HMOV A, R0(A)=?MOV Rn, A ; (A) Rn , n=07。 1字節(jié)指

21、令字節(jié)指令MOV Rn , direct ; (direct) Rn。 2字節(jié)指令字節(jié)指令MOV Rn ,data ; data Rn。 2字節(jié)指令字節(jié)指令例(A)=78H,(R5)=47H,(70H)=0F2H。寫出執(zhí)行下列指令的注釋。MOV R5,A ;(A) R5,(R5)=78HMOV R5,70H ;(70H) R5,(R5)=0F2HMOV R5,#0A3H ;0A3H R5,(R5)=0A3H注意:指令注意:指令“ MOV Rn,Rn”是非法指令!是非法指令!MOV direct, A ; (A) direct。 2字節(jié)指令字節(jié)指令MOV direct, Rn ; (Rn) di

22、rec t , n=07。 2字節(jié)指令字節(jié)指令MOV direct, Ri ; ( Ri ) ) direct , i=0,1。 2字節(jié)指令字節(jié)指令MOV direct1, direct 2 ; (direct2) direct1。 3字節(jié)指令字節(jié)指令MOV direct, #data ; data direct。 3字節(jié)指令字節(jié)指令例例1 1:MOV 20H,AMOV 20H,R1MOV 20H,30HMOV 20H,R1MOV 0A0H,#34HMOV P2,#34H例例2 2:MOV 78H,#80H機器碼:75 78 80H例3: MOV 78H,80H機器碼:85 80 78H注意注

23、意例例2 2、例例3 3的區(qū)的區(qū)別。別。MOV Ri, A ; (A) (Ri) ) ,i=0,1。 1字節(jié)指令字節(jié)指令MOV Ri , direct ; (direct) (Ri) )。 2字節(jié)指令字節(jié)指令MOV Ri ,data ; data (Ri) )。 2字節(jié)指令字節(jié)指令功能:把源操作數(shù)指定的內(nèi)容送入以R0或R1為地址指 針的片內(nèi)存儲單元中。例:例:MOV R0MOV R0,A AMOV R1MOV R1,20H20HMOV R0MOV R0,#34H#34H使用使用Ri時,時,R0或或R1要先賦值。要先賦值。如:如:MOV R0,#46HMOV R0,AMOV DPTR, #dat

24、a16 ; dataHDPH, dataLDPL ; 3字節(jié)指令字節(jié)指令DPTR-數(shù)據(jù)指針,為SFR中(DPH)、(DPL)例:例:MOV DPTRMOV DPTR,#1234H#1234H結(jié)果:結(jié)果:(DPHDPH)= =1212H H,(,(DPLDPL)= =3434H H。 例如:例如: MOV DPLMOV DPL,#12H #12H MOV DPH MOV DPH,#35H#35H 則就相當(dāng)于執(zhí)行:?則就相當(dāng)于執(zhí)行:?l例題例題1:l例題例題2:請判斷下列的請判斷下列的MCS-51單片機指令的書寫格式是否單片機指令的書寫格式是否有錯,若有,請說明錯誤原因。有錯,若有,請說明錯誤原因

25、。 MOV 50H,R3 MOVC A,R0+DPTR答案:答案: 間址寄存器不能使用間址寄存器不能使用R2R7。 MOVC A,R0+DPTR 。變址尋址方式中的間址。變址尋址方式中的間址 寄存器不可使用寄存器不可使用R0,只可使用,只可使用AMOVC A, A+DPTR ;先(先(PC)+ 1 PC,(A)+(DPTR) A MOVC A, A+PC ; 先(先(PC)+ 1 PC,后后(A)+(PC) A上面兩條指令均為:上面兩條指令均為: 1字節(jié)指令字節(jié)指令例例: (DPTR)=0300H, (A)02H ROM中中 (0302H)=55H執(zhí)行:執(zhí)行: MOVC A, A+DPTR結(jié)果

26、:結(jié)果:(A)=55H使用使用“MOVC A,A+DPTR”指令時,指令時, DPTR要先賦值。這個數(shù)值一般稱為表的首地址。要先賦值。這個數(shù)值一般稱為表的首地址。lP61.例:例:在在ROM中,數(shù)據(jù)表格為:中,數(shù)據(jù)表格為:執(zhí)行程序:執(zhí)行程序:1000H:MOV A,#0DH ;0DHA,查表的偏移量,查表的偏移量1002H:MOVC A,A+PC ;(;(0DH+1003H)A1003H:MOV R0,A ;(;(A)R0執(zhí)行完上述指令后的結(jié)果為:執(zhí)行完上述指令后的結(jié)果為:(A)=02H,(,(R0)=02H,(,(PC)=1004H。數(shù)據(jù)表格數(shù)據(jù)表格lP62.例:例:在在ROM中,數(shù)據(jù)表格為

27、:中,數(shù)據(jù)表格為:執(zhí)行程序:執(zhí)行程序:1000H:MOV A,#10H ;10HA,查表的偏移量,查表的偏移量1002H:PUSH DPH ;保護現(xiàn)場;保護現(xiàn)場1004H:PUSH DPL1006H:MOV DPTR,#7000H ;表首地址;表首地址DPTR1009H:MOVC A,A+DPTR ;(;(10H+7000H)=(7010H)=02HA100AH:POP DPL ;恢復(fù)現(xiàn)場;恢復(fù)現(xiàn)場100CH:POP DPH執(zhí)行后結(jié)果為:(執(zhí)行后結(jié)果為:(A)=02H,(,(PC)=100EH,(DPTR)=原值。原值。 地址地址 機器碼機器碼 源程序源程序 ORG 0050H0050 740

28、3 MOV A, #03H0052 83 MOVC A, A+PC0053 00 DB 00H0054 01 DB 01H0055 04 DB 04H0056 09 DB 09H0057 10 DB 10H0058 19 DB 19H0059 24 DB 24H 005A 31 DB 31H005B 40 DB 40H005C 51 DB 51H END“ORG”、“DB”為為偽指令。偽指令。P108執(zhí)行該程序段后:執(zhí)行該程序段后:(A)=09H。源程序源程序 ORG 0050H MOV A, #03H MOV DPTR,#TLV ;表首地址表首地址DPTR MOVC A, A+DPTR ;查

29、表查表 MOV R6,A SJMP $TLV:DB 00H, 01H, 04H, 09H, 10H DB 19H, 24H, 31H, 40H, 51H END表首地址表首地址MOVX A, DPTR ; (DPTR) A,地址范圍地址范圍64K MOVX A, Ri ; (Ri) A,地址范圍地址范圍0255上面兩條指令為上面兩條指令為”讀讀”。硬件自動使。硬件自動使RD引腳產(chǎn)生低電平,引腳產(chǎn)生低電平,WR引腳為高電平。引腳為高電平。 MOVX DPTR, A ; (A) (DPTR) MOVX Ri , A ; (A) (Ri) 上面兩條指令為上面兩條指令為”寫寫”。硬件自動使。硬件自動使

30、WR引腳產(chǎn)生低電平,引腳產(chǎn)生低電平,RD引腳下為高電平。引腳下為高電平。 以上四條指令均為以上四條指令均為:1字節(jié)指令字節(jié)指令 使用使用“MOVX A,DPTR”和和“MOVX DPTR ,A”指令時,指令時, DPTR要先賦值。這個數(shù)值一般稱為源首地址或目的首地址。要先賦值。這個數(shù)值一般稱為源首地址或目的首地址。說明:說明: 1.在MCS-51中,與外部存儲器RAMRAM打交道的只可以是累加器A A 。所有需要送入外部RAMRAM的數(shù)據(jù)必需要通過A A送去,而所有要讀入的外部RAMRAM中的數(shù)據(jù)也必需通過A A讀入。內(nèi)部RAM間可以直接進行數(shù)據(jù)的傳遞,而外部則不行。2.2.要要“讀讀”或或“

31、寫寫”外部的外部的RAMRAM,當(dāng)然也必須要知道當(dāng)然也必須要知道RAMRAM的地址,對的地址,對“MOVX AMOVX A,DPTRDPTR”和和“MOVX MOVX DPTRDPTR,A A”兩條指令中,地址是被直接放在兩條指令中,地址是被直接放在DPTRDPTR中中的。的。 而而“MOVX AMOVX A,RiRi”和和“MOVX Ri,AMOVX Ri,A”兩條指兩條指令,由于令,由于RiRi(即即R0R0或或R1R1)只是只是8 8位的寄存器,所以位的寄存器,所以只提供低只提供低8 8位地址。高位地址。高8 8位地址由位地址由P2P2口來提供??趤硖峁?。3.3.使用時應(yīng)先將要使用時應(yīng)先

32、將要“讀讀”或或“寫寫”的地址送入的地址送入DPTRDPTR或或RiRi中,然后再用中,然后再用“讀讀/ /寫寫”命令。命令。 請同學(xué)閱讀請同學(xué)閱讀“上機實驗指導(dǎo)書上機實驗指導(dǎo)書”實驗一的程序!實驗一的程序!例題例題2 2:將片外RAMRAM中某一單元(設(shè)為0100H單元)的數(shù)據(jù) 送入片內(nèi)RAMRAM的60H單元中,試編寫程序。例題例題3 3:將片內(nèi)RAMRAM中50H單元的數(shù)據(jù)送到片外RAMRAM的1060H單元 中,試編寫程序。例題例題1 1:將外部RAMRAM中某一單元(設(shè)為0100H單元)的數(shù)據(jù) 送入外部RAMRAM的另一個單元(設(shè)為0200H單元)中,試編 寫程序。 入棧指令入棧指令

33、 PUSH directPUSH direct ;先(先(SPSP)+1+1SPSP,后后( (direct) direct) (SP)(SP) 出棧指令出棧指令 POP direct POP direct ;先先 ((SP)(SP)) ( (direct) direct) , ,后(后(SPSP)-1 -1 ( SP SP)這兩條指令均為:這兩條指令均為:2 2字節(jié)指令。字節(jié)指令。第一條為第一條為壓入壓入指令,就是將指令,就是將directdirect中的內(nèi)容送入中的內(nèi)容送入堆棧堆棧中,第二中,第二條為條為彈出彈出指令,就是將指令,就是將堆棧堆棧中的內(nèi)容送回到中的內(nèi)容送回到directdir

34、ect中中例:例: MOV SPMOV SP,#5FH#5FH MOV A MOV A,#100#100 MOV B MOV B,#20#20 PUSH ACC PUSH ACC PUSH BPUSH B將將SPSP中的值加中的值加1 1,即變?yōu)椋醋優(yōu)?060H H,然后然后將將A A中的值送到中的值送到6060H H單元中,因此執(zhí)單元中,因此執(zhí)行完本條指令后,(行完本條指令后,(6060H H)=100=100,同,同樣,執(zhí)行樣,執(zhí)行PUSH BPUSH B時,是將時,是將SP+1SP+1,即即變?yōu)樽優(yōu)?161H H,然后將然后將B B中的值送入到中的值送入到6161H H單元中,即執(zhí)行完

35、本條指令后,單元中,即執(zhí)行完本條指令后,(6161H H)=20=20。堆棧的操作原則:先進后出堆棧的操作原則:先進后出字節(jié)交換指令字節(jié)交換指令XCH A , Rn ; (A) (Rn)。 1字節(jié)指令字節(jié)指令XCH A , direct ; (A) (direct)。 2字節(jié)指令字節(jié)指令XCH A , Ri ; (A) (Ri)。 1字節(jié)指令字節(jié)指令例: (A)=80H, (R7)=97H執(zhí)行:XCH A , R7結(jié)果:(A)=97H, (R7)=80H半半字節(jié)交換指令字節(jié)交換指令XCHD A, Ri ;(A)0-3 (Ri ) 0-3 )。 1字節(jié)指令字節(jié)指令例:(R0)=60H, (60H

36、)=3EH, (A)=59H執(zhí)行: XCHD A, R0結(jié)果:(A) 5E H (60H)39 H主要對主要對8 8位無符號數(shù);位無符號數(shù);也可用于帶符號數(shù)運算。也可用于帶符號數(shù)運算。 包括:加、減、乘、除、加包括:加、減、乘、除、加1 1、減、減1 1運算指令運算指令 影響影響PSWPSW有關(guān)位。有關(guān)位。復(fù)習(xí)復(fù)習(xí)-PSW寄存器寄存器Cy:進位標(biāo)志位AC:輔助進位標(biāo)志位F0: 供用戶使用的標(biāo)志位OV:溢出標(biāo)志位P:奇偶標(biāo)志位 A中數(shù)據(jù)的奇偶性。當(dāng)1的個數(shù)為奇數(shù),P=1,否則P=0。RS1 RS0 0 0 區(qū)0(地址:00H07H) 0 1 區(qū)1(地址:08H0FH) 1 0 區(qū)2(地址:10H

37、17H) 1 1 區(qū)3(地址:18H1FH)1.1.不帶進位位的加法指令不帶進位位的加法指令 ADD AADD A,#data #data ; (A) (A)dataAdataA。2 2字節(jié)指令字節(jié)指令A(yù)DD AADD A,direct direct ; (A) (A)(direct )A(direct )A。 2 2字節(jié)指令字節(jié)指令A(yù)DD AADD A,Rn Rn ; (A) (A)(Rn)A(Rn)A。 1 1字節(jié)指令字節(jié)指令A(yù)DD AADD A,Ri Ri ; (A)(A)(Ri)A(Ri)A。 1 1字節(jié)指令字節(jié)指令用途:將A中的值與源操作數(shù)所指內(nèi)容相加,最終結(jié) 果存在A中。lP65.

38、例3-1 設(shè)(設(shè)(A A)=0C3H=0C3H,(,(R0R0)=0AAH=0AAH。執(zhí)行指令:執(zhí)行指令:ADD AADD A,R0R0問:執(zhí)行指令后,問:執(zhí)行指令后,A A、R0R0、CYCY、ACAC和和OVOV的內(nèi)容是什么?的內(nèi)容是什么?問題:問題:OVOV溢溢出是什么意出是什么意思?思?若認(rèn)為是補碼運算,則運算結(jié)果若認(rèn)為是補碼運算,則運算結(jié)果為為-61+(-86)=-147-61+(-86)=-147超出了補碼的超出了補碼的表示范圍表示范圍(-128(-128+127)+127)。負溢出。負溢出。也可以這樣理解:兩個負數(shù)相加,也可以這樣理解:兩個負數(shù)相加,而結(jié)果為正,出錯。而結(jié)果為正,

39、出錯。例:例:單片機上電復(fù)位后,單片機上電復(fù)位后,執(zhí)行下面的指令:執(zhí)行下面的指令: MOV AMOV A,#78H#78H MOV R0 MOV R0,#64H#64H ADD AADD A,RORO問:執(zhí)行該指令后:(問:執(zhí)行該指令后:(A A)= =?,(?,(R0R0)= =?,(?,(PSWPSW)= =?問題:問題:OVOV溢溢出是什么意出是什么意思?思?若認(rèn)為是補碼運算,則若認(rèn)為是補碼運算,則運算結(jié)果為運算結(jié)果為+120+64=+220+120+64=+220超出了補超出了補碼的表示范圍碼的表示范圍(-128(-128+127)+127)。正溢出。正溢出。也可以這樣理解:兩個也可以

40、這樣理解:兩個正數(shù)相加,而結(jié)果為負,正數(shù)相加,而結(jié)果為負,出錯。出錯。l例如例如: 若若A=1101 0011B, (R1)=1110 1000B, 執(zhí)行指令執(zhí)行指令“ADD A, R1”時時, 其算式表達為其算式表達為:相加后相加后(A)=1011 1011B(A)=1011 1011B。 若認(rèn)為是若認(rèn)為是無符號無符號相加相加, , 則則A A的值代的值代表十進制數(shù)表十進制數(shù)187187; 若認(rèn)為是若認(rèn)為是有符號數(shù)有符號數(shù)(補碼)相加(補碼)相加, , 則則A A的的值為十進制值為十進制-69-69。l在確定相加后進位標(biāo)志在確定相加后進位標(biāo)志CY的值時的值時, 總是把兩個操作數(shù)作為總是把兩個

41、操作數(shù)作為無符號數(shù)無符號數(shù)直接相加而得出進位直接相加而得出進位CY值。值。 如上例中如上例中, 相加后相加后CY=1。 若為無符號數(shù)相加若為無符號數(shù)相加CY代表十進制數(shù)代表十進制數(shù)256, 但若是兩但若是兩個有符號數(shù)相加個有符號數(shù)相加, CY的值沒有意義。的值沒有意義。l在確定相加后溢出標(biāo)志在確定相加后溢出標(biāo)志OV的值時的值時, 計算機總是把操作數(shù)計算機總是把操作數(shù)當(dāng)當(dāng)作帶符號數(shù)來對待作帶符號數(shù)來對待。 在作加法運算時在作加法運算時, 一個正數(shù)和一個負數(shù)一個正數(shù)和一個負數(shù)相加是不可能產(chǎn)生溢出的相加是不可能產(chǎn)生溢出的, 只有兩個同符號數(shù)相加才有可能只有兩個同符號數(shù)相加才有可能產(chǎn)生溢出產(chǎn)生溢出,

42、表示運算結(jié)果出錯。表示運算結(jié)果出錯。l溢出標(biāo)志位溢出標(biāo)志位OV只有帶符號運算時才有用。只有帶符號運算時才有用。ADDC AADDC A,RnRn;(A)(A)(Rn)(Rn)CYACYA。 1 1字節(jié)指令字節(jié)指令A(yù)DDC AADDC A,directdirect ;(A)(A)(direct )(direct )CYACYA。 2 2字節(jié)指令字節(jié)指令A(yù)DDC AADDC A,RiRi;(A)(A)(Ri)(Ri)CYACYA。 1 1字節(jié)指令字節(jié)指令A(yù)DDC AADDC A,#data#data;(A)(A)#data#dataCYACYA。 2 2字節(jié)指令字節(jié)指令對標(biāo)志位的影響與對標(biāo)志位的影

43、響與ADD相同相同說明:說明:由于由于5151單片機是一種單片機是一種8 8位機,所以只能做位機,所以只能做8 8位的位的數(shù)學(xué)運算,但數(shù)學(xué)運算,但8 8位運算的范圍只有位運算的范圍只有0255,這在實際工,這在實際工作中是不夠的,因此就要進行擴展,一般是將作中是不夠的,因此就要進行擴展,一般是將2 2個個8 8位位( (兩字節(jié)兩字節(jié)) )的數(shù)學(xué)運算合起來,成為一個的數(shù)學(xué)運算合起來,成為一個1616位的運算,位的運算,這樣,可以表達的數(shù)的范圍就可以達到這樣,可以表達的數(shù)的范圍就可以達到065535。3. 3. 帶借位的減法指令帶借位的減法指令SUBB ASUBB A,RnRn ;(A)(A)(R

44、n)(Rn)CYACYA。 1 1字節(jié)指令字節(jié)指令SUBB ASUBB A,direct direct ;(A)(A)(direct )(direct )CYACYA。 2 2字節(jié)指令字節(jié)指令SUBB ASUBB A,RiRi ;( (A)A)(Ri)(Ri)CYACYA。 1 1字節(jié)指令字節(jié)指令SUBB ASUBB A,#data #data ;(A)(A)#data#dataCYACYA。 2 2字節(jié)指令字節(jié)指令若在使用若在使用“SUBB”指令前不知道指令前不知道“CY”值,則應(yīng)先將值,則應(yīng)先將“CY”清清“0”。lP66.例:例:3-3設(shè)累加器設(shè)累加器A的內(nèi)容為的內(nèi)容為0C9H,寄存器,

45、寄存器R2的內(nèi)容為的內(nèi)容為54H,進位標(biāo),進位標(biāo)志志CY=1。執(zhí)行指令。執(zhí)行指令“SUBB A,R2”的結(jié)果為(的結(jié)果為(A)=74H,CY=0,AC=0,OV=1。補碼,其真值為補碼,其真值為-55補碼,其真值為補碼,其真值為-56補碼,其真值為補碼,其真值為84補碼,其真值為補碼,其真值為116補碼時:補碼時:-55-1-(+84)=-140,超過了補碼表示的范圍,超過了補碼表示的范圍4.4.乘法指令乘法指令 MUL AB MUL AB ;(A)(A)(B)B(B)B15158 A A7 70 。 1字節(jié)指令字節(jié)指令 功能:功能:把累加器把累加器A A和寄存器和寄存器B B中的兩個中的兩個

46、8 8位無符號數(shù)相位無符號數(shù)相乘,所得乘,所得 16 16位積的低位積的低8 8位存放在位存放在A A中,積的高中,積的高8 8位存放在位存放在B B中。若中。若 乘積乘積00FFH(255)FFH(255),則則“OV”O(jiān)V”置置1 1;否則清;否則清0 0(即(即B B的內(nèi)容的內(nèi)容 為為0 0)。)。CYCY總是被清總是被清0 0。P66. 例例3-4(A)=4EH, (B)=5DH。執(zhí)行指令:。執(zhí)行指令:MUL AB 后,其結(jié)果是什后,其結(jié)果是什么?么?5.5.除法指令除法指令 DIV ABDIV AB ;A AB B的商的商A A,余數(shù)余數(shù)B B。 1字節(jié)指令字節(jié)指令 A A、B B的

47、內(nèi)容均為的內(nèi)容均為8 8位無符號整數(shù)。位無符號整數(shù)。CYCY和和OVOV均被清均被清0 0。若原(若原(B B)=00H=00H,則結(jié)果是無法確定的,用則結(jié)果是無法確定的,用OV=1OV=1表示,而表示,而CYCY仍仍為為0 0。P67. 例例3-5若(若(A)=0BFH,(,(B)=32H。執(zhí)行:。執(zhí)行:DIV AB 指令后,其指令后,其結(jié)果是什么?結(jié)果是什么?6.6.加加1 1指令指令 INC AINC A;(A)+1A(A)+1A,影響影響P P標(biāo)志。標(biāo)志。 1字節(jié)指令字節(jié)指令 INC Rn INC Rn;(Rn)+1Rn(Rn)+1Rn。 1字節(jié)指令字節(jié)指令 INC direct IN

48、C direct;(direct)+1(direct)(direct)+1(direct)。 2 2字節(jié)指令字節(jié)指令 INC Ri INC Ri;(Ri)+1(Ri)(Ri)+1(Ri)。 1字節(jié)指令字節(jié)指令 INC DPTR INC DPTR;(DPTR)+1DPTR(DPTR)+1DPTR。 1字節(jié)指令字節(jié)指令 若原單元的內(nèi)容為若原單元的內(nèi)容為FFHFFH,加加1 1后溢出為后溢出為0000H H。例:例:A=12HA=12H,R0=33HR0=33H,(21H)=32H(21H)=32H, (34H)=22H (34H)=22H,DPTR=1234HDPTR=1234H。連續(xù)執(zhí)行下面的指

49、令:連續(xù)執(zhí)行下面的指令: INC AINC A INC R0 INC R0 INC 21H INC 21H INC R0 INC R0 INC DPTR INC DPTR; A=13HA=13H; R0=34H R0=34H;(;(21H21H)=33H=33H;(;(34H34H)=23H=23H; DPTR=1235H DPTR=1235H7.7.減減1 1指令指令DEC ADEC A ;(;(A A)-1A,-1A,影響影響P P標(biāo)志。標(biāo)志。 1字節(jié)指令字節(jié)指令 DEC RnDEC Rn ;(;(RnRn)-1Rn-1Rn。 1字節(jié)指令字節(jié)指令 DEC directDEC direct

50、;(direct)-1direct(direct)-1direct。 2字節(jié)指令字節(jié)指令 DEC RiDEC Ri ;(;((Ri)(Ri))-1(Ri)-1(Ri)。 1字節(jié)指令字節(jié)指令 若原單元的內(nèi)容為若原單元的內(nèi)容為0000H H,減減1 1后溢出為后溢出為FFHFFH。8.8.十進制調(diào)整指令十進制調(diào)整指令 DA A DA A ;該指令的功能是對該指令的功能是對BCD碼的加法結(jié)果進行調(diào)整,碼的加法結(jié)果進行調(diào)整, 1字節(jié)指令字節(jié)指令 ;調(diào)整后的結(jié)果儲存在;調(diào)整后的結(jié)果儲存在A中中 該指令必須跟在該指令必須跟在ADDADD和和ADDCADDC指令之后,而且只能用于壓縮指令之后,而且只能用于壓

51、縮BCDBCD數(shù)數(shù)相加結(jié)果的調(diào)整(相加結(jié)果的調(diào)整(自動修正)自動修正)。 兩兩BCDBCD數(shù)相加后,經(jīng)本指令調(diào)整才能得到壓縮數(shù)相加后,經(jīng)本指令調(diào)整才能得到壓縮BCDBCD數(shù)的和的正確數(shù)的和的正確值。值。十進制調(diào)整的修正方法為:十進制調(diào)整的修正方法為:l 當(dāng)累加器低四位大于當(dāng)累加器低四位大于9或半進位標(biāo)志或半進位標(biāo)志AC=1時,則進行低四時,則進行低四位加位加6修正修正(A03)6(A03) 即即(A)=(A) 06l 當(dāng)累加器高四位大于當(dāng)累加器高四位大于9或進位標(biāo)志或進位標(biāo)志CY1時時, 進行高四位加進行高四位加6修正修正(A47)6(A47) 即即(A) (A) 60H l例:例:設(shè)設(shè)A的內(nèi)

52、容為的內(nèi)容為0101 0110B(即為(即為56的的BCD數(shù)),數(shù)),R3的內(nèi)容為的內(nèi)容為0001 0111B(27的的BCD數(shù)),數(shù)),CY的內(nèi)容為的內(nèi)容為1。執(zhí)行下列指令:執(zhí)行下列指令:ADDC A,R3DA A執(zhí)行執(zhí)行“DA A”注意:使用注意:使用“DA A”DA A”指令時:指令時:只能緊跟在加法指令之后進行,不能緊跟在減法、乘法、除只能緊跟在加法指令之后進行,不能緊跟在減法、乘法、除法和法和INC指令之后;指令之后;兩個加數(shù)必須已經(jīng)是兩個加數(shù)必須已經(jīng)是BCD碼;碼;只能對累加器中的結(jié)果(只能對累加器中的結(jié)果(BCD碼)進行調(diào)整。碼)進行調(diào)整。 l兩個一字節(jié)無符號數(shù)相加,將結(jié)果用十進

53、制在兩個一字節(jié)無符號數(shù)相加,將結(jié)果用十進制在7段數(shù)碼管上顯示出來。段數(shù)碼管上顯示出來。ORG 0000H AJMP MAIN ORG 0050HMAIN:MOV SP,#50H MOV A,#34 ADD A,#44 MOV R7,A ;結(jié)果存入結(jié)果存入R7中中,R7中存放的是中存放的是16進制數(shù)進制數(shù) ;以下為以下為16進制數(shù)轉(zhuǎn)換成進制數(shù)轉(zhuǎn)換成BCD碼十進制數(shù)碼十進制數(shù)BCDT: MOV R5,#8 ;設(shè)置計數(shù)值設(shè)置計數(shù)值 CLR A MOV R3,A ;存放結(jié)果寄存器清存放結(jié)果寄存器清0 ,R7中的中的16進制數(shù)轉(zhuǎn)換成進制數(shù)轉(zhuǎn)換成 ;BCD碼十進制數(shù),轉(zhuǎn)換結(jié)果存入碼十進制數(shù),轉(zhuǎn)換結(jié)果存入R

54、3R4 MOV R4,A LOOP:CLR C MOV A,R7 ;取被轉(zhuǎn)換二進制數(shù)乘取被轉(zhuǎn)換二進制數(shù)乘2 RLC A MOV R7,A MOV A,R4 ;乘乘2加加b后經(jīng)十進制調(diào)整后轉(zhuǎn)換成后經(jīng)十進制調(diào)整后轉(zhuǎn)換成BCD碼存入碼存入 ;R3R4 ADDC A,R4 DA A MOV R4,A MOV A,R3 ADDC A,R3 DA A MOV R3,A DJNZ R5,LOOP MOV 20H,R4;以下為拆字以下為拆字 MOV R0,#21H MOV A,20H ANL A,#0FH MOV R0,A ;低低4位存入位存入21H單元中單元中 INC R0 MOV A,20H SWAP A

55、 ANL A,#0FH MOV R0,A ;高高4位存入位存入22H單元中單元中;以下為顯示程序以下為顯示程序 MOV DPTR,#TAB MOV A,22H MOVC A,A+DPTR MOV P2,A ;顯示十位顯示十位 SETB P1.6 MOV A,21H MOVC A,A+DPTR MOV P3,A ;顯示個位顯示個位 SETB P1.7 MOV P3,A ;顯示個位顯示個位 SETB P1.7 MOV A,R3 ;顯示百位顯示百位 CJNE A,#0,L1 ;若百為不若百為不0,則轉(zhuǎn),則轉(zhuǎn)L2顯示百位數(shù)顯示百位數(shù) CLR P1.5 ;若百位為若百位為0,則不顯示百位數(shù),則不顯示百位

56、數(shù) AJMP L2 L1:MOVC A,A+DPTR MOV P0,A SETB P1.5 L2:SJMP $ TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H ;共陽共陽 DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH, 0BFH,0FFH END主要用于對主要用于對2 2個操作數(shù)按個操作數(shù)按位進行邏輯位進行邏輯操作,結(jié)果送到操作,結(jié)果送到A A或直接尋址單元?;蛑苯訉ぶ穯卧 主要操作主要操作 與、或、異或、移位、取反、清零等。與、或、異或、移位、取反、清零等。v 對標(biāo)志位的影響對標(biāo)志位的影響 除了目的操作數(shù)為除了目的操作數(shù)

57、為ACCACC的指令影響奇偶標(biāo)志的指令影響奇偶標(biāo)志P P外,一般不影響標(biāo)志位。外,一般不影響標(biāo)志位。 1.簡單操作指令簡單操作指令CLR A ; “0” A。 1字節(jié)指令字節(jié)指令 2.累加器累加器A取反取反CPL A ; (A) A。 1字節(jié)指令字節(jié)指令 對累加器對累加器A中的內(nèi)容中的內(nèi)容逐位取反逐位取反。例: 設(shè) (A)=3AH, CPL A; 0011 1010B 1100 0101B,即(A)=0C5H 2.移位指令移位指令累加器累加器A循環(huán)左移指令循環(huán)左移指令 RL A ; 1字節(jié)指令字節(jié)指令 例例 :設(shè):設(shè)(A A)6CH = 0110 1100B6CH = 0110 1100B 執(zhí)

58、行指令:執(zhí)行指令:RL ARL A (A)=1101 1000B=0D8H (A)=1101 1000B=0D8H帶進位循環(huán)左移指令帶進位循環(huán)左移指令 RLC A RLC A ; 1字節(jié)指令字節(jié)指令 例:設(shè)例:設(shè)(A A)6CH = 0110 1100B6CH = 0110 1100B, (CY) =1 (CY) =1 執(zhí)行指令:執(zhí)行指令:RLC ARLC A (A)=1101 1001B=0D9H (A)=1101 1001B=0D9H 對對RLRL指令,指令, “RL” RL” 相當(dāng)于乘以相當(dāng)于乘以2 2 對對RLCRLC指令,在指令,在CY=0CY=0時時“RLC” RLC” 相當(dāng)于乘以相當(dāng)于乘以2 2累加器累加器A循環(huán)右移指令循環(huán)右移指令 RR A ; 1字節(jié)指令字節(jié)指令 例:設(shè)(A)6CH = 0110 1100B 執(zhí)行指令: RR A (A)=0011 0110B=36H帶進位循環(huán)右移指令帶進位循環(huán)右移指令 RRC A RRC A ; 1字節(jié)指令字節(jié)指令 例:設(shè)例:設(shè)(A A)6CH = 0110 1100B6CH = 0110 1100B, (CY) =1 (CY) =1 執(zhí)行指令:執(zhí)行指令:RRC

溫馨提示

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

評論

0/150

提交評論