補(bǔ)充:MCS-51指令系統(tǒng)_第1頁
補(bǔ)充:MCS-51指令系統(tǒng)_第2頁
補(bǔ)充:MCS-51指令系統(tǒng)_第3頁
補(bǔ)充:MCS-51指令系統(tǒng)_第4頁
補(bǔ)充:MCS-51指令系統(tǒng)_第5頁
已閱讀5頁,還剩85頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、2021-10-221第第0章章 MCS-51單片機(jī)的單片機(jī)的指令系統(tǒng)指令系統(tǒng)0.1 指令系統(tǒng)概述指令系統(tǒng)概述2021-10-2220.1.1 指令的概念指令的概念1. 機(jī)器碼指令和匯編語言指令機(jī)器碼指令和匯編語言指令l指令:指揮計算機(jī)工作的命令。一種計算機(jī)所能識別和執(zhí)指令:指揮計算機(jī)工作的命令。一種計算機(jī)所能識別和執(zhí)行的指令的集合,稱為該計算機(jī)的指令系統(tǒng)。指令可分為行的指令的集合,稱為該計算機(jī)的指令系統(tǒng)。指令可分為機(jī)器碼指令和匯編語言指令;機(jī)器碼指令和匯編語言指令;l機(jī)器碼指令:用二進(jìn)制代碼表示的指令,能夠直接被計算機(jī)器碼指令:用二進(jìn)制代碼表示的指令,能夠直接被計算機(jī)硬件識別和執(zhí)行。例如執(zhí)行

2、累加器機(jī)硬件識別和執(zhí)行。例如執(zhí)行累加器A加加1的操作的指令,的操作的指令,二進(jìn)制代碼為二進(jìn)制代碼為00000100B,即,即04H;l匯編語言指令:用助記符表示的指令。必須通過匯編程序匯編語言指令:用助記符表示的指令。必須通過匯編程序?qū)⑵滢D(zhuǎn)化為機(jī)器碼指令才能供將其轉(zhuǎn)化為機(jī)器碼指令才能供CPU執(zhí)行。例如:執(zhí)行。例如:MOV A,#5FH;將將5FH送入累加器送入累加器翻譯成機(jī)器碼形式為翻譯成機(jī)器碼形式為74H,5FH2021-10-2230.1.1 指令的概念指令的概念2. 匯編語言指令格式匯編語言指令格式標(biāo)號標(biāo)號: 操作碼助記符操作碼助記符 目的操作數(shù)目的操作數(shù),源操作數(shù)源操作數(shù);注釋注釋l標(biāo)

3、號:指令的符號地址。通常代表一條機(jī)器指令標(biāo)號:指令的符號地址。通常代表一條機(jī)器指令代碼的存儲單元地址。標(biāo)號可作為其它指令的操代碼的存儲單元地址。標(biāo)號可作為其它指令的操作數(shù)使用;作數(shù)使用;l操作碼助記符:用方便記憶的方式表示指令進(jìn)行操作碼助記符:用方便記憶的方式表示指令進(jìn)行何種操作。何種操作。2021-10-2240.1.1 指令的概念指令的概念2. 匯編語言指令格式匯編語言指令格式l操作數(shù):指令操作的對象。分為目的操作數(shù)和源操作數(shù):指令操作的對象。分為目的操作數(shù)和源操作數(shù),順序上不可顛倒。操作數(shù)可以是數(shù)字操作數(shù),順序上不可顛倒。操作數(shù)可以是數(shù)字(地地址、數(shù)據(jù)址、數(shù)據(jù)),也可以是標(biāo)號或寄存器名等

4、,某些指,也可以是標(biāo)號或寄存器名等,某些指令不需要操作數(shù);令不需要操作數(shù);l注釋:為了加強(qiáng)程序的可讀性,可增加適當(dāng)?shù)淖⒆⑨專簽榱思訌?qiáng)程序的可讀性,可增加適當(dāng)?shù)淖⑨尅W⑨尣皇浅绦虼a,僅起說明作用。釋。注釋不是程序代碼,僅起說明作用。2021-10-2250.1.1 指令的概念指令的概念2. 匯編語言指令格式匯編語言指令格式lMCS-51系列單片機(jī)使用系列單片機(jī)使用42種助記符,有種助記符,有51種基本種基本操作。通過助記符、指令中的源、目的操作數(shù)的操作。通過助記符、指令中的源、目的操作數(shù)的不同組合,構(gòu)成了不同組合,構(gòu)成了MCS-51的的111條指令;條指令;lMCS-51指令系統(tǒng)中有一個位變量

5、處理的指令子集,指令系統(tǒng)中有一個位變量處理的指令子集,使其非常適合工業(yè)控制場合使用。使其非常適合工業(yè)控制場合使用。MCS-51指令系統(tǒng)指令系統(tǒng)按指令字節(jié)數(shù)分:按指令字節(jié)數(shù)分: 單字節(jié)單字節(jié)49條;雙字節(jié)條;雙字節(jié)46條;三字節(jié)條;三字節(jié)16條條按指令執(zhí)行周期分:按指令執(zhí)行周期分: 單周期單周期57條;二周期條;二周期52條;四周期條;四周期2條條2021-10-2261、符號使用約定、符號使用約定Rn當(dāng)前寄存器區(qū)的寄存器當(dāng)前寄存器區(qū)的寄存器R0R7Ri通過通過R0、R1間接尋址片內(nèi)間接尋址片內(nèi)RAM單元單元direct直接地址,一個內(nèi)部直接地址,一個內(nèi)部RAM單元地址或一個單元地址或一個特殊功

6、能寄存器特殊功能寄存器(SFR,8 bit)#data8位或位或16位常數(shù),也稱立即數(shù),位常數(shù),也稱立即數(shù),通過專用前通過專用前綴綴#和直接地址等數(shù)據(jù)相區(qū)別。和直接地址等數(shù)據(jù)相區(qū)別。addr1616位目的地址,供位目的地址,供LCALL/LJMP指令使用指令使用addr1111位目的地址,供位目的地址,供ACALL/AJMP指令使用指令使用0.1.2 指令系統(tǒng)符號標(biāo)識的說明指令系統(tǒng)符號標(biāo)識的說明2021-10-227rel8位帶符號偏移量位帶符號偏移量(二進(jìn)制補(bǔ)碼表示二進(jìn)制補(bǔ)碼表示),用于,用于相對轉(zhuǎn)移指令相對轉(zhuǎn)移指令bit位地址位地址/位操作的取反前綴位操作的取反前綴(x)表示取表示取x地址

