MCS單片機(jī)指令系統(tǒng)及匯編語(yǔ)言程序設(shè)計(jì)ppt課件_第1頁(yè)
MCS單片機(jī)指令系統(tǒng)及匯編語(yǔ)言程序設(shè)計(jì)ppt課件_第2頁(yè)
MCS單片機(jī)指令系統(tǒng)及匯編語(yǔ)言程序設(shè)計(jì)ppt課件_第3頁(yè)
MCS單片機(jī)指令系統(tǒng)及匯編語(yǔ)言程序設(shè)計(jì)ppt課件_第4頁(yè)
MCS單片機(jī)指令系統(tǒng)及匯編語(yǔ)言程序設(shè)計(jì)ppt課件_第5頁(yè)
已閱讀5頁(yè),還剩98頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、內(nèi)容提要:3-1 匯編言語(yǔ)與指令系統(tǒng)簡(jiǎn)介匯編言語(yǔ)與指令系統(tǒng)簡(jiǎn)介3-2 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令3-3 算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令3-4 邏輯運(yùn)算類指令邏輯運(yùn)算類指令3-5 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令3-6 位操作類指令位操作類指令3-7 匯編言語(yǔ)的匯編過(guò)匯編言語(yǔ)的匯編過(guò)程程3-8 匯編言語(yǔ)的程序設(shè)計(jì)及運(yùn)用匯編言語(yǔ)的程序設(shè)計(jì)及運(yùn)用高級(jí)言語(yǔ)高級(jí)言語(yǔ):一、匯編言語(yǔ)程序設(shè)計(jì)的意義一、匯編言語(yǔ)程序設(shè)計(jì)的意義什么是程序?什么是程序?完成某項(xiàng)特定義務(wù)的指令的集合。完成某項(xiàng)特定義務(wù)的指令的集合。計(jì)算機(jī)按程序一條一條地依次執(zhí)行指令,從而完成指定義務(wù)。計(jì)算機(jī)按程序一條一條地依次執(zhí)行指令,從而完成指定義務(wù)。

2、要讓計(jì)算機(jī)完成各項(xiàng)義務(wù),就應(yīng)設(shè)計(jì)各種程序。要讓計(jì)算機(jī)完成各項(xiàng)義務(wù),就應(yīng)設(shè)計(jì)各種程序。 匯編言語(yǔ)匯編言語(yǔ):機(jī)器言語(yǔ)機(jī)器言語(yǔ):程序設(shè)計(jì)言語(yǔ):程序設(shè)計(jì)言語(yǔ):用二進(jìn)制代碼表示指令和數(shù)據(jù)。用二進(jìn)制代碼表示指令和數(shù)據(jù)。用助記符表示指令操作功能,用標(biāo)號(hào)表示操作對(duì)象。用助記符表示指令操作功能,用標(biāo)號(hào)表示操作對(duì)象。獨(dú)立于機(jī)器獨(dú)立于機(jī)器,面向過(guò)程面向過(guò)程,接近自然言語(yǔ)和數(shù)學(xué)表達(dá)式接近自然言語(yǔ)和數(shù)學(xué)表達(dá)式.匯編言語(yǔ)程序的每一條語(yǔ)句都與計(jì)算機(jī)的某一條指令對(duì)應(yīng),所匯編言語(yǔ)程序的每一條語(yǔ)句都與計(jì)算機(jī)的某一條指令對(duì)應(yīng),所以必需熟習(xí)指令系統(tǒng)。以必需熟習(xí)指令系統(tǒng)。指令指令 = 操作碼操作碼 + 操作數(shù)操作數(shù)操作碼操作碼表示了該

3、指令所能執(zhí)行的操作功能。表示了該指令所能執(zhí)行的操作功能。操作數(shù)操作數(shù)表示參與操作的數(shù)的本身或操作數(shù)所在的地址。表示參與操作的數(shù)的本身或操作數(shù)所在的地址。MCS-51指令格式:指令格式:標(biāo)號(hào):標(biāo)號(hào): 操作碼助記符操作碼助記符 第一操作數(shù)第一操作數(shù) ,第二操作數(shù),第二操作數(shù) ;注釋;注釋二、二、MCS-51MCS-51系列單片機(jī)的指令系統(tǒng)系列單片機(jī)的指令系統(tǒng)111111條指令,共分五大類:條指令,共分五大類:數(shù)據(jù)傳送類;數(shù)據(jù)傳送類;2929條條算術(shù)運(yùn)算類;算術(shù)運(yùn)算類;2424條條邏輯運(yùn)算類;邏輯運(yùn)算類;2424條條控制轉(zhuǎn)移類;控制轉(zhuǎn)移類;1717條條 位操作類。位操作類。1717條條 指令中操作數(shù)

4、的描畫符號(hào):指令中操作數(shù)的描畫符號(hào): Rn 任務(wù)存放器任務(wù)存放器R0 R7 Ri 間接尋址存放器間接尋址存放器R0、R1 Direct 直接地址,包括內(nèi)部直接地址,包括內(nèi)部128B RAM單元地址、單元地址、 26個(gè)個(gè)SFR地址。地址。 #data 8位常數(shù)位常數(shù) #data 16 16位常數(shù)位常數(shù) addr 16 16位目的地址位目的地址 addr 11 11位目的地址位目的地址 rel 8位帶符號(hào)的偏移地址位帶符號(hào)的偏移地址 DPTR 16位外部數(shù)據(jù)指針存放器位外部數(shù)據(jù)指針存放器 bit 可直接位尋址的位可直接位尋址的位 A 累加器 B 存放器B C 進(jìn)、借位標(biāo)志位,或位累加器 間接存放器

5、或基址存放器的前綴 / 指定位求反 x x中的內(nèi)容 x x中的地址中的內(nèi)容 當(dāng)前指令存放的地址 三、尋址方式三、尋址方式尋覓操作數(shù)存放單元的地址的方式,共尋覓操作數(shù)存放單元的地址的方式,共6種方式。種方式。1、立刻數(shù)尋址、立刻數(shù)尋址所要找的操作數(shù)是一二進(jìn)制數(shù)或十進(jìn)制數(shù),出如今指令中,所要找的操作數(shù)是一二進(jìn)制數(shù)或十進(jìn)制數(shù),出如今指令中,用用“#作前綴作前綴 MOV A,#20H2、存放器尋址、存放器尋址操作數(shù)存放在任務(wù)存放器操作數(shù)存放在任務(wù)存放器R0 R7中,或存放器中,或存放器B中。中。 MOV A,R23、直接尋址、直接尋址指令中直接給出操作數(shù)的地址。指令中直接給出操作數(shù)的地址。 MOV A

6、,30H MOV 30H,DPH ;書放在甲抽屜中;書放在甲抽屜中;甲抽屜的鑰匙放在乙抽屜中;甲抽屜的鑰匙放在乙抽屜中;取書;取書,A中 20HMOV 30H,#20HMOV R0,#30HMOV A,R0 此例中,此例中,20H就當(dāng)成是那本書;就當(dāng)成是那本書;30H就當(dāng)成是甲抽屜;就當(dāng)成是甲抽屜; R0就當(dāng)成是乙抽屜,執(zhí)行的結(jié)果就是將就當(dāng)成是乙抽屜,執(zhí)行的結(jié)果就是將20H這個(gè)立刻數(shù)裝入這個(gè)立刻數(shù)裝入A中。中。期間也閱歷了兩次尋址,即間接尋址。期間也閱歷了兩次尋址,即間接尋址。4、存放器間接尋址、存放器間接尋址指令中存放器的內(nèi)容作為操作數(shù)存放的地址,在任務(wù)上間接尋指令中存放器的內(nèi)容作為操作數(shù)存

7、放的地址,在任務(wù)上間接尋址存放器前用址存放器前用“表示前綴。表示前綴。例如例如: “一本書放在甲抽屜中,上了鎖;其開(kāi)鎖的鑰匙放在乙一本書放在甲抽屜中,上了鎖;其開(kāi)鎖的鑰匙放在乙抽屜中,乙抽屜也上了鎖。問(wèn)如何才干取到哪本書?抽屜中,乙抽屜也上了鎖。問(wèn)如何才干取到哪本書?這就是一個(gè)間接尋址的問(wèn)題,要經(jīng)過(guò)兩次尋址才干找到哪本書。這就是一個(gè)間接尋址的問(wèn)題,要經(jīng)過(guò)兩次尋址才干找到哪本書。而存放器間接尋址也是同樣。而存放器間接尋址也是同樣。例如例如: 5、變址尋址、變址尋址 操作數(shù)地址操作數(shù)地址 = 變地址變地址 + 基地址基地址 基地址存放器基地址存放器 DPTR 或或 PC 變址存放器變址存放器 A

8、該尋址方式常用于訪問(wèn)程序存儲(chǔ)器,查表。該尋址方式常用于訪問(wèn)程序存儲(chǔ)器,查表。 如如 MOVC A,A + DPTR6、相對(duì)尋址、相對(duì)尋址 把指令中給定的地址偏移量與本指令所在單元地址把指令中給定的地址偏移量與本指令所在單元地址PC內(nèi)容內(nèi)容相加得到真正有效的操作數(shù)所存放的地址。相加得到真正有效的操作數(shù)所存放的地址。例如例如 “李同窗李同窗20歲,張同窗比李同窗大歲,張同窗比李同窗大3歲,問(wèn)張同窗多少歲?歲,問(wèn)張同窗多少歲?這就是一個(gè)相對(duì)尋年齡的問(wèn)題,而相對(duì)尋址與此類似。這就是一個(gè)相對(duì)尋年齡的問(wèn)題,而相對(duì)尋址與此類似。 如如 JC 60H ;設(shè);設(shè)PC = 2000H為基址,相對(duì)偏移量為為基址,相

9、對(duì)偏移量為60H; ; 那么當(dāng)那么當(dāng)C = 1時(shí),轉(zhuǎn)移的目的地址時(shí),轉(zhuǎn)移的目的地址 = 2000H + 2 + 60H 穩(wěn)定新課:1、匯編言語(yǔ)有何種特點(diǎn)?指令格式?2、MCS51系列機(jī)共有多少條指令?分幾類?3、MCS51系列匯編言語(yǔ)指令有幾種尋址方式? 3-2 3-2 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令一、內(nèi)部一、內(nèi)部RAM數(shù)據(jù)傳送類數(shù)據(jù)傳送類1、普通數(shù)據(jù)傳送指令、普通數(shù)據(jù)傳送指令片外片外程序程序存儲(chǔ)器存儲(chǔ)器ROMEPROM特殊功能特殊功能存放器存放器SFR片內(nèi)片內(nèi)RAM128字節(jié)字節(jié)片外片外數(shù)據(jù)數(shù)據(jù)存儲(chǔ)器存儲(chǔ)器RAMMOVCMOVXMOV PUSHPOPXCHXCHD回想前述操作數(shù)描畫符:回想前

10、述操作數(shù)描畫符:A,direct,Rn,Ri,#data,DPTR等。等。經(jīng)陳列組合可寫出以下指令:經(jīng)陳列組合可寫出以下指令:MOV A,Rn ;A Rn以下類似。以下類似。MOV A,directMOV A,RiMOV A,#dataMOV Rn,AMOV Rn,directMOV Rn,#dataMOV direct,RnMOV direct,directMOV direct,RiMOV direct,#dataMOV Ri,AMOV Ri, directMOV Ri,#dataMOV DPTR,#data16 ;獨(dú)一的;獨(dú)一的16位數(shù)據(jù)傳送指令。位數(shù)據(jù)傳送指令。上述指令不影響任何標(biāo)志位,

11、但上述指令不影響任何標(biāo)志位,但PSW的的P位除外。位除外。directAMOV direct,A ;上述指令不影響任何標(biāo)志位,但上述指令不影響任何標(biāo)志位,但PSW的的P位除外。位除外。留意:留意:MOV Rn,Rn MOV Ri, Ri MOV Rn, Ri MOV #data, A 等等指令是非法指令。等等指令是非法指令。 哇!好容易出錯(cuò)啊!2 direct2、棧操作指令、棧操作指令PUSH directPOP direct不影響任何標(biāo)志位。不影響任何標(biāo)志位。PUSH direct 指令執(zhí)行中,機(jī)器自動(dòng)進(jìn)展兩步操作:指令執(zhí)行中,機(jī)器自動(dòng)進(jìn)展兩步操作:1 SP+ 1例例1、設(shè)、設(shè)SP = 09

12、H,DPTR= 0123H,分析:,分析: 執(zhí)行執(zhí)行 PUSH DPL PUSH DPH 后,各單元中的內(nèi)容。后,各單元中的內(nèi)容。SPSP POP direct 指令執(zhí)行中,機(jī)器也自動(dòng)進(jìn)展兩步操作:指令執(zhí)行中,機(jī)器也自動(dòng)進(jìn)展兩步操作:1direct SP2SP SP 1例例2、設(shè)、設(shè)SP= 0BH,0BH= 01H,0AH= 23H 執(zhí)行執(zhí)行 POP DPH POP DPL 后,各單元中的內(nèi)容。后,各單元中的內(nèi)容。 結(jié)論:結(jié)論:1PUSH 與與 POP 操作過(guò)程剛好相反;操作過(guò)程剛好相反; 2進(jìn)、出棧規(guī)那么:進(jìn)、出棧規(guī)那么: 先進(jìn)后出,后進(jìn)先出。應(yīng)留意指令書寫先后順序;先進(jìn)后出,后進(jìn)先出。應(yīng)留

13、意指令書寫先后順序; 3可用于可用于“維護(hù)現(xiàn)場(chǎng),恢復(fù)現(xiàn)場(chǎng)。維護(hù)現(xiàn)場(chǎng),恢復(fù)現(xiàn)場(chǎng)。 3 3、字節(jié)交換指令、字節(jié)交換指令XCH AXCH A,RnRnXCH AXCH A,direct direct 整字節(jié)交換整字節(jié)交換XCH AXCH A,RiRiXCHD AXCHD A,RiRiSWAP A SWAP A 半字節(jié)交換半字節(jié)交換不影響任何標(biāo)志位。不影響任何標(biāo)志位。 二、二、 外部外部RAMRAM數(shù)據(jù)傳送數(shù)據(jù)傳送MOVX AMOVX A,RiRiMOVX A, DPTRMOVX A, DPTRMOVX Ri, AMOVX Ri, AMOVX DPTRMOVX DPTR,A A執(zhí)行過(guò)程中會(huì)使執(zhí)行過(guò)程中

14、會(huì)使/WR/WR、/RD/RD有效。有效。 例例3、試編寫一程序段,實(shí)現(xiàn)將外、試編寫一程序段,實(shí)現(xiàn)將外RAM 0FAH單元中的單元中的內(nèi)容傳送到外內(nèi)容傳送到外RAM 04FFH單元中。單元中。解:解: MOV DPTR,#04FFH MOV R0,#0FAH MOVX A,R0 MOVX DPTR, A 三、三、 查表指令查表指令與與ROMROM之間的數(shù)據(jù)傳送。之間的數(shù)據(jù)傳送。MOVC AMOVC A,A + DPTRA + DPTRMOVC A, A + PCMOVC A, A + PC執(zhí)行后會(huì)使執(zhí)行后會(huì)使/PSEN/PSEN有效。有效。MOVC MOVC 含義是傳送常數(shù)。含義是傳送常數(shù)。以