7、單元中的內(nèi)容地址單元中的內(nèi)容(x)表示取表示取x地址單元中的內(nèi)容為地址單元的內(nèi)容地址單元中的內(nèi)容為地址單元的內(nèi)容$當(dāng)前指令的地址當(dāng)前指令的地址數(shù)據(jù)傳輸方向數(shù)據(jù)傳輸方向數(shù)據(jù)交換數(shù)據(jù)交換2021-10-2282、注釋信息、注釋信息 在程序中,常常需要對指令的功能做一些簡單的注在程序中,常常需要對指令的功能做一些簡單的注釋釋2021-10-229第三章第三章 MCS-51單片機(jī)的單片機(jī)的指令系統(tǒng)指令系統(tǒng)0.2 尋址方式尋址方式2021-10-2210lMCS-51程序中所有的代碼、數(shù)據(jù)、程序中所有的代碼、數(shù)據(jù)、SFR等均有自等均有自己唯一的地址,組成指令的操作數(shù)指定了參與運己唯一的地址,組成指令的操

8、作數(shù)指定了參與運算的數(shù)據(jù)、數(shù)據(jù)所在的存儲單元、寄存器、算的數(shù)據(jù)、數(shù)據(jù)所在的存儲單元、寄存器、I/O口口地址等。指令中規(guī)定的尋找操作數(shù)的方式稱為尋地址等。指令中規(guī)定的尋找操作數(shù)的方式稱為尋址方式;址方式;l尋址方式越多,計算機(jī)的功能就越強(qiáng),靈活性就尋址方式越多,計算機(jī)的功能就越強(qiáng),靈活性就越大。越大。MCS-51共有共有7種尋址方式:種尋址方式:2021-10-2211l單片機(jī)各種尋址方式與可尋址存儲空間及所使用單片機(jī)各種尋址方式與可尋址存儲空間及所使用的寄存器:的寄存器:序號序號尋址方式尋址方式各自可尋址的存儲空間及使用的寄存器各自可尋址的存儲空間及使用的寄存器1立即尋址立即尋址存儲在程序存儲

9、器中的立即數(shù)存儲在程序存儲器中的立即數(shù)2寄存器尋址寄存器尋址R0R7、A、B、DPTR、C及存儲器及存儲器3間接尋址間接尋址片內(nèi)和片外數(shù)據(jù)存儲器空間,使用片內(nèi)和片外數(shù)據(jù)存儲器空間,使用Ri、DPTR4直接尋址直接尋址內(nèi)部內(nèi)部RAM和特殊功能寄存器和特殊功能寄存器5變址尋址變址尋址程序存儲器空間,使用程序存儲器空間,使用A、DPTR或或PC6相對尋址相對尋址程序存儲器空間,使用程序存儲器空間,使用PC7位尋址位尋址Cy、片內(nèi)、片內(nèi)RAM中的位空間和特殊功能寄存器中可位中的位空間和特殊功能寄存器中可位尋址的位尋址的位2021-10-22120.2.1 立即尋址立即尋址l定義:定義:操作數(shù)包含在指令

10、字節(jié)中,即操作數(shù)以字操作數(shù)包含在指令字節(jié)中,即操作數(shù)以字節(jié)的形式存放在程序存儲器中,這種方式稱為立節(jié)的形式存放在程序存儲器中,這種方式稱為立即尋址;即尋址;l特點:特點:指令中直接含有所需的操作數(shù)。該操作數(shù)指令中直接含有所需的操作數(shù)。該操作數(shù)可以是可以是8位的,也可以是位的,也可以是16位的,常常處在指令的位的,常常處在指令的第二字節(jié)和第二字節(jié)和/或第三字節(jié)的位置上。立即數(shù)通常使或第三字節(jié)的位置上。立即數(shù)通常使用用#data或或#data16表示,在立即數(shù)前面加表示,在立即數(shù)前面加“#”標(biāo)標(biāo)志,用以和直接尋址中的直接地址(志,用以和直接尋址中的直接地址(direc或或bit)相區(qū)別。相區(qū)別。

11、2021-10-22130.2.1 立即尋址立即尋址l例如:例如:MOVDPTR, #8000H ;將立即數(shù)將立即數(shù)8000H存入存入DPTR寄存器中寄存器中 ADDA, #34H;把立即數(shù)把立即數(shù)34H與累加器與累加器A內(nèi)容相加,內(nèi)容相加,;結(jié)果存回累加器結(jié)果存回累加器A中中 lADD A,#34H指令的執(zhí)行過程如下頁圖所示:指令的執(zhí)行過程如下頁圖所示: 2021-10-22140.2.1 立即尋址立即尋址lADD A,#34H指令的執(zhí)行過程:指令的執(zhí)行過程: 指令執(zhí)行到此處指令執(zhí)行到此處,指令代碼指令代碼24H意為意為ADD A,#立即數(shù)立即數(shù)PC+1后,從該地址取出后,從該地址取出立即數(shù)

12、送立即數(shù)送ALU準(zhǔn)備與準(zhǔn)備與A運算運算A中原來的內(nèi)容送中原來的內(nèi)容送ALU最后運算結(jié)果送回最后運算結(jié)果送回A2021-10-22150.2.2 寄存器尋址寄存器尋址l定義:定義:操作數(shù)存放在操作數(shù)存放在MCS-51內(nèi)部的某個工作寄存內(nèi)部的某個工作寄存器器Rn(R0R7)或部分專用寄存器中,這種尋址方或部分專用寄存器中,這種尋址方式稱為寄存器尋址;式稱為寄存器尋址;l特點:特點:由指令指出某一個寄存器的內(nèi)容作為操作由指令指出某一個寄存器的內(nèi)容作為操作數(shù)。存放操作數(shù)的寄存器在指令代碼中不占據(jù)單數(shù)。存放操作數(shù)的寄存器在指令代碼中不占據(jù)單獨的一個字節(jié),而是嵌入獨的一個字節(jié),而是嵌入(隱含隱含)到操作碼

13、字節(jié)中。到操作碼字節(jié)中。l例如:例如:INCR0;將將R0中的內(nèi)容加中的內(nèi)容加12021-10-22160.2.2 寄存器尋址寄存器尋址lINCRn指令的執(zhí)行過程:指令的執(zhí)行過程: 指令代碼指令代碼1017H表示將表示將R07內(nèi)容加內(nèi)容加1取出指令代碼低取出指令代碼低3位位,和和RS1,RS0構(gòu)成一個字節(jié)的內(nèi)部構(gòu)成一個字節(jié)的內(nèi)部RAM地址地址將此單元內(nèi)容將此單元內(nèi)容+1后送回后送回2021-10-22170.2.3 間接尋址間接尋址l定義:定義:又稱寄存器間接尋址,由指令指出某一個又稱寄存器間接尋址,由指令指出某一個寄存器的內(nèi)容作為操作數(shù)的地址,稱為間接尋址寄存器的內(nèi)容作為操作數(shù)的地址,稱為間