15、以DPTR DPTR 為基地址的指令,可在為基地址的指令,可在ROM ROM 的的64KB64KB范圍內(nèi)查表;范圍內(nèi)查表;而以而以PCPC為基地址的指令只能在為基地址的指令只能在PCPC+ 1+ 1為中心上、下為中心上、下256B256B范范圍內(nèi)查表。圍內(nèi)查表。 例例4 4、設(shè)、設(shè)A A= = 一個(gè)一個(gè)BCDBCD碼常數(shù),試用查表法獲得其相應(yīng)的碼常數(shù),試用查表法獲得其相應(yīng)的ASCIIASCII碼。碼。 解法II: MOVC A,A+PC TAB:DB 30H,31H,32H,33H DB 34H,35H,36H,37H 解法解法I: MOV DPTR,#TAB MOVC A,.A+DPTR T

16、AB:DB 30H DB 31H DB 32H,33H,34H,35H 小結(jié):小結(jié): 數(shù)據(jù)傳送類指令有幾種類型?數(shù)據(jù)傳送類指令有幾種類型? 能否影響標(biāo)志位?能否影響標(biāo)志位? 3-3 3-3 算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令包括:加、包括:加、 減、乘、除;加一、減一。減、乘、除;加一、減一。一、加法指令一、加法指令A(yù)DD A,Rn ;A A+ Rn以下類同。以下類同。ADD A,directADD A,RiADD A,#data無(wú)符號(hào)數(shù)相加時(shí):假設(shè)無(wú)符號(hào)數(shù)相加時(shí):假設(shè)C = 1,闡明有溢出其值,闡明有溢出其值 255。帶符號(hào)數(shù)相加時(shí):假設(shè)帶符號(hào)數(shù)相加時(shí):假設(shè)OV = D7c D6c = 1,闡明有

17、溢出。,闡明有溢出。ADDC AADDC A,Rn Rn ;A A A A+ +RnRn+ +C)C) ; 以下類同。以下類同。ADDC AADDC A,directdirectADDC AADDC A,RiRiADDC A,#dataADDC A,#data 上述四條指令多用于多字節(jié)數(shù)相加。上述四條指令多用于多字節(jié)數(shù)相加。 INC A INC A ;A A A A+1 +1 ,以下類同。,以下類同。INC RnINC RnINC directINC directINC RiINC Ri INC DPTR INC DPTR INC A INC A ;A A A A+1 +1 ;以下類同。;以下

18、類同。INC RnINC RnINC directINC directINC RiINC RiINC DPTR INC DPTR 例例1 1、設(shè)、設(shè)R0R0= 7FH= 7FH; 7EH7EH= 40H= 40H 執(zhí)行:執(zhí)行:INC R0INC R0 INC R0 INC R0 INC R0 INC R0 后后, ,(R0)= 7FH; (R0)= 7FH; (7EH)= 00H; (7EH)= 00H; (7FH)= 41H(7FH)= 41H DA A ;二;二 十進(jìn)制調(diào)整指令。十進(jìn)制調(diào)整指令。執(zhí)行過(guò)程中,執(zhí)行過(guò)程中,CPU能根據(jù)加法運(yùn)算后,累加器中的值和能根據(jù)加法運(yùn)算后,累加器中的值和P

19、SW中的中的AC及及C標(biāo)志位的情況自動(dòng)選擇一個(gè)修正值標(biāo)志位的情況自動(dòng)選擇一個(gè)修正值00H、06H、60H、66H與原運(yùn)算結(jié)果相加,進(jìn)展二與原運(yùn)算結(jié)果相加,進(jìn)展二十進(jìn)制調(diào)整。十進(jìn)制調(diào)整。A3 0 9時(shí)或時(shí)或AC= 1時(shí),時(shí),A3 0 A3 0+6A7 4A7 4 9 9或或C C = 1 = 1時(shí),時(shí), A7 4A7 4 A7 4A7 4+ 6+ 6選擇修正值的規(guī)那么:選擇修正值的規(guī)那么:例例2、設(shè)、設(shè)A = 56H 為為56的緊縮的的緊縮的BCD碼數(shù),碼數(shù),R3= 67H,CY=1 執(zhí)行執(zhí)行 ADDC A,R3 DA A 結(jié)果為:結(jié)果為:124留意:留意:1DA指令只能跟在加法指令后面運(yùn)用;指

20、令只能跟在加法指令后面運(yùn)用; 2調(diào)整前參與運(yùn)算的兩數(shù)是調(diào)整前參與運(yùn)算的兩數(shù)是BCD碼數(shù);碼數(shù); 3DA指令不能與減法指令配對(duì)運(yùn)用,但可以實(shí)現(xiàn)對(duì)指令不能與減法指令配對(duì)運(yùn)用,但可以實(shí)現(xiàn)對(duì)A中中 緊縮緊縮BCD數(shù)進(jìn)展減一操作。數(shù)進(jìn)展減一操作。 例例3、設(shè)、設(shè)A=30H緊縮緊縮BCD碼數(shù),執(zhí)行:碼數(shù),執(zhí)行: ADD A,#99H DA A 后,便實(shí)現(xiàn)了后,便實(shí)現(xiàn)了30 1 = 29的操作。的操作。 例例4、兩個(gè)、兩個(gè)4位位BCD碼相加,一個(gè)存放在碼相加,一個(gè)存放在31H30H;另一個(gè)存放在另一個(gè)存放在33H32H;和數(shù)擬回存在;和數(shù)擬回存在31H30H中,試編程實(shí)現(xiàn)之。中,試編程實(shí)現(xiàn)之。解:解: MO

21、V R0,#30H MOV R1,#32H MOV A,R0 ADD A,R1 DA A MOV R0,A INC R1 MOV A,R0 ADDC A,R1 DA A MOV R0,A INC R0二、減法指令二、減法指令SUBB A,Rn ;A ARnC,以下類同。,以下類同。SUBB A,directSUBB A,RiSUBB A,#data留意:減法之前先清零留意:減法之前先清零C。 DEC A ;A A1 ,以下類同。,以下類同。DEC RnDEC RiDEC direct 例例5、設(shè)、設(shè)R0=7FH,在內(nèi),在內(nèi)RAM中,中,7EH=00H, 7FH=40H 執(zhí)行:執(zhí)行: DEC R

22、0 DEC R0 DEC R0 結(jié)果為結(jié)果為 :R0= 7EH,7EH=0FFH,7FH=3FH。 三、乘法和除法指令三、乘法和除法指令乘法:乘法:MUL AB ;AB,積的低,積的低8位在位在A中,積的中,積的 ; 高高8位在位在B中;中; C總為總為0。 除法:除法:DIV AB ;AB,商在,商在A中,余數(shù)在中,余數(shù)在B中。中。 ; 假設(shè)假設(shè)B= 0 ,那么結(jié)果不定,那么結(jié)果不定,OV= 1, ;C= 0。 例例6、試將、試將A中的二進(jìn)制數(shù)轉(zhuǎn)換為中的二進(jìn)制數(shù)轉(zhuǎn)換為3位位BCD碼,其中,百位數(shù)存碼,其中,百位數(shù)存放于放于31H單元,十位數(shù)和個(gè)位數(shù)緊縮后存于單元,十位數(shù)和個(gè)位數(shù)緊縮后存于30