14、接尋址;l特點:特點:指令中寄存器中存放的是操作數(shù)地址。間指令中寄存器中存放的是操作數(shù)地址。間接尋址是一種二次尋找操作數(shù)地址的尋址方式,接尋址是一種二次尋找操作數(shù)地址的尋址方式,寄存器名前必須加前綴符號寄存器名前必須加前綴符號“”;l尋址范圍:尋址范圍:內(nèi)部內(nèi)部RAM低低128B(只能使用只能使用R0或或R1作作間址寄存器間址寄存器)、外部、外部RAM(只能使用只能使用DPTR作間址作間址寄存器寄存器)。對于外部低。對于外部低256單元單元RAM的訪問,除可的訪問,除可以使用以使用DPTR外,還可以使用外,還可以使用R0或或R1作間址寄存作間址寄存器。不能用于尋址特殊功能寄存器器。不能用于尋址

15、特殊功能寄存器SFR。2021-10-22180.2.3 間接尋址間接尋址l例如:例如:MOV A, R0;將以將以R0的值為地址的內(nèi)部的值為地址的內(nèi)部;RAM單元的內(nèi)容送累加器單元的內(nèi)容送累加器AMOVX A, R0;將以將以R0的值為地址的外部的值為地址的外部;RAM單元的內(nèi)容送累加器單元的內(nèi)容送累加器AMOV DPTR, #8000H;DPTR = 8000HMOVX A, DPTR;外部外部RAM 8000H單元送單元送A2021-10-22190.2.3 間接尋址間接尋址lMOV A, Ri指令的執(zhí)行過程指令的執(zhí)行過程指令代碼指令代碼E6/E7H表表示示R0/R1間接尋址間接尋址取出

16、指令代碼最低位,加上取出指令代碼最低位,加上RS1,RS0構(gòu)成構(gòu)成R0/R1的實際地址,的實際地址,例中為例中為10H訪問訪問10H單元,取出單元,取出其內(nèi)容,假設(shè)為其內(nèi)容,假設(shè)為40H訪問訪問40H單元,取出其單元,取出其內(nèi)容,送入累加器內(nèi)容,送入累加器A2021-10-22200.2.4 直接尋址直接尋址l定義:定義:在指令中直接給出操作數(shù)所在的存儲單元在指令中直接給出操作數(shù)所在的存儲單元的地址;的地址;l特點:特點:指令中含有操作數(shù)的地址。該地址指出了指令中含有操作數(shù)的地址。該地址指出了參與操作的數(shù)據(jù)所在的字節(jié)單元地址或位地址。參與操作的數(shù)據(jù)所在的字節(jié)單元地址或位地址。CPU執(zhí)行它們時便

17、可根據(jù)直接地址找到所需要的執(zhí)行它們時便可根據(jù)直接地址找到所需要的操作數(shù);操作數(shù);l尋址范圍:尋址范圍:直接尋址方式中操作數(shù)的存儲空間有直接尋址方式中操作數(shù)的存儲空間有三種:片內(nèi)三種:片內(nèi)RAM區(qū)、區(qū)、SFR和位地址空間。和位地址空間。2021-10-22210.2.4 直接尋址直接尋址l例如:例如:MOV A, 60H; 內(nèi)部內(nèi)部RAM 60H單元內(nèi)容送單元內(nèi)容送AMOV C, 60H; 位地址位地址60H中的值送中的值送CyMOV P1, A; A中內(nèi)容送特殊功能寄存器中內(nèi)容送特殊功能寄存器P12021-10-22220.2.4 直接尋址直接尋址lMOV A, direct指令的執(zhí)行過程指令

18、的執(zhí)行過程指令代碼指令代碼E5H表示將表示將某存儲單元內(nèi)容送某存儲單元內(nèi)容送APC+1后取出該地址的內(nèi)后取出該地址的內(nèi)容,即為存儲單元地址容,即為存儲單元地址訪問該地址,取出訪問該地址,取出其內(nèi)容送入累加器其內(nèi)容送入累加器A2021-10-22230.2.5 變址尋址變址尋址l定義:定義:操作數(shù)存放在變址寄存器操作數(shù)存放在變址寄存器(累加器累加器A)和基址寄和基址寄存器存器(DPTR或或PC)相加形成的相加形成的16位地址單元中。這種位地址單元中。這種尋址方式稱為基址加變址寄存器間接尋址,簡稱變址尋址方式稱為基址加變址寄存器間接尋址,簡稱變址尋址;尋址;l特點:特點:變址尋址方式是單字節(jié)指令,

19、操作碼中隱含作變址尋址方式是單字節(jié)指令,操作碼中隱含作為基址寄存器使用的為基址寄存器使用的DPTR(或或PC)和作為變址用的和作為變址用的A。在執(zhí)行變址尋址指令時,在執(zhí)行變址尋址指令時,MCS-51單片機(jī)先把基地址單片機(jī)先把基地址(DPTR或或PC 的內(nèi)容的內(nèi)容)和地址偏移量和地址偏移量(A的內(nèi)容的內(nèi)容)相加,以相加,以形成操作數(shù)地址,再由操作數(shù)地址找到操作數(shù);形成操作數(shù)地址,再由操作數(shù)地址找到操作數(shù);l尋址范圍:尋址范圍:只能對程序存儲器只能對程序存儲器(ROM)進(jìn)行尋址,主要進(jìn)行尋址,主要用于查表性質(zhì)的訪問。用于查表性質(zhì)的訪問。2021-10-22240.2.5 變址尋址變址尋址l注意:累

20、加器注意:累加器A中存放的操作數(shù)地址相對基地址中存放的操作數(shù)地址相對基地址的偏移量的范圍為的偏移量的范圍為00H0FFH(無符號數(shù)無符號數(shù));l例如:例如:(1) 以以PC作為基址作為基址MOVC A, A+PC;(PC)(PC)+1, (A)(A)+(PC)(2) 以以DPTR作為基址作為基址MOV DPTR, #2335HMOV A, #10HMOVC A, A+DPTR ;(A)(A)+(DPTR)2021-10-22250.2.5 變址尋址變址尋址lMOVC A,A+PC指令的執(zhí)行過程指令的執(zhí)行過程指令代碼指令代碼83H表示表示MOVC A, A+PC將將PC+1和累加器和累加器A中的