23、H單元中。單元中。解:解: MOV B,#100 DIV AB MOV 31H,A MOV A,#10 XCH A,B DIV AB SWAP A ADD A,B MOV 30H,A 小結(jié):算術(shù)運(yùn)算類指令都有哪些類型?小結(jié):算術(shù)運(yùn)算類指令都有哪些類型? 3-4 邏輯運(yùn)算類指令邏輯運(yùn)算類指令共分兩大類:?jiǎn)巫止?jié)邏輯操作,雙字節(jié)邏輯操作,共共分兩大類:?jiǎn)巫止?jié)邏輯操作,雙字節(jié)邏輯操作,共24條。條。一、單字節(jié)邏輯操作指令一、單字節(jié)邏輯操作指令CLR A ;A 0CPL A A中中8位按位求反。位按位求反。 循環(huán)左移、右移指令:循環(huán)左移、右移指令:RL ARLC ARR ARRC A注:左移一位相當(dāng)于乘

24、注:左移一位相當(dāng)于乘2;右移一位相當(dāng)于除;右移一位相當(dāng)于除2。 二、雙字節(jié)邏輯操作指令二、雙字節(jié)邏輯操作指令“與操作:與操作:ANL A,Rn ; A ARn,以下類同。,以下類同。ANL A,directANL A,RiANL A,#dataANL direct,AANL direct,#data 例例1、P1= 35H,使其高,使其高4位輸出位輸出0,低,低4位不變。位不變。解;解; ANL P1,#0FH 此做法稱為此做法稱為“屏蔽位。屏蔽位。 “或操作:或操作:ORL A,Rn ; A ARn,以下類同。,以下類同。ORL A,directORL A,RiORL A,#dataORL

25、direct,AORL direct,#data 例例2、將、將A中的低中的低3位送入位送入P1中,并且堅(jiān)持中,并且堅(jiān)持P1中高中高5位不變。位不變。ANL A,#07HANL P1,#0F8HORL P1,A ;P1= P17P16P15P14P13A2A1A0這稱為這稱為“數(shù)位組合。數(shù)位組合。 “異或操作:異或操作:XRL A,Rn ; A A Rn,以下類同。,以下類同。XRL A,directXRL A,RiXRL A,#dataXRL direct,AXRL direct,#data例例3、設(shè)、設(shè)P1= 0B4H = 10110100B,執(zhí)行:,執(zhí)行: XRL P1,#0011000

26、1B 結(jié)果按結(jié)果按# 0 0 1 1 0 0 0 1 取反,即:取反,即: P1= 1 0 0 0 0 1 0 1 B = 85H 這稱為這稱為“指定位取反。指定位取反。 在上述在上述ANLANL、ORLORL、XRLXRL操作中,用于端口操作時(shí),無(wú)論操作中,用于端口操作時(shí),無(wú)論P(yáng)0 P0 P3P3是第一,還是第二操作數(shù),都遵照是第一,還是第二操作數(shù),都遵照“讀讀修正修正寫端口寫端口鎖存器的操作。鎖存器的操作。 小結(jié):小結(jié): 1、邏輯操作分為哪兩類操作?、邏輯操作分為哪兩類操作? 2、循環(huán)移位指令每執(zhí)行一次,移幾位?、循環(huán)移位指令每執(zhí)行一次,移幾位? 3、ANL、ORL、XRL指令有哪些運(yùn)用技

27、巧?指令有哪些運(yùn)用技巧? 3-5 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令作用:改動(dòng)程序計(jì)數(shù)器作用:改動(dòng)程序計(jì)數(shù)器PC的值,從而改動(dòng)程序執(zhí)行方向。的值,從而改動(dòng)程序執(zhí)行方向。分為四大類:無(wú)條件轉(zhuǎn)移指令;條件轉(zhuǎn)移指令;調(diào)用指令;分為四大類:無(wú)條件轉(zhuǎn)移指令;條件轉(zhuǎn)移指令;調(diào)用指令;前往指令。前往指令。 一、無(wú)條件轉(zhuǎn)移指令一、無(wú)條件轉(zhuǎn)移指令 LJMP addr16 AJMP addr11 SJMP rel JMP A + DPTR LJMP addr16 ;長(zhǎng)跳轉(zhuǎn)指令;長(zhǎng)跳轉(zhuǎn)指令 轉(zhuǎn)移目的地址轉(zhuǎn)移目的地址 addr16 PC,0000H FFFFH,64KB AJMP addr11 ;絕對(duì)轉(zhuǎn)移;絕對(duì)轉(zhuǎn)移轉(zhuǎn)移目的

28、地址的構(gòu)成:先轉(zhuǎn)移目的地址的構(gòu)成:先PC PC+ 2; 然后然后 PC15 11不變,不變,PC10 0 addr10 064KB = 216 =25211 = 322KB 轉(zhuǎn)移目的地址與轉(zhuǎn)移目的地址與PC+ 2在同一個(gè)在同一個(gè)2KB范圍內(nèi)。范圍內(nèi)。 SJMP rel ;短轉(zhuǎn)移,相對(duì)尋址。;短轉(zhuǎn)移,相對(duì)尋址。轉(zhuǎn)移目的地址轉(zhuǎn)移目的地址 = PC+ 2 + rel,所以所以 rel = 轉(zhuǎn)移目的地址轉(zhuǎn)移目的地址PC2但,實(shí)踐運(yùn)用中常寫成但,實(shí)踐運(yùn)用中常寫成 SJMP addr16,匯編時(shí)會(huì)自動(dòng)轉(zhuǎn),匯編時(shí)會(huì)自動(dòng)轉(zhuǎn)換成換成rel。 JMP A + DPTR ;間接轉(zhuǎn)移,散轉(zhuǎn)移指令。;間接轉(zhuǎn)移,散轉(zhuǎn)移指

29、令。轉(zhuǎn)移目的地址轉(zhuǎn)移目的地址 = A + DPTR本指令不影響標(biāo)志位,不改動(dòng)本指令不影響標(biāo)志位,不改動(dòng) A 及及DPTR中的內(nèi)容。常中的內(nèi)容。常用于多分支程序構(gòu)造中,可在程序運(yùn)轉(zhuǎn)過(guò)程中動(dòng)態(tài)地決議用于多分支程序構(gòu)造中,可在程序運(yùn)轉(zhuǎn)過(guò)程中動(dòng)態(tài)地決議程序分支走向。程序分支走向。 例例1、設(shè)、設(shè)A中為鍵值,試編寫按鍵值處置相應(yīng)事件的程序段。中為鍵值,試編寫按鍵值處置相應(yīng)事件的程序段。解:解: MOV DPTR,#KYEG MOV B,#03H MUL AB JMP A + DPTR KYEG: LJMP KYEG0 LJMP KYEG 比較比較LJMPLJMP、AJMPAJMP、SJMPSJMP、JM

30、PJMP轉(zhuǎn)移的起點(diǎn)和范圍轉(zhuǎn)移的起點(diǎn)和范圍: : LJMPLJMPPC64K AJMPAJMPPC+2 SJMPSJMPPC+2-128+127 JMPJMP A+DPTRPCPC+2DPTR256 LCALL addr16 ;長(zhǎng)調(diào)用;長(zhǎng)調(diào)用 ACALL addr11 ;絕對(duì)調(diào)用;絕對(duì)調(diào)用 LCALL addr16 ;轉(zhuǎn)移范圍;轉(zhuǎn)移范圍64KB,不影響標(biāo)志位。執(zhí)行中,不影響標(biāo)志位。執(zhí)行中自動(dòng)完成如下過(guò)程:自動(dòng)完成如下過(guò)程: PC PC + 3 SP SP+ 1 SP PC7 0, 維護(hù)斷點(diǎn)地址低字節(jié);維護(hù)斷點(diǎn)地址低字節(jié); SP SP+ 2 SP PC15 8,保管斷點(diǎn)地址高字節(jié);,保管斷點(diǎn)地址高

31、字節(jié); PC addr16 ,目的地址送,目的地址送PC,轉(zhuǎn)子程序。,轉(zhuǎn)子程序。 二、調(diào)用指令二、調(diào)用指令LCALL 34H 56H MOV 執(zhí)行結(jié)果:執(zhí)行結(jié)果:SPSP= 09H= 09H,09H09H= 21H= 21H,08H08H= 03H= 03H, PCPC= 3456H= 3456H SP07HSPSP08H09H2100H3456H外ROM內(nèi)RAMPC+3PC2103HPC03H21H例例2、設(shè)、設(shè)SP= 07H,PC= 2100H,子程序首地址為,子程序首地址為3456H,執(zhí)行:,執(zhí)行: LCALL 3456H MOV A,20H 轉(zhuǎn)移范圍與轉(zhuǎn)移范圍與PC+ 2在同一個(gè)在同一

32、個(gè)2KB內(nèi)。不影響任何標(biāo)志內(nèi)。不影響任何標(biāo)志位,執(zhí)行中機(jī)器自動(dòng)完成以下過(guò)程:位,執(zhí)行中機(jī)器自動(dòng)完成以下過(guò)程: PC PC+ 2 SP SP+ 1 SP PC7 0 SP SP+ 2 SP PC15 8 PC10 0 addr10 0 ACALL addr11 :三、前往指令三、前往指令從子程序前往主程序。從子程序前往主程序。 RET ;調(diào)用子程序前往;調(diào)用子程序前往; RETI ;中斷子程序前往。;中斷子程序前往。 PC15 8 SP SP 1 PC7 0 SP SP SP 2 其機(jī)器自動(dòng)操作過(guò)程如下:其機(jī)器自動(dòng)操作過(guò)程如下:比較兩種前往指令含義上的異同點(diǎn)比較兩種前往指令含義上的異同點(diǎn)結(jié)論:結(jié)

33、論:RET前往地址事先知,而前往地址事先知,而RETI的前往地址在程序執(zhí)行的前往地址在程序執(zhí)行中產(chǎn)生的,不固定。不影響標(biāo)志位,但中產(chǎn)生的,不固定。不影響標(biāo)志位,但PSW不能恢復(fù)到中斷不能恢復(fù)到中斷前的形狀。前的形狀。SP例例3、設(shè)、設(shè)SP= 0BH,0AH= 23H,0BH= 01H 執(zhí)行:執(zhí)行: RET MOV PCPC= 0123H= 0123H前往主程序前往主程序結(jié)果結(jié)果: :SPSP= 09H= 09H,01 23HSP0BHSPSP0AH09H3456H外ROM內(nèi)RAMPCPC 23H01H23H01H(PC)=空操作指令空操作指令NOP ;空操作;空操作不執(zhí)行任何操作,僅僅使不執(zhí)行

34、任何操作,僅僅使PC+ 1,繼續(xù)執(zhí)行下條指令,繼續(xù)執(zhí)行下條指令,不影響標(biāo)志位,不影響標(biāo)志位,在在ROM中占一個(gè)字節(jié)。用于延時(shí)調(diào)整。中占一個(gè)字節(jié)。用于延時(shí)調(diào)整。 小結(jié):小結(jié): 1、長(zhǎng)轉(zhuǎn)移與長(zhǎng)調(diào)用指令有何區(qū)別?、長(zhǎng)轉(zhuǎn)移與長(zhǎng)調(diào)用指令有何區(qū)別? 2、長(zhǎng)轉(zhuǎn)移、短轉(zhuǎn)移及相對(duì)轉(zhuǎn)移的跳轉(zhuǎn)范圍有、長(zhǎng)轉(zhuǎn)移、短轉(zhuǎn)移及相對(duì)轉(zhuǎn)移的跳轉(zhuǎn)范圍有 什么不同?什么不同? 二、條件轉(zhuǎn)移指令二、條件轉(zhuǎn)移指令實(shí)現(xiàn)按照一定條件決議轉(zhuǎn)移的方向?qū)崿F(xiàn)按照一定條件決議轉(zhuǎn)移的方向,分三類分三類: 判零轉(zhuǎn)移指令判零轉(zhuǎn)移指令 比較轉(zhuǎn)移指令比較轉(zhuǎn)移指令 循環(huán)轉(zhuǎn)移指令循環(huán)轉(zhuǎn)移指令 JZ rel : 假設(shè)假設(shè)A= 0 ,那么轉(zhuǎn)移,否那么順,那么轉(zhuǎn)移,否那

35、么順序執(zhí)行。序執(zhí)行。 JNZ rel : 假設(shè)假設(shè)A 0,那么轉(zhuǎn)移,否那么順,那么轉(zhuǎn)移,否那么順序執(zhí)行。序執(zhí)行。 轉(zhuǎn)移目的地址轉(zhuǎn)移目的地址 = PC+ 2 + rel 不影響任何標(biāo)志位。不影響任何標(biāo)志位。 1、判零轉(zhuǎn)移、判零轉(zhuǎn)移 JZ rel JNZ rel例例1、將外、將外RAM的一個(gè)數(shù)據(jù)塊首地址為的一個(gè)數(shù)據(jù)塊首地址為DATA1傳送到內(nèi)部傳送到內(nèi)部數(shù)據(jù)數(shù)據(jù)RAM首地址為首地址為DATA2,遇到傳送的數(shù)據(jù)為零時(shí)停頓,遇到傳送的數(shù)據(jù)為零時(shí)停頓傳送,試編程。傳送,試編程。解:解: MOV R0,#DATA2 MOV DPTR,#DATA1 LOOP1: MOVX A,DPTR JZ LOOP2 M

36、OV R0,A INC R0 INC DPTR SJMP LOOP1 LOOP2: SJMP LOOP2 2、比較轉(zhuǎn)移指令、比較轉(zhuǎn)移指令功能:比較二個(gè)字節(jié)中的值,假設(shè)不等,那么轉(zhuǎn)移。功能:比較二個(gè)字節(jié)中的值,假設(shè)不等,那么轉(zhuǎn)移。CINE A,#data,relCJNE A,direct,relCJNE Ri,#data,rel CJNE Rn,#data,rel 該類指令具有比較和判別雙重功能,比較的本質(zhì)是做減法運(yùn)算,該類指令具有比較和判別雙重功能,比較的本質(zhì)是做減法運(yùn)算,用第一操作數(shù)內(nèi)容減去第二操作數(shù)內(nèi)容,但差值不回存。用第一操作數(shù)內(nèi)容減去第二操作數(shù)內(nèi)容,但差值不回存。轉(zhuǎn)移目的地址轉(zhuǎn)移目的地

37、址 = PC+ 3 + rel假設(shè)第一操作數(shù)內(nèi)容小于第二操作數(shù)內(nèi)容,那么假設(shè)第一操作數(shù)內(nèi)容小于第二操作數(shù)內(nèi)容,那么C= 1,否,否那么那么C= 0。該類指令可產(chǎn)生三分支程序:該類指令可產(chǎn)生三分支程序: 即,相等分支;大于分支;小于分支。即,相等分支;大于分支;小于分支。 A = B嗎? 出口YN A B嗎? 入口YN123例例2、設(shè)、設(shè)P1口的口的P1.0 P1.3為預(yù)備就緒信號(hào)輸入端,當(dāng)該四位為預(yù)備就緒信號(hào)輸入端,當(dāng)該四位為全為全1時(shí),闡明各項(xiàng)任務(wù)已預(yù)備好,單片機(jī)可順序執(zhí)行,否那時(shí),闡明各項(xiàng)任務(wù)已預(yù)備好,單片機(jī)可順序執(zhí)行,否那么,循環(huán)等待。么,循環(huán)等待。解:解: MOV A,P1 ANL A