21、中的內(nèi)容相加得到訪問地址內(nèi)容相加得到訪問地址根據(jù)得到的地址取出相根據(jù)得到的地址取出相應(yīng)單元內(nèi)容應(yīng)單元內(nèi)容,送入累加器送入累加器AyyH2021-10-22260.2.5 變址尋址變址尋址lMOVC A,A+DPTR指令的執(zhí)行過程指令的執(zhí)行過程指令代碼指令代碼93H表示表示MOVC A, A+DPTR將將DPTR和累加器和累加器A中的中的內(nèi)容相加得到訪問地址內(nèi)容相加得到訪問地址根據(jù)得到的地址取出相根據(jù)得到的地址取出相應(yīng)單元內(nèi)容應(yīng)單元內(nèi)容,送入累加器送入累加器AyyH2021-10-22270.2.6 相對尋址相對尋址l定義:定義:將將PC的當(dāng)前值的當(dāng)前值(取出本條指令后的值取出本條指令后的值)與

22、指與指令第二個字節(jié)給出的偏移量令第二個字節(jié)給出的偏移量(rel)相加,形成新的相加,形成新的轉(zhuǎn)移目標(biāo)地址,稱為相對尋址方式;轉(zhuǎn)移目標(biāo)地址,稱為相對尋址方式;l特點:特點:相對尋址方式是為實現(xiàn)程序的相對轉(zhuǎn)移而相對尋址方式是為實現(xiàn)程序的相對轉(zhuǎn)移而設(shè)計的,其指令碼中含有的相對地址偏移量可為設(shè)計的,其指令碼中含有的相對地址偏移量可為正數(shù)或負(fù)數(shù),能生成浮動代碼;正數(shù)或負(fù)數(shù),能生成浮動代碼;l尋址范圍:尋址范圍:只能對程序存儲器只能對程序存儲器ROM進(jìn)行尋址。相進(jìn)行尋址。相對地址偏移量對地址偏移量(rel)是一個帶符號的是一個帶符號的8位二進(jìn)制補(bǔ)碼,位二進(jìn)制補(bǔ)碼,其取值范圍為其取值范圍為-128+127(

23、以以PC為中間點的為中間點的256個字個字節(jié)范圍節(jié)范圍)。2021-10-22280.2.6 相對尋址相對尋址lJZ xxH指令的執(zhí)行過程指令的執(zhí)行過程指令代碼指令代碼60H表示表示JZ xxH如果如果Z標(biāo)志有效標(biāo)志有效,則取出指令代碼下一則取出指令代碼下一字節(jié)的相對偏移量字節(jié)的相對偏移量,將其和將其和PC+2相加相加相加后的結(jié)果送相加后的結(jié)果送PC,控,控制程序轉(zhuǎn)向該地址執(zhí)行制程序轉(zhuǎn)向該地址執(zhí)行2021-10-22290.2.7 位尋址位尋址l定義:定義:指令中給出的操作數(shù)是一個可單獨尋址的指令中給出的操作數(shù)是一個可單獨尋址的位地址,這種尋址方式稱為位尋址方式;位地址,這種尋址方式稱為位尋址

24、方式;l特點:特點:位尋址是直接尋址方式的一種,其特點是位尋址是直接尋址方式的一種,其特點是對對8位二進(jìn)制數(shù)中的某一位的地址進(jìn)行操作;位二進(jìn)制數(shù)中的某一位的地址進(jìn)行操作;l尋址范圍:尋址范圍:片內(nèi)片內(nèi)RAM的位尋址區(qū)的位尋址區(qū)(20H2FH)、部、部分分SFR (其中有其中有83位可以位尋址位可以位尋址)。2021-10-22300.2.7 位尋址位尋址l位尋址指令舉例:位尋址指令舉例:(1)直接使用位地址形式。如:直接使用位地址形式。如:MOV 00H, C; (00H)(Cy)(2)字節(jié)地址加位序號的形式。如:字節(jié)地址加位序號的形式。如:MOV 20H.0, C;(20H.0)(Cy)(3

25、)位的符號地址位的符號地址(位名稱位名稱)的形式。對于部分特殊功能寄存器,其的形式。對于部分特殊功能寄存器,其各位均有一個特定的名字,可用來訪問該位。如:各位均有一個特定的名字,可用來訪問該位。如:ANL C, P;(C)(C) .AND. (P)(4)字節(jié)符號地址字節(jié)符號地址(字節(jié)名稱字節(jié)名稱)加位序號的形式。對于部分特殊功能加位序號的形式。對于部分特殊功能寄存器寄存器(如如PSW),可以用其字節(jié)名稱加位序號形式來訪問某一,可以用其字節(jié)名稱加位序號形式來訪問某一位。如:位。如:CPL PSW.0;P .NOT. P2021-10-2231第三章第三章 MCS-51單片機(jī)的單片機(jī)的指令系統(tǒng)指令

26、系統(tǒng)0.3 指令分類介紹指令分類介紹2021-10-22320.3.1 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令 l數(shù)據(jù)傳送指令是數(shù)據(jù)傳送指令是MCS-51指令系統(tǒng)中最常用的指令,指令系統(tǒng)中最常用的指令,指令的執(zhí)行是將源操作數(shù)傳送到目的操作數(shù),而指令的執(zhí)行是將源操作數(shù)傳送到目的操作數(shù),而源操作數(shù)保持不變。源操作數(shù)保持不變。MCS-51的數(shù)據(jù)傳送操作可以的數(shù)據(jù)傳送操作可以在內(nèi)部數(shù)據(jù)存儲器、外部數(shù)據(jù)存儲器和程序存儲在內(nèi)部數(shù)據(jù)存儲器、外部數(shù)據(jù)存儲器和程序存儲器之間進(jìn)行。器之間進(jìn)行。 2021-10-22330.3.1 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令 1. 內(nèi)部數(shù)據(jù)傳送指令內(nèi)部數(shù)據(jù)傳送指令基本格式:基本格式:MOV

27、 目的操作數(shù)目的操作數(shù), 源操作數(shù)源操作數(shù) 1) MOV A,類指令類指令指令指令操作說明操作說明執(zhí)行周期執(zhí)行周期MOV A,RnRn (n=07) 中內(nèi)容送中內(nèi)容送A1MOV A,direct內(nèi)部內(nèi)部RAM的的direct單元中內(nèi)容送單元中內(nèi)容送AMOV A,RiRi (i=0,1)內(nèi)容所對應(yīng)的地址單元送內(nèi)容所對應(yīng)的地址單元送AMOV A,#data立即數(shù)立即數(shù)data送送A2021-10-2234例例0-1:設(shè)累加器:設(shè)累加器A中的數(shù)據(jù)為中的數(shù)據(jù)為00H,當(dāng)前工作寄存器,當(dāng)前工作寄存器R0中中 的數(shù)據(jù)為的數(shù)據(jù)為21H,內(nèi)部,內(nèi)部RAM20H單元的數(shù)據(jù)為單元的數(shù)據(jù)為41H,21H單元中的數(shù)據(jù)