38、,#0FH CJNE A,#0FH,WAIT ;P1.0 P1.3不為全不為全1時(shí),返時(shí),返 ; 回回WAIT MOV A,R2 3、循環(huán)轉(zhuǎn)移指令、循環(huán)轉(zhuǎn)移指令DJNZ Rn,rel ;二字節(jié)指令;二字節(jié)指令DINZ direct,rel ;三字節(jié)指令;三字節(jié)指令本指令也為雙功能指令,即減本指令也為雙功能指令,即減1操作和判別轉(zhuǎn)移操作。操作和判別轉(zhuǎn)移操作。第一操作數(shù)內(nèi)容減第一操作數(shù)內(nèi)容減1后,假設(shè)差值不為零,那么轉(zhuǎn)移;否那么順序后,假設(shè)差值不為零,那么轉(zhuǎn)移;否那么順序執(zhí)行。執(zhí)行。轉(zhuǎn)移目的地址轉(zhuǎn)移目的地址 = PC+ 2或或3 + rel 例例3、將、將8031內(nèi)部?jī)?nèi)部RAM的的40H 4FH單

39、元置初值單元置初值#A0H #AFH。解:解: MOV R0,#40H MOV R2,#10H MOV A,#0A0H LOOP: MOV R0,A INC R0 INC A DJNZ R2,LOOP 小結(jié)小結(jié): 1、無(wú)條件轉(zhuǎn)移指令共有幾條、無(wú)條件轉(zhuǎn)移指令共有幾條? 2、CJNE指令與指令與DJNZ指令有何區(qū)別?指令有何區(qū)別? 3-6 3-6 位操作類指令位操作類指令包括:位傳送指令、條件轉(zhuǎn)移指令、位運(yùn)算指令。包括:位傳送指令、條件轉(zhuǎn)移指令、位運(yùn)算指令。位操作由單片機(jī)內(nèi)布爾處置器來(lái)完成。位操作由單片機(jī)內(nèi)布爾處置器來(lái)完成。位地址的四種表示:位地址的四種表示:1運(yùn)用直接位地址表示;如運(yùn)用直接位地址

40、表示;如20H、30H、33H等;等;2運(yùn)用位存放器名來(lái)表示;如運(yùn)用位存放器名來(lái)表示;如C、OV、F0等;等;3用字節(jié)存放器名后加位數(shù)來(lái)表示;用字節(jié)存放器名后加位數(shù)來(lái)表示; 如如PSW.4、P0.5ACC.3等;等; 4字節(jié)地址加位數(shù)來(lái)表示;如字節(jié)地址加位數(shù)來(lái)表示;如20.0、30.4、50.7等。等。 一、位傳送指令一、位傳送指令MOV C,bitMOV bit,C 功能:功能:C bit;或;或bit C 二、位形狀控制指令二、位形狀控制指令CLR bit ;bit 0SETB bit ;bit 1 CPL bit ;bit / bit 例例1、編程經(jīng)過(guò)、編程經(jīng)過(guò)P10線延續(xù)輸出線延續(xù)輸出

41、256個(gè)寬度為個(gè)寬度為5個(gè)機(jī)器周期長(zhǎng)的個(gè)機(jī)器周期長(zhǎng)的方波。方波。解:解: MOV R0,#00H CLR P10 LOOP:CPL P10 NOP NOP DJNZ R0,LOOP ANL C,bit ;C Cbit ANL C,/ bit ;C C/ bit ORL C ORL C,bit bit ;C C C Cbitbit ORL C ORL C,/bit /bit ;C C C C/bit/bit 三、位邏輯操作指令三、位邏輯操作指令例例2 2、用軟件實(shí)現(xiàn)以下圖所示的、用軟件實(shí)現(xiàn)以下圖所示的P10 P13P10 P13間的邏輯運(yùn)算。間的邏輯運(yùn)算。 解解: MOV C,P1.1: MOV

42、 C,P1.1 ORL C,P1.2 ORL C,P1.2 ANL C,P1.0 ANL C,P1.0 MOV P13,C MOV P13,C P1.1P1.2P1.0P1.3&1四、布爾條件轉(zhuǎn)移指令四、布爾條件轉(zhuǎn)移指令有有5 5條,分別對(duì)條,分別對(duì)C C和直接位地址進(jìn)展測(cè)試,和直接位地址進(jìn)展測(cè)試,并根據(jù)其形狀執(zhí)行轉(zhuǎn)移。并根據(jù)其形狀執(zhí)行轉(zhuǎn)移。1 1、判布爾累加器轉(zhuǎn)移、判布爾累加器轉(zhuǎn)移JC rel JC rel ;C C= 1= 1,轉(zhuǎn)移,否那么順序執(zhí)行。,轉(zhuǎn)移,否那么順序執(zhí)行。JNC rel JNC rel ;C C= 0= 0,轉(zhuǎn)移,否那么順序執(zhí)行。,轉(zhuǎn)移,否那么順序執(zhí)行。不影響標(biāo)志。轉(zhuǎn)移地

43、址不影響標(biāo)志。轉(zhuǎn)移地址 :PCPC PCPC+ rel + rel 解:解: MOV A MOV A,30H30H CJNE A CJNE A,40H40H,LOOPLOOP SETB 7FH SETB 7FH SJMP $ SJMP $ LOOP1 LOOP1: JC LOOP2 JC LOOP2 MOV 20H MOV 20H,A A MOV 21H MOV 21H,40H40H SJMP $ SJMP $ LOOP2 LOOP2: MOV 20H MOV 20H,40H40H MOV 21H MOV 21H,A A SJMP $ SJMP $ 例例3 3、比較內(nèi)部、比較內(nèi)部RAMRAM的

44、的30H30H和和40H40H單元中的二個(gè)無(wú)符號(hào)數(shù)的大小,將單元中的二個(gè)無(wú)符號(hào)數(shù)的大小,將大數(shù)存入大數(shù)存入20H20H單元,小數(shù)存入單元,小數(shù)存入21H21H單元,假設(shè)二數(shù)相等,那么使內(nèi)單元,假設(shè)二數(shù)相等,那么使內(nèi)RAMRAM的第的第127127位置位置1 1。 2 2、判位變量轉(zhuǎn)移、判位變量轉(zhuǎn)移JB bitJB bit,rel rel ;bitbit= 1= 1,那么轉(zhuǎn)移,否那么順序執(zhí)行。,那么轉(zhuǎn)移,否那么順序執(zhí)行。JBC bitJBC bit,rel rel ;bitbit= 1= 1,那么轉(zhuǎn)移,否那么順序執(zhí)行,那么轉(zhuǎn)移,否那么順序執(zhí)行, ; 且無(wú)論且無(wú)論bitbit能否等于能否等于1 1

45、,均使該位清零。,均使該位清零。JNB bitJNB bit,rel rel ;bitbit= 0= 0,那么轉(zhuǎn)移,否那么順序執(zhí)行。,那么轉(zhuǎn)移,否那么順序執(zhí)行。 ; 不影響標(biāo)志。不影響標(biāo)志。例例4 4、試判別、試判別A A中的正負(fù),假設(shè)為正數(shù),存入中的正負(fù),假設(shè)為正數(shù),存入20H20H單元;假設(shè)單元;假設(shè)為負(fù)數(shù)那么存入為負(fù)數(shù)那么存入21H21H單元。單元。解:解: JB ACC7 JB ACC7,LOOPLOOP MOV 20H MOV 20H,A A SJMP $ SJMP $ LOOP LOOP:MOV 21HMOV 21H,A A SJMP $ SJMP $ 小結(jié):小結(jié): 1 1、位操作

46、指令分為幾類?、位操作指令分為幾類? 2 2、位累加器、位累加器C C與字節(jié)累加器與字節(jié)累加器A A有何區(qū)別?有何區(qū)別?3-7 3-7 匯編言語(yǔ)及匯編過(guò)程匯編言語(yǔ)及匯編過(guò)程一、匯編程序功能一、匯編程序功能 源程序源程序 匯編指令程序匯編指令程序 匯編匯編 目的程序目的程序機(jī)器碼指令程序機(jī)器碼指令程序 匯編指令與機(jī)器碼指令有一一對(duì)應(yīng)的關(guān)系。匯編指令與機(jī)器碼指令有一一對(duì)應(yīng)的關(guān)系。匯編程序是一種翻譯程序,將源程序翻譯成目的程序。匯編程序是一種翻譯程序,將源程序翻譯成目的程序。 二、匯編程序的匯編過(guò)程二、匯編程序的匯編過(guò)程 匯編有兩種方法:手工匯編、機(jī)器匯編。匯編有兩種方法:手工匯編、機(jī)器匯編。 1

47、1、手工匯編:、手工匯編:第一次匯編:確定地址,翻譯成各條機(jī)器碼,字符標(biāo)號(hào)第一次匯編:確定地址,翻譯成各條機(jī)器碼,字符標(biāo)號(hào)原樣寫出;原樣寫出;第二次匯編:標(biāo)號(hào)代真,將字符標(biāo)號(hào)用所計(jì)算出的詳細(xì)第二次匯編:標(biāo)號(hào)代真,將字符標(biāo)號(hào)用所計(jì)算出的詳細(xì)地址值或偏移地址值或偏移量代換。量代換。 源程序源程序 目的程序目的程序 地址地址 ORG 1000H ORG 1000H START START:MOV R0MOV R0,2FH 2FH MOV R2 MOV R2,#00H #00H MOV A MOV A,R0 R0 MOV R3 MOV R3,A A INC R3 INC R3 SJMP NEXT SJ

48、MP NEXT LOOP LOOP:INC R0 INC R0 CJNE R0 CJNE R0,#44H#44H,NEXT NEXT INC R2 INC R2 NEXT NEXT:DJNZ R3DJNZ R3,LOOP LOOP MOV 2AH MOV 2AH,R2 R2 SJMP $ SJMP $ END END 第一次匯編第一次匯編第二次匯編第二次匯編1000 A82F1002 7A001004 E61005 FB1006 0B1007 80NEXT1009 08100A B644NEXT100D 0A100E DBLOOP1010 8A2A1012 80FEA82F7A00E6FB0B

49、800508B644010ADBF98A2A80FE2 2、機(jī)器匯編、機(jī)器匯編兩次掃描過(guò)程。兩次掃描過(guò)程。第一次掃描:檢查語(yǔ)法錯(cuò)誤,確定符號(hào)名字;第一次掃描:檢查語(yǔ)法錯(cuò)誤,確定符號(hào)名字; 建立運(yùn)用的全部符號(hào)名字表;建立運(yùn)用的全部符號(hào)名字表; 每一符號(hào)名字后跟一對(duì)應(yīng)值地址或數(shù)。每一符號(hào)名字后跟一對(duì)應(yīng)值地址或數(shù)。第二次掃描:是在第一次掃描根底上,將符號(hào)地址轉(zhuǎn)換成第二次掃描:是在第一次掃描根底上,將符號(hào)地址轉(zhuǎn)換成 地址代真;地址代真; 利用操作碼表將助記符轉(zhuǎn)換成相應(yīng)的目的碼。利用操作碼表將助記符轉(zhuǎn)換成相應(yīng)的目的碼。 三、偽指令三、偽指令 偽指令是通知匯編程序,如何匯編源程序的指令。偽指令是通知匯編程

50、序,如何匯編源程序的指令。 偽指令既不控制機(jī)器的操作,也不能被匯編成機(jī)器代碼,偽指令既不控制機(jī)器的操作,也不能被匯編成機(jī)器代碼, 故稱為偽指令。故稱為偽指令。 1 1、起始地址偽指令、起始地址偽指令 ORG ORG addr16 ORG ORG addr16 用于規(guī)定目的程序段或數(shù)據(jù)塊的起始地址,用于規(guī)定目的程序段或數(shù)據(jù)塊的起始地址, 設(shè)置在程序開(kāi)場(chǎng)處。設(shè)置在程序開(kāi)場(chǎng)處。 2 2、匯編終了偽指令、匯編終了偽指令 END END 通知匯編程序,對(duì)源程序的匯編到此終了。通知匯編程序,對(duì)源程序的匯編到此終了。 一個(gè)程序中只出現(xiàn)一一個(gè)程序中只出現(xiàn)一 次,在末尾。次,在末尾。 3 3、賦值偽指令、賦值偽

51、指令 EQU EQU 通知匯編程序,將匯編語(yǔ)句操作數(shù)的值賦予本語(yǔ)句的標(biāo)號(hào)。通知匯編程序,將匯編語(yǔ)句操作數(shù)的值賦予本語(yǔ)句的標(biāo)號(hào)。 格式:格式: 標(biāo)號(hào)稱號(hào)標(biāo)號(hào)稱號(hào) EQU EQU 數(shù)值或匯編符號(hào)數(shù)值或匯編符號(hào) “標(biāo)號(hào)稱號(hào)在源程序中可以作數(shù)值運(yùn)用,也可以作數(shù)據(jù)地址、標(biāo)號(hào)稱號(hào)在源程序中可以作數(shù)值運(yùn)用,也可以作數(shù)據(jù)地址、 位地址運(yùn)用。位地址運(yùn)用。 先定義后運(yùn)用,放在程序開(kāi)先定義后運(yùn)用,放在程序開(kāi)頭。頭。4 4、定義字節(jié)偽指令、定義字節(jié)偽指令 DB DB 通知匯編程序從指定的地址單元開(kāi)場(chǎng),定義假設(shè)干字節(jié)存儲(chǔ)單通知匯編程序從指定的地址單元開(kāi)場(chǎng),定義假設(shè)干字節(jié)存儲(chǔ)單 元并賦初值。元并賦初值。 格式:格式: 標(biāo)

52、號(hào):標(biāo)號(hào): DB DB 字節(jié)數(shù)據(jù)或字節(jié)數(shù)據(jù)表字節(jié)數(shù)據(jù)或字節(jié)數(shù)據(jù)表5 5、定義字偽指令、定義字偽指令 DW DW 從指定地址開(kāi)場(chǎng),定義假設(shè)干個(gè)從指定地址開(kāi)場(chǎng),定義假設(shè)干個(gè)1616個(gè)位數(shù)據(jù),高八位存入低地個(gè)位數(shù)據(jù),高八位存入低地址;址; 低八位存入高地址。低八位存入高地址。 例、例、 ORG 1000H ORG 1000H PIOI PIOI:DW 7654HDW 7654H,40H40H、1212、ABAB 6 6、數(shù)據(jù)地址賦值偽指令、數(shù)據(jù)地址賦值偽指令 DATA DATA 將表達(dá)式指定的數(shù)據(jù)地址賦予規(guī)定的字符稱號(hào)將表達(dá)式指定的數(shù)據(jù)地址賦予規(guī)定的字符稱號(hào) 格式:格式: 字符稱號(hào)字符稱號(hào) DATA