28、為單元中的數(shù)據(jù)為42H,請指出下列每條指令執(zhí)行后,請指出下列每條指令執(zhí)行后,累加器累加器A中數(shù)據(jù)的變化。中數(shù)據(jù)的變化。MOV A,R0MOV A,20HMOV A,R0MOV A,#302021-10-22350.3.1 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令 1. 內(nèi)部數(shù)據(jù)傳送指令內(nèi)部數(shù)據(jù)傳送指令2) MOV , A類指令類指令指令指令操作說明操作說明執(zhí)行周期執(zhí)行周期MOV Rn,AA中內(nèi)容送中內(nèi)容送Rn (n=07) 1MOV direct,AA中內(nèi)容送內(nèi)部中內(nèi)容送內(nèi)部RAM的的direct單元單元MOV Ri,AA送送Ri (i=0,1)內(nèi)容所對應(yīng)的地址單元內(nèi)容所對應(yīng)的地址單元2021-10-22

29、360.3.1 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令 1. 內(nèi)部數(shù)據(jù)傳送指令內(nèi)部數(shù)據(jù)傳送指令3) MOV , 類指令類指令指令指令操作說明操作說明執(zhí)行周期執(zhí)行周期MOV Rn,#data立即數(shù)立即數(shù)dataRn1MOVRi,#data立即數(shù)立即數(shù)以以Ri內(nèi)容為地址的單元內(nèi)容為地址的單元1MOV Rn,directRAM中中direct單元單元Rn2MOV direct,RnRnRAM中中direct單元單元MOV direct1,direct2RAM中中direct2單元單元direct1MOV direct,Ri以以Ri內(nèi)容為地址的單元內(nèi)容為地址的單元direct單元單元MOV direct,#da

30、ta立即數(shù)立即數(shù)datadirect單元單元MOV Ri,directDirect單元單元以以Ri內(nèi)容為地址的單元內(nèi)容為地址的單元2021-10-22370.3.1 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令 1. 內(nèi)部數(shù)據(jù)傳送指令內(nèi)部數(shù)據(jù)傳送指令4) 其它類數(shù)據(jù)傳送指令其它類數(shù)據(jù)傳送指令指令指令操作說明操作說明執(zhí)行周期執(zhí)行周期MOV DPTR,#data1616位立即數(shù)位立即數(shù)DPTR2PUSH directSP=SP+1后,將后,將direct單元內(nèi)容放入堆棧單元內(nèi)容放入堆棧2POP direct從堆棧中彈出一個字節(jié),放入從堆棧中彈出一個字節(jié),放入direct單元單元2XCH A,RnRn中內(nèi)容和中內(nèi)容

31、和A中內(nèi)容互換中內(nèi)容互換1XCH A,directDirect單元的內(nèi)容和單元的內(nèi)容和A互換互換XCH A,Ri以以Ri內(nèi)容為地址的單元和內(nèi)容為地址的單元和A互換互換XCHD A,Ri以以Ri內(nèi)容為地址的單元內(nèi)容的低內(nèi)容為地址的單元內(nèi)容的低4位和位和A的低的低4位互換位互換12021-10-2238例例0-2:設(shè):設(shè)DPTR中的內(nèi)容為中的內(nèi)容為1234H,當(dāng)響應(yīng)某中,當(dāng)響應(yīng)某中斷時,需要將斷時,需要將DPTR入棧保護(hù),設(shè)此時入棧保護(hù),設(shè)此時SP的內(nèi)容的內(nèi)容是是60H,請寫出入棧過程中,請寫出入棧過程中SP及堆棧存儲區(qū)中內(nèi)及堆棧存儲區(qū)中內(nèi)容的變化。容的變化。2021-10-2239 單片機(jī)的堆棧

32、只能保存單片機(jī)的堆棧只能保存8位的數(shù)據(jù),對于位的數(shù)據(jù),對于16位的位的DPTR寄存器,其入棧操作必須分為兩步:寄存器,其入棧操作必須分為兩步:PUSH DPLPUSH DPH當(dāng)當(dāng)DPTR入棧完畢后,堆棧的入棧完畢后,堆棧的61H單元存入了單元存入了34H,62H單元存入了單元存入了12H,SP指向了指向了62H2021-10-22400.3.1 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令 2. 外部數(shù)據(jù)傳送及查表指令外部數(shù)據(jù)傳送及查表指令1) MOVX , 類指令類指令指令指令操作說明操作說明執(zhí)行周期執(zhí)行周期MOVX A,Ri以以Ri內(nèi)容為地址的外部內(nèi)容為地址的外部RAM單元內(nèi)容送單元內(nèi)容送A2MOVX R

33、i,AA中內(nèi)容送以中內(nèi)容送以Ri內(nèi)容為地址的外部內(nèi)容為地址的外部RAM單元單元MOVX A,DPTR以以DPTR內(nèi)容為地址的外部內(nèi)容為地址的外部RAM單元內(nèi)容送單元內(nèi)容送AMOVX DPTR,AA中內(nèi)容送以中內(nèi)容送以DPTR內(nèi)容為地址的外部內(nèi)容為地址的外部RAM單元單元2021-10-22410.3.1 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令 2. 外部數(shù)據(jù)傳送及查表指令外部數(shù)據(jù)傳送及查表指令2) MOVC A, A+類指令類指令指令指令操作說明操作說明執(zhí)行周期執(zhí)行周期MOVC A,A+DPTR( (A)+(DPTR) )(A)2MOVC A,A+PC PC+1 PC( (A)+(PC) )(A)202

34、1-10-2242練習(xí):練習(xí):1、用數(shù)據(jù)傳送指令完成:、用數(shù)據(jù)傳送指令完成:(1)把)把R0的內(nèi)容送到的內(nèi)容送到R1(2)內(nèi)部)內(nèi)部RAM20H單元的內(nèi)容送到單元的內(nèi)容送到A中中(3)外部)外部RAM2000H單元的內(nèi)容送到單元的內(nèi)容送到R0中。中。 (4) 外部外部ROM 1000H單元的內(nèi)容送內(nèi)部單元的內(nèi)容送內(nèi)部RAM 20H單單元。元。2021-10-2243(1) MOV A,R0 MOV R1,A(2)MOV A,20H(3)MOV DPTR,#2000H MOVX A,DPTR MOV R0,A(4)MOV DPTR,#1000H MOV A,#00H MOVC A,A+DPTR