53、 DATA 表達(dá)式表達(dá)式注:該指令與注:該指令與EQUEQU指令類似,只是,可先運(yùn)用后定義,指令類似,只是,可先運(yùn)用后定義, 放于程序開(kāi)頭、結(jié)尾均可。放于程序開(kāi)頭、結(jié)尾均可。7 7、定義空間偽指令、定義空間偽指令 DS DS 從指定地址開(kāi)場(chǎng),保管由表達(dá)式指定的假設(shè)干字節(jié)空間從指定地址開(kāi)場(chǎng),保管由表達(dá)式指定的假設(shè)干字節(jié)空間作作 為備用空間。為備用空間。 格式:格式: 標(biāo)號(hào):標(biāo)號(hào): DS DS 表達(dá)式表達(dá)式例例2 2、 ORG 1000H ORG 1000H DS 0AH DS 0AH DB 71H DB 71H,11H11H,11H 11H ;從;從100BH100BH開(kāi)場(chǎng)存放開(kāi)場(chǎng)存放 ;71H

54、11H71H11H、11H11H。 注:注:DBDB、DWDW、DS DS 只能用于程序存儲(chǔ)器;只能用于程序存儲(chǔ)器; 而不能用于數(shù)據(jù)存儲(chǔ)器。而不能用于數(shù)據(jù)存儲(chǔ)器。 8 8、位地址賦值偽指令、位地址賦值偽指令 BIT BIT將位地址賦予規(guī)定的字符稱號(hào)。將位地址賦予規(guī)定的字符稱號(hào)。格式:格式: 字符稱號(hào)字符稱號(hào) BIT BIT 位地址位地址 例例3 3、 X1 BIT P12 X1 BIT P12 相當(dāng)于相當(dāng)于 X1 EQU 92H X1 EQU 92H 小結(jié):小結(jié):1 1、為什么要對(duì)匯編程序進(jìn)展匯編?、為什么要對(duì)匯編程序進(jìn)展匯編? 2 2、機(jī)器匯編的過(guò)程是怎樣的?、機(jī)器匯編的過(guò)程是怎樣的? 3

55、3、常用偽指令的功能各是什么?、常用偽指令的功能各是什么? 3-8 3-8 匯編言語(yǔ)程序的根本構(gòu)造及運(yùn)用舉例匯編言語(yǔ)程序的根本構(gòu)造及運(yùn)用舉例程序編寫做到:占用存儲(chǔ)空間少;運(yùn)轉(zhuǎn)時(shí)間短;程序編寫做到:占用存儲(chǔ)空間少;運(yùn)轉(zhuǎn)時(shí)間短;程序的編制、調(diào)試及排錯(cuò)所需時(shí)間短;構(gòu)造明晰,易讀、易于移植。程序的編制、調(diào)試及排錯(cuò)所需時(shí)間短;構(gòu)造明晰,易讀、易于移植。 按構(gòu)造化程序設(shè)計(jì)思想,任何復(fù)雜程序都可由按構(gòu)造化程序設(shè)計(jì)思想,任何復(fù)雜程序都可由順序構(gòu)造、順序構(gòu)造、分支構(gòu)造、分支構(gòu)造、循環(huán)構(gòu)造循環(huán)構(gòu)造 等構(gòu)成。等構(gòu)成。 語(yǔ)句 3語(yǔ)句 2順序構(gòu)造順序構(gòu)造 入口入口語(yǔ)句 1 出口出口分支構(gòu)造分支構(gòu)造入口入口條件滿足否?

56、分支 1 出口出口YN 分支 2循環(huán)構(gòu)造循環(huán)構(gòu)造入口入口 處置 修正條件條件滿足否?Y 出口出口N一、順序程序舉例一、順序程序舉例例例1 1、設(shè)在外、設(shè)在外RAMRAM的的60H60H單元存有單元存有1 1個(gè)字節(jié)代碼,要求將其分解成兩個(gè)個(gè)字節(jié)代碼,要求將其分解成兩個(gè)4 4位字段,高位字段,高4 4位存入原單元的低位存入原單元的低4 4位,其低位,其低4 4位存入位存入61H61H單元的低單元的低4 4位,位,且要求這兩個(gè)單元的高且要求這兩個(gè)單元的高4 4位均為位均為0 0,試編制完好程序。,試編制完好程序。 分析:# # # # ¥ ¥解:中心指令解:中心指令 ANL ANL ORL 1000

57、H ORL 1000H MODE MODE:MOV R0MOV R0,#60H#60H MOVX A MOVX A,R0R0 MOV B MOV B,A A ANL A ANL A,#0F0H#0F0H SWAP A SWAP A MOVX R0 MOVX R0,A A ANL B ANL B,#0FH#0FH MOV A MOV A,B B INC R0 INC R0 MOVX R0 MOVX R0,A A END END二、分支構(gòu)造與分支程序設(shè)計(jì)二、分支構(gòu)造與分支程序設(shè)計(jì)構(gòu)造:根據(jù)不同的條件,進(jìn)展相應(yīng)的處置。構(gòu)造:根據(jù)不同的條件,進(jìn)展相應(yīng)的處置。通常用條件轉(zhuǎn)移指令構(gòu)成簡(jiǎn)單分支構(gòu)造。通常用條

58、件轉(zhuǎn)移指令構(gòu)成簡(jiǎn)單分支構(gòu)造。如:如: 判判A A = Z = Z 或或 NZ NZ ,轉(zhuǎn)移,轉(zhuǎn)移 判判CYCY= 1 = 1 或或 0 0 ,轉(zhuǎn)移,轉(zhuǎn)移 判判bitbit=1 =1 或或 0 0 ,轉(zhuǎn)移,轉(zhuǎn)移 CJNE CJNE 比較不相等轉(zhuǎn)移比較不相等轉(zhuǎn)移 例例3 3、設(shè)、設(shè)a a存放在累加器存放在累加器A A中,中,b b存放在存放器存放在存放器B B中,要求按下式中,要求按下式 計(jì)算計(jì)算Y Y值,并將結(jié)果值,并將結(jié)果Y Y存于累加器存于累加器A A中,試編寫程序。中,試編寫程序。 a-b a-b a0a0 Y = Y = a+b a+b a 0a NBNA NB時(shí),將內(nèi)部時(shí),將內(nèi)部RAM

59、RAM的的42H42H單元清單元清0 0;否那么,將該單元置成全;否那么,將該單元置成全1 1,試編程。,試編程。解法解法I I:由于無(wú):由于無(wú)1616位數(shù)的比較指令,所以,只能用位數(shù)的比較指令,所以,只能用8 8位數(shù)的比較位數(shù)的比較 指令。指令。 畫出流程框圖畫出流程框圖解:解:ORG 2000HORG 2000H CMP CMP:MOV AMOV A,50H50H CJNE A CJNE A,40H40H,CMP1CMP1 MOV A MOV A,51H51H CJNE A CJNE A,41H41H,CMP1CMP1 SJMP NHIGHE SJMP NHIGHE CMP1 CMP1:J

60、C HIGHEJC HIGHE NHIGHE NHIGHE:MOV 42HMOV 42H,#0FFH#0FFH SJMP DONE SJMP DONE HIGHE HIGHE:MOV 42HMOV 42H,#00H#00H DONE DONE:SJMP SJMP END END解法解法IIII:先假設(shè):先假設(shè)NA NBNA NB,再來(lái)判別能否,再來(lái)判別能否NA NBNA NB ORG 3000H ORG 3000H CMP2 CMP2:MOV R0MOV R0,#00H#00H MOV A MOV A,50H50H CJNE A CJNE A,40H40H,CMP3CMP3 MOV A MOV

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論