35、MOV 20H,A 2021-10-22442、判斷正誤、判斷正誤 MOV 20H,R1 MOVX A,2000H MOV R1,R2 MOVC A+PC,A SWAP R12021-10-22450.3.2 算術(shù)運算類指令算術(shù)運算類指令 1. 加法指令加法指令指令指令操作說明操作說明執(zhí)行周期執(zhí)行周期ADD A,Rn(A) (A) + (Rn), n=071ADD A,direct(A) (A) + (direct)ADD A,Ri(A) (A) + (Ri)ADD A,#data(A) (A) + #datal 上述指令對程序狀態(tài)字上述指令對程序狀態(tài)字PSW中標(biāo)志位的影響如下:中標(biāo)志位的影響

36、如下: 如果運算后如果運算后D7位向上有進(jìn)位時,進(jìn)位標(biāo)志位向上有進(jìn)位時,進(jìn)位標(biāo)志Cy=1,否則,否則Cy=0; 如果運算后如果運算后D3位向上有進(jìn)位時,輔助進(jìn)位標(biāo)志位向上有進(jìn)位時,輔助進(jìn)位標(biāo)志AC=1,否則,否則AC=0; 相加結(jié)果送入相加結(jié)果送入A中后,將根據(jù)中后,將根據(jù)A中中1的個數(shù)調(diào)整奇偶位的個數(shù)調(diào)整奇偶位P。2021-10-22460.3.2 算術(shù)運算類指令算術(shù)運算類指令 2. 帶進(jìn)位加法指令帶進(jìn)位加法指令l 上述指令對上述指令對PSW中標(biāo)志位的影響和加法指令相同。中標(biāo)志位的影響和加法指令相同。指令指令操作說明操作說明執(zhí)行周期執(zhí)行周期ADDC A,Rn(A) (A) + (C) + (

37、Rn), n=071ADDC A,direct(A) (A) + (C) + (direct)ADDC A,Ri(A) (A) + (C) + (Ri)ADDC A,#data(A) (A) + (C) + #data2021-10-2247例例0-4 編寫計算編寫計算59A7H+0EC5H的程序,將結(jié)果存放在的程序,將結(jié)果存放在40H(低(低8位)和位)和41H(高(高8位)中位)中 MOV A,#0A7H ADD A,#0C5H MOV 40H,A MOV A,#59H ADDC A,#0EH MOV 41H,A2021-10-22480.3.2 算術(shù)運算類指令算術(shù)運算類指令 3. 加加1

38、減減1類指令類指令指令指令操作說明操作說明執(zhí)行周期執(zhí)行周期INC A(A) (A)+11INC Rn(Rn) (Rn)+1, n=07INC direct(direct) (direct)+1INC Ri(Ri) (Ri)+1, i=0,1DEC A(A) (A)-1DEC Rn(Rn) (Rn)-1, n=07DEC direct(direct) (direct)-1DEC Ri(Ri) (Ri)-1, i=0,1INC DPTR(DPTR) (DPTR) +122021-10-22490.3.2 算術(shù)運算類指令算術(shù)運算類指令 4. 帶借位減法指令帶借位減法指令l 上述指令對程序狀態(tài)字上述指

39、令對程序狀態(tài)字PSW中標(biāo)志位的影響如下:中標(biāo)志位的影響如下: 當(dāng)最高位當(dāng)最高位D7有借位時,進(jìn)位標(biāo)志位有借位時,進(jìn)位標(biāo)志位Cy=1,否則,否則Cy=0; 當(dāng)當(dāng)D3位有借位時,輔助進(jìn)位標(biāo)志位位有借位時,輔助進(jìn)位標(biāo)志位AC=1,否則,否則AC=0; 運算結(jié)束后,將根據(jù)累加器運算結(jié)束后,將根據(jù)累加器A中中1的個數(shù)調(diào)整奇偶位的個數(shù)調(diào)整奇偶位P。指令指令操作說明操作說明執(zhí)行周期執(zhí)行周期SUBB A,Rn(A) (A) - (C) - (Rn), n=071SUBB A,direct(A) (A) - (C) - (direct)SUBB A,Ri(A) (A) - (C) - (Ri)SUBB A,#d

40、ata(A) (A) - (C) - #data2021-10-2250例例0-5 編寫計算編寫計算59A7H-0EC5H的程序,結(jié)果存入的程序,結(jié)果存入40H(低(低8位)和位)和41H(高(高8位)位) CLR CMOV A, #0A7HSUBB A, #0C5HMOV 40H, AMOV A, #59HSUBB A, #0EHMOV 41H, A2021-10-22510.3.2 算術(shù)運算類指令算術(shù)運算類指令 5. 乘除法指令乘除法指令l 上述指令對程序狀態(tài)字上述指令對程序狀態(tài)字PSW中標(biāo)志位的影響如下:中標(biāo)志位的影響如下: 乘除法運算后都將清零乘除法運算后都將清零Cy; 如果乘法結(jié)果大

41、于如果乘法結(jié)果大于0FFH,OV=1,否則,否則OV=0; 如果除法運算中除數(shù)為如果除法運算中除數(shù)為0,OV=1,否則,否則OV=0; 運算結(jié)束后,將根據(jù)累加器運算結(jié)束后,將根據(jù)累加器A中中1的個數(shù)調(diào)整奇偶位的個數(shù)調(diào)整奇偶位P。指令指令操作說明操作說明執(zhí)行周期執(zhí)行周期MUL ABAB,結(jié)果高結(jié)果高8位送位送B,低,低8位送位送A4DIV ABAB,商送商送A,余數(shù)送,余數(shù)送B2021-10-22520.3.2 算術(shù)運算類指令算術(shù)運算類指令 6. 二二-十進(jìn)制調(diào)整指令十進(jìn)制調(diào)整指令指令指令操作說明操作說明執(zhí)行周期執(zhí)行周期DA A如果如果A的低的低4位位9,或輔助進(jìn)位,或輔助進(jìn)位AC=1則則A的低

42、的低4位加位加6如果如果A的高的高4位位9,或進(jìn)位位,或進(jìn)位位C=1則則A的高的高4位加位加612021-10-2253例例0-6 兩個兩個BCD編碼的十進(jìn)制數(shù)編碼的十進(jìn)制數(shù)39H和和29H分別存放在分別存放在R0和和R1中,求它們的和中,求它們的和MOV A, R0ADD A, R1DA A2021-10-22540.3.3 邏輯運算類指令邏輯運算類指令 1.對累加器的清零和取反指令對累加器的清零和取反指令指令指令操作說明操作說明執(zhí)行周期執(zhí)行周期CLR A(A) 01CPL A(A) (A)l 上述指令對程序狀態(tài)字上述指令對程序狀態(tài)字PSW中標(biāo)志位的影響如下:中標(biāo)志位的影響如下: CLR A

43、指令結(jié)果不影響指令結(jié)果不影響Cy、AC及及OV等標(biāo)志,但等標(biāo)志,但P標(biāo)志為標(biāo)志為0。 CPL A是將累加器是將累加器A中的數(shù)據(jù)按位取反,不影響標(biāo)志位。中的數(shù)據(jù)按位取反,不影響標(biāo)志位。 2021-10-22550.3.3 邏輯運算類指令邏輯運算類指令 2. 移位類指令移位類指令指令指令操作說明操作說明執(zhí)行周期執(zhí)行周期RL A(An+1) (An), n=06; (A0) (A7)1RLC A(An+1) (An), (A0) (C), (C) (A7)RR A(An) (An+1), n=06; (A7) (A0)RRC A(An) (An+1), (A7) (C), (C) (A0)SWAP

44、A(A30) (A74)2021-10-22560.3.3 邏輯運算類指令邏輯運算類指令 3. 邏輯與類指令邏輯與類指令指令指令操作說明操作說明執(zhí)行周期執(zhí)行周期ANL A,Rn(A) (A) .AND. (Rn), n=071ANL A,direct(A) (A) .AND. (direct)ANL A,Ri(A) (A) .AND. (Ri)ANL A,#data(A) (A) .AND. #dataANL direct,A(direct) (direct) .AND. (A)ANL direct,#data(direct) (direct) .AND. #data22021-10-2257

45、0.3.3 邏輯運算類指令邏輯運算類指令 4. 邏輯或類指令邏輯或類指令指令指令操作說明操作說明執(zhí)行周期執(zhí)行周期ORL A,Rn(A) (A) .OR. (Rn), n=071ORL A,direct(A) (A) .OR. (direct)ORL A,Ri(A) (A) .OR. (Ri)ORL A,#data(A) (A) .OR. #dataORL direct,A(direct) (direct) .OR. (A)ORL direct,#data(direct) (direct) .OR. #data22021-10-22580.3.3 邏輯運算類指令邏輯運算類指令 5. 邏輯異或類指

46、令邏輯異或類指令指令指令操作說明操作說明執(zhí)行周期執(zhí)行周期XRL A,Rn(A) (A) .XOR. (Rn), n=071XRL A,direct(A) (A) .XOR. (direct)XRL A,Ri(A) (A) .XOR. (Ri)XRL A,#data(A) (A) .XOR. #dataXRL direct,A(direct) (direct) .XOR. (A)XRL direct,#data(direct) (direct) .XOR. #data22021-10-2259思考題思考題編寫程序?qū)崿F(xiàn):將編寫程序?qū)崿F(xiàn):將R1的低的低4位與位與R2的高的高4位合并位合并成一個成一個

47、8位數(shù),并存入位數(shù),并存入R1中中2021-10-22600.3.4 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 l控制轉(zhuǎn)移類指令通過改變控制轉(zhuǎn)移類指令通過改變PC的值來實現(xiàn)程序的有的值來實現(xiàn)程序的有條件、無條件地從當(dāng)前位置轉(zhuǎn)移到某個指定的位條件、無條件地從當(dāng)前位置轉(zhuǎn)移到某個指定的位置去執(zhí)行,從而實現(xiàn)程序流程置去執(zhí)行,從而實現(xiàn)程序流程(或執(zhí)行方向或執(zhí)行方向)的改變;的改變;l控制轉(zhuǎn)移類指令包括:無條件轉(zhuǎn)移指令、條件轉(zhuǎn)控制轉(zhuǎn)移類指令包括:無條件轉(zhuǎn)移指令、條件轉(zhuǎn)移指令、調(diào)用指令和返回指令;移指令、調(diào)用指令和返回指令;l調(diào)用指令和返回指令也屬于無條件轉(zhuǎn)移指令。調(diào)用指令和返回指令也屬于無條件轉(zhuǎn)移指令。2021-10

48、-22610.3.4 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 1. 無條件轉(zhuǎn)移指令無條件轉(zhuǎn)移指令 1) 無條件跳轉(zhuǎn)類指令無條件跳轉(zhuǎn)類指令指令指令操作說明操作說明執(zhí)行周期執(zhí)行周期LJMP addr16(PC) addr0152AJMP addr11(PC) (PC) + 2(PC010) addr010SJMP rel(PC) (PC) + 2(PC) (PC) + relJMP A+DPTR(PC) (A) + (DPTR)NOP(PC) (PC) + 112021-10-22620.3.4 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 1. 無條件轉(zhuǎn)移指令無條件轉(zhuǎn)移指令 2) 調(diào)用類指令調(diào)用類指令指令指令操作說明操作

49、說明執(zhí)行周期執(zhí)行周期LCALL addr16(PC) PC + 3; (SP) (SP) + 1;(SP) (PC07); (SP) (SP) + 1;(SP) (PC815); (PC) addr0152ACALL addr11(PC) PC + 2; (SP) (SP) + 1;(SP) (PC07); (SP) (SP) + 1;(SP) (PC815); (PC010) addr0102021-10-22630.3.4 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 1. 無條件轉(zhuǎn)移指令無條件轉(zhuǎn)移指令 2) 返回類指令及空操作返回類指令及空操作指令指令操作說明操作說明執(zhí)行周期執(zhí)行周期RET(PC815)

50、 (SP); (SP) (SP)-1;(PC07) (SP); (SP) (SP)-12RETI(PC815) (SP); (SP) (SP)-1;(PC07) (SP); (SP) (SP)-12021-10-22640.3.4 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 2. 條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令 1) 判判0轉(zhuǎn)移類指令轉(zhuǎn)移類指令指令指令操作說明操作說明執(zhí)行周期執(zhí)行周期JZ rel(PC) (PC) + 2if (A) = 0 : (PC) (PC) + rel2JNZ rel(PC) (PC) + 2if (A) != 0 : (PC) (PC) + rel2021-10-22650.3.4 控制

51、轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 2. 條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令 2) 比較轉(zhuǎn)移類指令比較轉(zhuǎn)移類指令格式為格式為 CJNE OP1, OP2, rel指令指令操作說明操作說明執(zhí)行周期執(zhí)行周期CJNE A,direct,rel(PC) (PC) + 3if OP1 != OP2 then (PC) (PC) + relif OP1 OP2 thenC 1 else C 02CJNE A,#data,relCJNE Rn,#data,relCJNE Ri,#data,rel2021-10-2266例例0-8 設(shè)計程序,根據(jù)存放于設(shè)計程序,根據(jù)存放于R0中的數(shù)據(jù)大于中的數(shù)據(jù)大于60、等于、等于60及小于及小

52、于60三種情況分別進(jìn)行處理三種情況分別進(jìn)行處理 MOV A,R0 CJNE A,#60,NEQEQ: AJMP ContinueNEQ: JC LowerHigher: AJMP ContinueLower:Continue:2021-10-22670.3.4 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 2. 條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令 3) 循環(huán)轉(zhuǎn)移類指令循環(huán)轉(zhuǎn)移類指令格式為格式為 DJNZ OP, rel指令指令操作說明操作說明執(zhí)行周期執(zhí)行周期DJNZ Rn,rel(PC) (PC) + 2(OP) (OP) - 1if OP != 0 then(PC) (PC) + rel2DJNZ direct,re

53、l2021-10-2268例例0-9 設(shè)單片機(jī)晶振頻率為設(shè)單片機(jī)晶振頻率為12MHz,要求使用,要求使用R2作為循環(huán)控制作為循環(huán)控制單元,在單元,在P1.7口輸出連續(xù)口輸出連續(xù)200次周期為次周期為10us的方波信號。的方波信號。 MOV R2,#200 CLR P1.7Loop: SETB P1.7 ;P1.7=1, 1T NOP ; 1T NOP ; 1T NOP ; 1T NOP ; 1T CPL P1.7 ; P1.7=0, 1T NOP ; 1T NOP ; 1T DJNZ R2,Loop ; 2T2021-10-2269例:使用例:使用DJNZ指令編寫循環(huán)延時程序指令編寫循環(huán)延時程

54、序 MOV R0, #TimesLoop: NOP NOP DJNZ R0, Loop2021-10-2270例例: 編寫多重循環(huán)程序,實現(xiàn)延時編寫多重循環(huán)程序,實現(xiàn)延時50ms,設(shè)晶振頻率設(shè)晶振頻率為為12MHZORG 0000HMOV R7,#x ;執(zhí)行執(zhí)行1次次LOOP1: MOV R6,#y ;執(zhí)行執(zhí)行x次次NOP ;執(zhí)行執(zhí)行x次次LOOP2:DJNZ R6,LOOP2 ;執(zhí)行執(zhí)行x* y次次DJNZ R7,LOOP1 ;執(zhí)行執(zhí)行x次次JMP $END 2021-10-22710.3.5 布爾布爾(位位)處理類指令處理類指令 l位操作是以位(位操作是以位(bit)為對象來進(jìn)行運算和操作

55、的。由于位)為對象來進(jìn)行運算和操作的。由于位變量的值只能為變量的值只能為1或或0,故位操作又稱為布爾操作;,故位操作又稱為布爾操作;lMCS-51 CPU內(nèi)部有一個功能強(qiáng)大的布爾處理器,它實際內(nèi)部有一個功能強(qiáng)大的布爾處理器,它實際上就是一個一位的上就是一個一位的CPU。它以進(jìn)位標(biāo)志位。它以進(jìn)位標(biāo)志位Cy作為布爾累加作為布爾累加器,以單片機(jī)內(nèi)部器,以單片機(jī)內(nèi)部RAM的可位尋址區(qū)和特殊功能寄存器的可位尋址區(qū)和特殊功能寄存器中可位尋址寄存器的位為操作數(shù);中可位尋址寄存器的位為操作數(shù); lMCS-51單片機(jī)的位尋址空間可分為兩個部分:單片機(jī)的位尋址空間可分為兩個部分:內(nèi)部內(nèi)部RAM中地址為中地址為20

56、H2FH的的16個可位尋址字節(jié),共個可位尋址字節(jié),共有有128個位地址,位地址范圍從個位地址,位地址范圍從00H7FH;SFR區(qū)中的可位尋址寄存器。每個地址可被區(qū)中的可位尋址寄存器。每個地址可被8整除的整除的SFR(即地址最低即地址最低3位為位為000)均可位尋址。均可位尋址。2021-10-22720.3.5 布爾布爾(位位)處理類指令處理類指令 1. 位傳送指令位傳送指令指令指令操作說明操作說明執(zhí)行周期執(zhí)行周期MOV C,bit(C) (bit)1MOV bit,C(bit) (C)2021-10-2273例例0-10 設(shè)片內(nèi)設(shè)片內(nèi)RAM中中20H單元的內(nèi)容為單元的內(nèi)容為41H,分析下面程

57、序執(zhí),分析下面程序執(zhí)行結(jié)果行結(jié)果MOV C,01HMOV P1.7, C2021-10-22740.3.5 布爾布爾(位位)處理類指令處理類指令 2. 位修改指令位修改指令指令指令操作說明操作說明執(zhí)行周期執(zhí)行周期CLR C(C) 01CLR bit(bit) 0SETB C(C) 1SETB bit(bit) 1CPL C(C) !(C)CPL bit(bit) !(bit)2021-10-22750.3.5 布爾布爾(位位)處理類指令處理類指令 3. 位邏輯運算指令位邏輯運算指令指令指令操作說明操作說明執(zhí)行周期執(zhí)行周期ANL C,bit(C) (C) .AND. (bit)2ANL C,/b

58、it(C) (C) .AND. (bit) ORL C,bit(C) (C) .OR. (bit)ORL C,/bit(C) (C) .OR. (bit)2021-10-2276例例0-11 使用位操作指令,實現(xiàn)邏輯使用位操作指令,實現(xiàn)邏輯P1.7=P1.0 and (P1.1or P1.2) or (not P1.3)MOV C,P1.1ORL C, P1.2ANL C, P1.0ORL C, /P1.3MOV P1.7,C2021-10-22770.3.5 布爾布爾(位位)處理類指令處理類指令 4.布爾布爾(位位)條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令 指令指令操作說明操作說明執(zhí)行周期執(zhí)行周期JC re

59、l(PC) (PC)+2if (C)=1 then (PC) (PC)+rel2JNC rel(PC) (PC)+2if (C)=0 then (PC) (PC)+relJB bit,rel(PC) (PC)+3if (bit)=1 then (PC) (PC)+relJBC bit,rel(PC) (PC)+3if (bit)=1 then (bit)0;(PC)(PC)+relJNB bit,rel(PC) (PC)+3if (bit)=0 then (PC) (PC)+rel2021-10-2278 讀程序題1 設(shè)設(shè)(A)=0FH,(R0)=30H,內(nèi)部,內(nèi)部RAM(30H)=0AH,(31H)=0BH,(32H)=0CH。請寫出在執(zhí)行下列。請寫出在執(zhí)行下列各條指令后,所示單元的內(nèi)容。各條指令后,所示單元的內(nèi)容。2021-10-22792021-10-22812021-10-22821. 程序段起始地址定義偽指令程序段起始地址定義偽指令ORGl格式:格式:ORG l功能:指定在本偽指令之后的程

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論