版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、普通高等教育“十一五”國(guó)家級(jí)規(guī)劃教材單片微型計(jì)算機(jī)原理與接口技術(shù)(第二版) 編著科學(xué)出版社北京片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)第三章 80C51單片微機(jī)的指令系統(tǒng)片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)3.1 80C51指令系統(tǒng)概述80C51指令系統(tǒng)專用于80C51系列單片微機(jī),是一個(gè)具有255種操作碼 (00H至FFH,除A5H外) 的集合。用匯編語(yǔ)言表達(dá)操作代碼時(shí),42種助記符代表了33種功能,有的功能如數(shù)據(jù)傳送,可以有幾種助記符,如MOV、MOVC、MOVX。指令功能助記符與操作數(shù)各種尋址方式的結(jié)合,共構(gòu)造出111種指令,同一種指令所對(duì)應(yīng)的
2、操作碼可以多至8種 (如指令中Rn對(duì)應(yīng)寄存器R0R7) 。片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) 尋址方式就是在指令中給出的尋找操作數(shù)或操作數(shù)所在地址的方法。執(zhí)行任何一條指令都需要使用操作數(shù)。80C5l指令系統(tǒng)中共有7種尋址方式。3.1.1 尋址方式片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) 立即尋址在指令中直接給出操作數(shù),出現(xiàn)在指令中的操作數(shù)稱為立即數(shù)。在立即數(shù)前面必需加上前綴“”。 例如:指令 MOV DPTR,1234H1234H是立即數(shù),指令功能是把16位立即數(shù)1234H送入數(shù)據(jù)指針DPTR中,如圖31所示。片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C
3、51單片微機(jī)的指令系統(tǒng)2直接尋址在指令中直接給出操作數(shù)單元的地址。 例如:指令 MOV A,3AH功能:把片內(nèi)RAM中3AH單元內(nèi)的數(shù)據(jù)傳送給累加器A,如圖32所示。直接尋址方式只能給出8位地址,限于片內(nèi)RAM: 低128單元,在指令中直接以單元地址形式給出。 特殊功能寄存器,可以單元地址形式給出外,還可以寄存器符號(hào)形式給出。直接尋址是訪問(wèn)特殊功能寄存器的唯一方法。片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) 3寄存器尋址 在指令中將指定寄存器的內(nèi)容作為操作數(shù)。 寄存器尋址方式中,用符號(hào)名稱來(lái)表示寄存器。 例如:指令I(lǐng)NC R0功能把寄存器R0的內(nèi)容加1,再送回R0中。由于操作
4、數(shù)在R0中,指定了R0,也就得到了操作數(shù),如圖33所示。片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)寄存器尋址方式的尋址范圍包括: (1)4個(gè)寄存器組共32個(gè)通用寄存器。指令中只能使用當(dāng)前寄存器組。通過(guò)指定PSW中的RS1、RS0,以選擇使用的當(dāng)前寄存器組。 (2)部分特殊功能寄存器。例如累加器A、AB寄存器對(duì)以及數(shù)據(jù)指針DPTR。 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)4寄存器間接尋址 在指令中給出的寄存器內(nèi)容是操作數(shù)的地址,從該地址中取出的才是操作數(shù)。 寄存器間接尋址也需以寄存器符號(hào)名稱的形式表示。在寄存器間接尋址中,在寄存器的名稱前面加前綴“”。例如
5、:指令A(yù)NL A,R1 假定R1寄存器的內(nèi)容是 60H,指令的功能是以 R1寄存器的內(nèi)容 60H為地址,將60H地址單元的內(nèi)容與累加器A中的數(shù)相“與” ,其結(jié)果仍存放在A中、其功能示意請(qǐng)參見(jiàn)圖34。片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)寄存器間接尋址的尋址范圍: 片內(nèi)RAM的低128單元,只能采用R0或R1為間址寄存器。其形式為Ri(i0,1)。 片外RAM 的64 KB單元,使用DPTR作為間址寄存器。例如MOVX A,DPTR。 片外RAM低256單元,使用R0或R1作間址寄存器。例如:MOVX A,R0。 堆棧區(qū):堆棧操作指令PUSH和POP,以SP作間址寄存器的間
6、接尋址方式。片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) 相對(duì)尋址在指令中給出的操作數(shù)為程序轉(zhuǎn)移的偏移量。在相對(duì)轉(zhuǎn)移指令中,給出地址偏移量(以“rel”表示),把PC的當(dāng)前值加上偏移量就構(gòu)成了程序轉(zhuǎn)移的目的地址。轉(zhuǎn)移的目的地址可用如下公式表示: 目的地址(轉(zhuǎn)移指令所在地址轉(zhuǎn)移指令字節(jié)數(shù))rel在8051的指令系統(tǒng)中,有許多條相對(duì)轉(zhuǎn)移指令,這些指令多數(shù)均為兩字節(jié)指令只有個(gè)別的是三字節(jié)的指令。偏移量rel是一個(gè)帶符號(hào)的8位二進(jìn)制補(bǔ)碼數(shù),所能表示的數(shù)的范圍是一128127。因此,以相對(duì)轉(zhuǎn)移指令的所在地址為基點(diǎn),向前最大可轉(zhuǎn)移(127十轉(zhuǎn)移指令字節(jié)數(shù))個(gè)單元地址,向后最大可轉(zhuǎn)移(128
7、一轉(zhuǎn)移指令字節(jié)數(shù))個(gè)單元地址。 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)例如:指令JC 80H若進(jìn)位位C為0,則程序計(jì)數(shù)器PC中的內(nèi)容加2,即順序往下;若進(jìn)位位C為1,則以程序計(jì)數(shù)器PC中當(dāng)前值為基地址,加上偏移量80H后所得結(jié)果作為該轉(zhuǎn)移指令的目的地址,其執(zhí)行示意圖如圖35所示。指令的操作碼存在 1000H單元,偏移量存在 1001H單元。執(zhí)行該指令后,程序計(jì)數(shù)器PC 指向1002 H(即當(dāng)前值)。這里80H即128,故1002H與128 ( 80H )相加(補(bǔ)碼運(yùn)算)后得到轉(zhuǎn)移地址 0F82H。 1002H 80H0F82H片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片
8、微機(jī)的指令系統(tǒng)6變址尋址以DPTR或PC為基址寄存器,累加器A為變址寄存器,以兩者內(nèi)容相加后形成的16位程序存儲(chǔ)器地址作為操作數(shù)地址。又稱基址寄存器變址寄存器間接尋址。例如: MOVC A,ADPTR其功能是把DPTR和A的內(nèi)容相加所得到的程序存儲(chǔ)器地址單元的內(nèi)容送A。片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)假定指令執(zhí)行前 (A)54H,(DPTR)1256H則該指令的操作示意請(qǐng)參見(jiàn)圖36。 變址尋址形成的操作數(shù)地址為1256H54H12AAH,若12AAH單元的內(nèi)容為00H,則該指令執(zhí)行的結(jié)果是A的內(nèi)容為00H 。片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系
9、統(tǒng)80C51指令系統(tǒng)中的變址尋址指令有如下特點(diǎn): 變址尋址方式只能對(duì)程序存儲(chǔ)器進(jìn)行尋址 。 變址尋址指令只有3條 MOVC A,ADPTR MOVC A,APC JMP ADPTR 這3條指令都是單字節(jié)指令。 變址尋址方式用于查表操作。片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)7位尋址位尋址的尋址范圍:(1)片內(nèi)RAM中的位尋址區(qū)。 片內(nèi)RAM中的單元地址20H2FH,共16個(gè)單元128位,為位尋址區(qū),位地址是00H7FH。 例如 MOV C,2BH指令的功能是把位尋址區(qū)的2BH位狀態(tài)送累加位C。 (2) 可位尋址的特殊功能寄存器位。 可供位尋址的特殊功能寄存器共有11個(gè),有
10、尋址位83位。片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)尋址位在指令中有以下4種表示方法: 直接使用位地址表示。 單元地址加位。例如 88H單元的位5,則表示為88H.5。 特殊功能寄存器符號(hào)加位、例如 PSW寄存器的位5,可表示為:為 PSW .5。 位名稱表示方法,特殊功能寄存器中的一些尋址位是有名稱的,例如 PSW寄存器位5為F0標(biāo)志位,則可使用F0表示該位。 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) 對(duì)于指令中的操作數(shù),因?yàn)橹噶畈僮鞒0橛袕挠蚁蜃髠魉蛿?shù)據(jù)的內(nèi)容,所以常把左邊操作數(shù)稱為目的操作數(shù),而右邊操作數(shù)稱為源操作數(shù)。 80C51指令系統(tǒng)的7種尋
11、址方式概括起來(lái)如表31所列。 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)指令的表示方法稱之為指令格式,其內(nèi)容包括指令的長(zhǎng)度和指令內(nèi)部信息的安排等。 一條指令通常由操作碼和操作數(shù)兩部分組成。操作碼規(guī)定指令所完成的操作,操作數(shù)表示操作的對(duì)象。操作數(shù)可能是一個(gè)具體的數(shù)據(jù),也可能是指出取得數(shù)據(jù)的地址或符號(hào)。3.l.2 指令格式片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) 單字節(jié)指令 指令只有一個(gè)字節(jié),操作碼和操作數(shù)同在一個(gè)字節(jié)中。在80C51系列的指令系統(tǒng)中,共有49條單字節(jié)指令。 操作碼地址碼如 MOV A,Rn 指令機(jī)器碼為單字節(jié)11001rrr,其中rrr可表示
12、為000111,分別代表R0R7 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) 雙字節(jié)指令:其中一個(gè)字節(jié)為操作碼,另一個(gè)字節(jié)是操作數(shù)。在80C51系列的指令系統(tǒng)中,共有45條雙字節(jié)指令。操作碼地址碼數(shù)據(jù)或地址碼如MOV A,#data 8位立即數(shù)data需占一個(gè)字節(jié),操作碼也需一個(gè)字節(jié)。 三字節(jié)指令:操作碼占一個(gè)字節(jié),操作數(shù)占兩個(gè)字節(jié)。其中操作數(shù)既可能是數(shù)據(jù),也可能是地址。在80C51系列的指令系統(tǒng)中,共有17條三字節(jié)指令。 操作碼數(shù)據(jù)或地址碼數(shù)據(jù)或地址碼片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)如ANL direct ,#data 指令需3個(gè)字節(jié),第1字節(jié)為
13、操作碼,第2字節(jié)為8位直接地址direct,第3字節(jié)為8位立即數(shù)data。從指令執(zhí)行時(shí)間來(lái)看,單機(jī)器周期指令有64種,雙機(jī)器周期指令有45種,只有乘法、除法指令的執(zhí)行時(shí)間為4個(gè)機(jī)器周期。在12MHz晶振條件下,80C51的指令執(zhí)行時(shí)間分別為1S、2S、4S。片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)80C51的指令系統(tǒng),共有111條指令,按其功能可分為5大類: 數(shù)據(jù)傳送類指令(28條); 算術(shù)運(yùn)算類指令(24條); 邏輯運(yùn)算類指令(25條); 控制轉(zhuǎn)移類指令(17 條); 布爾操作(位)類指令(17條)。3.1.3 指令分類 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)
14、的指令系統(tǒng)Rn n07,表示當(dāng)前寄存器組的8個(gè)通用寄存器R0R7 中的一個(gè)。 Ri i0,l,可用作間接尋址的寄存器,只能是R0、R1 兩個(gè)寄存器中的一個(gè)。 direct 內(nèi)部的8位地址,既可以指片內(nèi)RAM的低128個(gè)單元地址,也可以指特殊功能寄存器的地址或符號(hào)名稱,因此,direct表示直接尋址方式。#data指令中所含的8位立即數(shù)。#data16 指令中所含的16位立即數(shù)。3.1.4 指令系統(tǒng)中使用符號(hào)說(shuō)明片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) addr16 16位目的地址,只限于在LCALL和LJMP指令中 使用。 addr11 11位目的地址,只限于在ACALL和
15、AJMP指令中使用。 rel 相對(duì)轉(zhuǎn)移指令中的偏移量,為8位帶符號(hào)數(shù)。為SJMP和所有條件轉(zhuǎn)移指令所用。轉(zhuǎn)移范圍為相對(duì)于下一條指令笫一字節(jié)地址的-128127。 DPTR數(shù)據(jù)指針。 bit 片內(nèi) RAM (包括部分特殊功能寄存器)中的直接尋址位。 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) A累加器。 BB寄存器。 C 進(jìn)位標(biāo)志位,是布爾處理機(jī)中的累加器,稱之為累加位。 間址寄存器的前綴標(biāo)志。 / 位地址的前綴標(biāo)志,表示對(duì)該位操作數(shù)取反。( ) 某寄存器或某單元的內(nèi)容。()由尋址的單元中的內(nèi)容。 箭頭左邊的內(nèi)容被箭頭右邊的內(nèi)容所取代。 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C5
16、1單片微機(jī)的指令系統(tǒng)單片微機(jī)執(zhí)行指令的過(guò)程,分為取指令和執(zhí)行指令兩項(xiàng)基本內(nèi)容。在取指階段,單片微機(jī)從程序存儲(chǔ)器中取出指令操作碼,送到指令寄存器IR中,通過(guò)指令譯碼器的譯碼,產(chǎn)生一系列的控制信號(hào)。在指令執(zhí)行階段中,利用指令譯碼產(chǎn)生的控制信號(hào),進(jìn)行本指令規(guī)定的操作 。 3.1.5 單片微機(jī)執(zhí)行指令的過(guò)程片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)3.2 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送方向及相互關(guān)系見(jiàn)圖37??煞譃閮?nèi)部8位數(shù)據(jù)傳送指令、16位數(shù)據(jù)傳送指令(專用于設(shè)定地址指針)、外部數(shù)據(jù)傳送指令、程序存儲(chǔ)器數(shù)據(jù)傳送指令、交換指令和堆棧操作指令。助記符有MOV、MOVX、MOVC、XCH、XCH
17、D、SWAP、PUSH、POP等8種。源操作數(shù)可采用寄存器、寄存器間接、直接、立即、寄存器基址加變址等5種尋址方式。目的操作數(shù)可以采用寄存器、寄存器間接、直接等3種尋址方式。片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)一般操作是把源操作數(shù)傳送到目的操作數(shù),指令執(zhí)行后源操作數(shù)不變,目的操作數(shù)被修改為源操作數(shù)。 若要求進(jìn)行數(shù)據(jù)傳送時(shí),目的操作數(shù)不變,則可以用交換指令。 數(shù)據(jù)傳送類指令不影響標(biāo)志位C、AC、OV。對(duì)于P標(biāo)志一般不加以說(shuō)明。堆棧操作指令可以直接修改程序狀態(tài)字PSW,這時(shí)可以使某些標(biāo)志位發(fā)生改變。片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)從圖37中可以看
18、出數(shù)據(jù)傳送指令的特點(diǎn)有: 可以進(jìn)行直接地址到直接地址的數(shù)據(jù)傳送,能把一個(gè)并行I/O口中的內(nèi)容傳送到片內(nèi)RAM單元中,而不必經(jīng)過(guò)累加器或工作寄存器Rn。 用R0和R1寄存器間址訪問(wèn)片外數(shù)據(jù)存儲(chǔ)器256個(gè)字節(jié)址及片內(nèi)RAM中的任一單元。用DPTR間址訪問(wèn)片外全部64KB的數(shù)據(jù)存儲(chǔ)器或I/O。 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)累加器A能對(duì)Rn寄存器尋址;能與特殊功能寄存器之間進(jìn)行一個(gè)字節(jié)的數(shù)據(jù)傳送;能對(duì)片內(nèi)RAM直接尋址;能與片內(nèi)RAM單元之間進(jìn)行低半字節(jié)的數(shù)據(jù)交換。 能用變址尋址方式訪問(wèn)程序存儲(chǔ)器中的表格,將程序存儲(chǔ)器單元中的固定常數(shù)或表格字節(jié)內(nèi)容傳送到累加器A中。 片
19、微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) 主要用于80C51內(nèi)部存儲(chǔ)器和寄存器之間的數(shù)據(jù)傳送。 這類傳送指令的格式為:MOV 目的字節(jié),源字節(jié) 功能:把源字節(jié)的內(nèi)容送到目的字節(jié),而源字節(jié)的內(nèi)容不變。操作屬于拷貝性質(zhì)。 3.2.1 內(nèi)部8位數(shù)據(jù)傳送指令 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) 源操作數(shù):累加器A,工作寄存器Rn(n0,7),直接地址direct、間接尋址寄存器Ri(i0,1)和立即數(shù)data等5種。 目的操作數(shù):累加器A,工作寄存器Rn(n0,7),直接地址direct和間接尋址寄存器Ri(i0,1)等4種。 這類指令是以MOV為其助記符的
20、,若以目的操作數(shù)分類,可將內(nèi)部8位數(shù)據(jù)傳送指令分為4組。 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) 以累加器A為目的操作數(shù)的指令組 指 令 功 能 尋址范圍 機(jī)器碼 MOVA,Rn;(A)(Rn) R0- R7 11101 rrr 8種操作碼(E8EFH) MOVA,direct;(A)(direct) 00-FFH 1 direct 雙字節(jié) MOVA,Ri;(A)(Ri) 00-FFH 1110011r(E6E7H) 2種操作碼 MOVA,data;(A)(data)#00-#FFH 01110100 data 雙字節(jié)傳送指令是以累加器A為中心的總體結(jié)構(gòu)。絕大部分傳送操作
21、均需通過(guò)A進(jìn)行的。 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) 以工作寄存器Rn為目的操作數(shù)的指令組 MOV Rn,A ;(Rn)(A) MOV Rn,direct ;(Rn)(direct) MOV Rn,data ;(Rn)data把源操作數(shù)的內(nèi)容送入當(dāng)前工作寄存器區(qū)的R0R7中的某一個(gè)寄存器。片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) 以直接地址direct為目的操作數(shù)的指令組 MOV direct,A ;(direct)(A) MOVdirect,Rn ;(direct)(Rn) MOVdirect,direct ;(direct)(direct)
22、MOV direct, Ri ;(direct)(Ri) MOVdirect,data ;(direct)data把源操作數(shù)的內(nèi)容送入由直接地址指出的存儲(chǔ)單元。 直接地址direct為8位直接地址,可尋址0255個(gè)單元,對(duì)80C51可直接尋址內(nèi)部RAM 0127個(gè)地址單元和 128255地址的特殊功能寄存器。 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) 以間接尋址寄存器Ri為目的操作數(shù)的指令組 MOVRi,A ;(Ri)(A)MOVRi,direct ;(Ri)( direct ) MOVRi,data ;(Ri)data這組指令的功能是把源操作數(shù)的內(nèi)容送入由 R0或R1的內(nèi)
23、容所指的內(nèi)部 RAM中的存儲(chǔ)單元。片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)Ri由操作碼字節(jié)的最低位來(lái)選定是R0還是R1寄存器,間址是以Ri的內(nèi)容作為操作數(shù)的地址來(lái)進(jìn)行尋址的。 直接尋址direct單元在編程時(shí)就巳明確,而間接尋址單元是在程序進(jìn)行中明確的,間接尋址空間和直接尋址空間范圍相同,均為0255個(gè)單元地址。 立即數(shù)data為一常數(shù),它是不帶符號(hào)的8位二進(jìn)制數(shù)。片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)MOV A,80H ;表示把片內(nèi)RAM中地扯為80H單元(即P0口)中的內(nèi)容送A。 MOV 80H,88H ;這是一條3字節(jié)指令,表示把立即數(shù)88H送到
24、片內(nèi)RAM中的80H地址單元中去。 MOV 80H,0E0H;這是一條3字節(jié)指令表示把E0H單元的內(nèi)容送到80H單元中去。這是片內(nèi)數(shù)據(jù)存儲(chǔ)單元中的直接地址單元之間數(shù)據(jù)的直接傳送 。片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) MOV DPTR,data16 ;(DPTR)data16 把16位常數(shù)裝入數(shù)據(jù)指針DPTR。 16位常數(shù)在指令的第二、第三字節(jié)中(第二字節(jié)為高位字節(jié)DPH,第三字節(jié)為低位字節(jié)DPL)。 例:執(zhí)行指令 MOV DPTR,1234H執(zhí)行結(jié)果(DPH)12H,(DPL)34H 3.2.2 16位數(shù)據(jù)傳送指令片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指
25、令系統(tǒng)實(shí)現(xiàn)累加器A與外部數(shù)據(jù)存儲(chǔ)器或I/O口之間傳送一個(gè)字節(jié)數(shù)據(jù)的指令。 采用間接尋址方式訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器,有Ri和DPTR兩種間接尋址方式。 采用R0或R1作間址寄存器時(shí),可尋址256個(gè)外部數(shù)據(jù)存儲(chǔ)器單元,8位地址和數(shù)據(jù)均由P0口分時(shí)輸入和輸出。這時(shí)若要訪問(wèn)大于256個(gè)單元的片外RAM時(shí),可選用任何其它輸出口線來(lái)輸出高8位的地址(一般選用P2口輸出高8位地址)。 采用16位DPTR作間址可尋址整個(gè)64KB片外數(shù)據(jù)存貯空間,低8位(DPL)由P0口進(jìn)行分時(shí)使用,高8位(DPH)由P2口輸出。 3.2.3外部數(shù)據(jù)的傳送指令組片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) 外部數(shù)據(jù)
26、存儲(chǔ)器或I/O內(nèi)容送累加器A MOVXA,R i MOVXA,DPTR說(shuō)明:指令執(zhí)行時(shí),在P3.7引腳上輸出RD有效信號(hào),可用作外部數(shù)據(jù)存儲(chǔ)器或I/O的讀選通信號(hào)。 P0口分時(shí)輸出由Ri或DPL指定的低8位地址信息和輸入累加器中的數(shù)據(jù)信息,P2口則輸出DPH指定的高8位地址信息。 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) 累加器A內(nèi)容送外部數(shù)據(jù)存儲(chǔ)器或I/O MOVXRi,A MOVXDPTR,A說(shuō)明:該組指令執(zhí)行時(shí),在P3.6引腳上輸出WR有效信號(hào),可以用作外部數(shù)據(jù)存儲(chǔ)器或I/O的寫選通信號(hào)。 P0口分時(shí)輸出由Ri或DPL指定的低8位地址信息和累加器中輸出的數(shù)據(jù)信息,P2
27、口則輸出DPH指定的高8位地址信息。 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)例1:設(shè)工作寄存器R0的內(nèi)容為12H,R1的內(nèi)容為34H,片外RAM 34H單元的內(nèi)容為56H。執(zhí)行指令: MOVXA,R1 ;(34H)56HA MOVX R0,A ;(A)片外12H單元中執(zhí)行結(jié)果:片外RAM的(34H)56H,(12H)56H。 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)例2:某應(yīng)用系統(tǒng)外擴(kuò)了8KB RAM,要求把內(nèi)部RAM的20H單元內(nèi)容發(fā)送到外部RAM的800H單元中。 MOV DPTR,#800H ;外部數(shù)據(jù)存儲(chǔ)器地址指針 MOV R0,#20H ;內(nèi)
28、部數(shù)據(jù)存儲(chǔ)器地址指針 MOVA,R0 ;取內(nèi)部RAM20H單元內(nèi)容 MOVX DPTR,A ;送外部RAM800H單元片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)MOVC A,APC MOVC A,A+DPTR 功能從程序存儲(chǔ)器中讀取數(shù)據(jù)(如表格、常數(shù)等)。 累加器A為變址寄存器,而PC、DPTR為基址寄存器。 DPTR為基址寄存器時(shí),允許數(shù)表存放在程序存儲(chǔ)器的任意單元,稱為遠(yuǎn)程查表;PC為基址寄存器時(shí),數(shù)表只能放在當(dāng)前PC往下的255個(gè)單元中,稱為近程查表。編程時(shí)需計(jì)算A值與數(shù)表首址的偏移量。 3.2.4 程序存儲(chǔ)器數(shù)據(jù)傳送指令(或稱查表指令)片微型計(jì)算機(jī)原理與接口技術(shù)第二版
29、80C51單片微機(jī)的指令系統(tǒng)例3:求平方數(shù)(遠(yuǎn)程查表法) MOV DPTR, #TABLE ;指向表首址 MOVC A,A+DPTR ;查表得到平方數(shù) MOV 20H,A ;存平方數(shù) HERE:SJMP HERETABLEDB 00H,01H,04H,09H ;平方表0292 DB 16H,25H,36H DB 49H,64H,81H 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)例4:求平方數(shù)(近程查表) ADD A,#rel ;修正偏移量 MOVC A,A+PC ;查表得到平方數(shù) MOV 20H,A ;存平方數(shù) HERESJMP HERE TABLEDB 00H,01H,04
30、H,09H,16H ;平方表0292 DB 25H,36H,49H,64H,81H注rel=TABLE(查表指令地址1) ;MOVC指令為單字節(jié)。 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) 字節(jié)交換指令XCH組 XCH A,Rn; (A) (Rn) 、direct、Ri XCH A,directXCH A,Ri功能將累加器A與源操作數(shù)的字節(jié)內(nèi)容互換。 例:設(shè)(R0)30H,(A)3FH,片內(nèi)(30H)BBH。 執(zhí)行指令 XCH A,R0 執(zhí)行結(jié)果 (A)=BBH,(30H)3FH。 3.2.5 數(shù)據(jù)交換指令片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) . 半
31、字節(jié)交換指令組 XCHD A,Ri 功能將Ri間接尋址單元的低4位內(nèi)容與累加器A的低4位內(nèi)容互換,而它們的高4位內(nèi)容均不變。例: 設(shè)(R0)20H,(A)36H(00110110B),內(nèi)部RAM中(20H)75H(0111010lB)。執(zhí)行指令XCHD A,R0結(jié)果為 (20H)01110110B76H,(A)00110101B35H。 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) SWAP A 功能將累加器A的高、低半字節(jié)交換,該操作也可看作是4位循環(huán)指令。見(jiàn)圖38。 例:設(shè)(A)36H(0011 0110B)執(zhí)行 SWAP A指令執(zhí)行結(jié)果為(A)63H(0110 0011B
32、)。 XCHD和SWAP指令主要用于實(shí)現(xiàn)十六進(jìn)制數(shù)或BCD碼的數(shù)位交換。 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)3.2.6 堆棧操作指令組 PUSH directPOP direct入棧(PUSH)指令又稱“壓棧”操作。指令執(zhí)行后SP1指向棧頂上一個(gè)空單元,將直接地址direct單元內(nèi)容送入SP所指示的堆棧單元。出棧(POP)指令又稱“彈出”操作,由 SP所尋址的片內(nèi)RAM中棧頂?shù)膬?nèi)容(SP)送入直接尋址單元direct中,然后執(zhí)行(SP)一1并送入SP。片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)例:中斷響應(yīng)時(shí)(SP)30H,DPTR的內(nèi)容為0123H,
33、執(zhí)行入棧指令: PUSH DPL ;DPL內(nèi)容入棧 PUSH DPH ;DPH內(nèi)容入棧。執(zhí)行結(jié)果:第1條指令(SP)131H(SP),(DPL)23H(31H) 第2條指令(SP)132H(SP),(DPH)01H(32H)片內(nèi)RAM中,(31H)23H,(32H)01H, (SP)32H。 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)例:設(shè)(SP)32H,片內(nèi)RAM的30H32H單元中的內(nèi)容分別為20H,23H,01H,執(zhí)行下列指令的結(jié)果怎樣?POP DPH;(SP)(32H)01HDPH (SP)132H131HSP POP DPL;(SP)(31H)23HDPL (SP)
34、131H130HSP 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)例5:檢查傳送結(jié)果已知內(nèi)部RAM (10H)=00H, (30H)=40H,(40H)=10H,P1口為11001010B,分析指令執(zhí)行后,各單元內(nèi)容。MOV R0,#30H ;R0=30HMOV A,R0 ;A=40HMOV R1,A ;R1=40HMOV B,R1 ;B=10HMOV R1,P1 ;(40H)=11001010BMOV P2,P1 ;P1=P2=11001010BMOV 10H,#20H ;(10H)=20H執(zhí)行結(jié)果: (10H)=20H, (30H)=40H, (40H)=CAH, P1=P
35、2=CAH, A=40H, B=10H, R0=30H, R1=40H 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)例6: 將4位BCD碼倒序 設(shè)內(nèi)部數(shù)據(jù)存儲(chǔ)器2AH、2BH單元連續(xù)存放有4位BCD碼數(shù)符,試編一程序把4位BCD碼數(shù)符倒序排列。2AH2BH2AH2BHa3 a2 a1 a0 a0 a1 a2 a3 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) MOV R0,#2AH MOV R1,#2BH MOV A,R0 ;2AH單元內(nèi)容送A SWAP A ;A的高4位與低4位交換(a2 a3) MOV R0,A MOV A,R1 ;2BH單元內(nèi)容送A SWA
36、P A ; A的高4位與低4位交換(a0 a1) XCH A, R0 ;2AH與2BH單元內(nèi)容交換 MOV R1, A HERE: SJMP HERE 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)3.3 算術(shù)運(yùn)算類指令 通過(guò)算術(shù)邏輯運(yùn)算單元ALU進(jìn)行數(shù)據(jù)運(yùn)算處理。它包括加、減、乘、除四則運(yùn)算,還有帶借位減法、比較指令。加法類指令包括加法、帶進(jìn)位的加法、加1以及二一十進(jìn)制調(diào)整。 ALU僅執(zhí)行無(wú)符號(hào)二進(jìn)制整數(shù)的算術(shù)運(yùn)算。對(duì)于帶符號(hào)數(shù)則要進(jìn)行其它處理。 助記符為:ADD、ADDC、INC、DA、SUBB、DEC、MUL、DIV等8種。除了加1和減1指令之外,算術(shù)運(yùn)算結(jié)果將使進(jìn)位標(biāo)志(
37、CY)、半進(jìn)位標(biāo)志(AC)、溢出標(biāo)志(OV)置位或復(fù)位。 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)ADD A,Rn ;(A)(Rn)(A) ADD A,direct ;(A)(direct)(A) ADD A,Ri ;(A)(Ri)(A) ADD A,data ;(A)data(A) 指令的源操作數(shù)為Rn、direct、Ri或立即數(shù),而目的操作數(shù)為累加器A中的內(nèi)容。功能:將工作寄存器Rn、片內(nèi)RAM單元中的內(nèi)容、間接地址存儲(chǔ)器中的8位無(wú)符號(hào)二進(jìn)制數(shù)及立即數(shù)與累加器A中的內(nèi)容相加,相加的結(jié)果仍存放在A中。 3.3.1 加法指令片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)
38、的指令系統(tǒng) 這類指令將影響標(biāo)志位AC、CY、OV、P。當(dāng)和的第3位有進(jìn)位時(shí),將AC標(biāo)志置位,否則為0。當(dāng)和的第7位有進(jìn)位時(shí),將CY標(biāo)志置位,否則為0。 對(duì)于帶符號(hào)數(shù)運(yùn)算,當(dāng)和的第7位與第6位中有一位進(jìn)位而另一位不產(chǎn)生進(jìn)位時(shí),溢出標(biāo)志OV置位,否則為0。(OV)1表示兩個(gè)正數(shù)相加,和為負(fù)數(shù);或兩個(gè)負(fù)數(shù)相加而和為正數(shù)的錯(cuò)誤結(jié)果。片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)例:設(shè)(A)C3H,(R0)=AAH。 執(zhí)行指令:ADD A,R0 1 1 0 0 0 0 1 1 B +1 0 1 0 1 0 1 0 B 0 1 1 0 1 1 0 1 B 執(zhí)行結(jié)果:(A)6DH, (CY)1
39、, (OV)1, (AC)0,P=1。 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) ADDC A,Rn ;(A)(A)(Rn)(CY) ADDC A,direct ;(A)(A)(direct)(CY) ADDC A,Ri ;(A)(A)(Ri)(CY) ADDC A,data ;(A)(A)data(CY) 功能:將工作寄存器Rn、片內(nèi)RAM單元中的內(nèi)容、間接地址存儲(chǔ)器中的8位二進(jìn)制數(shù)及立即數(shù)與累加器A的內(nèi)容和當(dāng)前進(jìn)位標(biāo)志CY的內(nèi)容相加,相加的結(jié)果仍存放在A中。 常用于多字節(jié)數(shù)相加。3.3.2帶進(jìn)位位加法指令片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) 這類
40、指令將影響標(biāo)志位AC、CY、OV、P。 當(dāng)和的第3位有進(jìn)位時(shí),將AC標(biāo)志置位,否則清0。 當(dāng)和的第7位有進(jìn)位時(shí),將CY標(biāo)志置位,表示和數(shù)溢出,否則清0。 對(duì)于帶符號(hào)數(shù)運(yùn)算,當(dāng)和的第7位與第6位中有一位進(jìn)位而另一位不產(chǎn)生進(jìn)位時(shí),溢出標(biāo)志OV置位,否則為0。(OV)1表示兩個(gè)正數(shù)相加,和為負(fù)數(shù);或兩個(gè)負(fù)數(shù)相加而和為正數(shù)的錯(cuò)誤結(jié)果。 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)例:設(shè)(A)C3H,(R0)AAH,(CY)1。執(zhí)行指令:ADDC A,R0 1 1 0 0 0 0 1 1 + 1 0 1 0 1 0 1 0 + 1 (CY) 0 1 1 0 1 1 1 0執(zhí)行結(jié)果:(A)
41、6EH,(CY)1,(OV)l, (AC)0。對(duì)于帶符號(hào)數(shù)的帶進(jìn)位相加,溢出標(biāo)志為1,意味著出錯(cuò),上例為兩個(gè)負(fù)數(shù)相加,出現(xiàn)結(jié)果為正數(shù)的錯(cuò)誤。片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) 例:已知(A)B3H,(R1) 56H。執(zhí)行ADD A,R1指令: B 3H 1 0 1 1 0 0 1 1 + 5 6H + 0 1 0 1 0 1 1 0 1 0 9H 1 0 0 0 0 1 0 0 1 CY=1 CY=1,OV=0,AC=0 若兩個(gè)數(shù)是無(wú)符號(hào)數(shù),則B3H56H=109H,答案正確。 若兩個(gè)數(shù)是帶符號(hào)數(shù),則B3H的原碼是(77D) ,56H原碼為86D, (77D) 86D
42、09D, 答案也是正確的, 因?yàn)镺V0。 1片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) INC Rn ;(Rn)(Rn)1 INC direct ;(direct)(direct)1 INC Ri ;(Ri)(Ri)1 INC A ;(A)(A)l INC DPTR ;(DPTR)(DPTR)1 功能將工作寄存器Rn、片內(nèi)RAM單元中的內(nèi)容 、間接地址存儲(chǔ)器中的8位二進(jìn)制數(shù)、累加器A和數(shù)據(jù)指針DPTR的內(nèi)容加 1,相加的結(jié)果仍存放在原單元中。3.3.3 增量(加1) 指令 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)當(dāng)指令中的direct為P0P3端口(地址分
43、別為內(nèi)部RAM的80H、90H、A0H、B0H) 時(shí),其功能是修改輸出口的內(nèi)容,指令執(zhí)行過(guò)程中,首先讀入端口內(nèi)容,在CPU中加1, 再輸出到端口,要注意的是讀入來(lái)自端口的鎖存器而不是端口的引腳。這類指令具有讀修改寫的功能。 例:設(shè)(R0)7EH,(7EH)FFH(7FH)40H。 INC R0 ;FFH100H 仍存入7EH單元 INC R0 ;7EH17FH 存入(R0) INC R0 ;40H141H 存入(7FH)執(zhí)行結(jié)果為(R0)7FH,(7EH)00H(7FH)41H 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) DAA功能:對(duì)兩個(gè)BCD碼的加法結(jié)果進(jìn)行調(diào)整。說(shuō)明:B
44、CD碼采用4位二進(jìn)制數(shù)編碼,并且只采用了其中的10個(gè)編碼,即00001001,分別代表BCD碼09,而10101111為無(wú)效碼。當(dāng)相加結(jié)果大于9,說(shuō)明已進(jìn)入無(wú)效編碼區(qū);當(dāng)相加結(jié)果有進(jìn)位,說(shuō)明已跳過(guò)無(wú)效編碼區(qū)。凡結(jié)果進(jìn)入或跳過(guò)無(wú)效編碼區(qū)時(shí),結(jié)果是錯(cuò)誤的,相加結(jié)果均比正確結(jié)果小6(差6個(gè)無(wú)效編碼) 。 3.3.4 二一十進(jìn)制調(diào)整指令片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)十進(jìn)制調(diào)整的修正方法為: 當(dāng)累加器低4位大于9或半進(jìn)位標(biāo)志AC=1時(shí),則進(jìn)行低4位加6修正(A03)6(A03)即(A)=(A) 06 當(dāng)累加器高4位大于9或進(jìn)位標(biāo)志CY1時(shí), 進(jìn)行高4位加6修正(A47)6(
45、A47) 即(A) (A) 60H 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) 例:設(shè)(A)0101 011056 BCD, (R3) 0110 011167 BCD,(CY)1。執(zhí)行指令: ADDC A,R3 DA A執(zhí)行 ADDC A,R3 (A) 0 1 0 1 0 1 1 0 (56 BCD) (R3) 0 1 1 0 0 1 1 1 (67 BCD) 十 (CY) 1 . 1 0 1 1 1 1 1 0 (高、低4位均大于9)再執(zhí)行DA A 0 1 1 0 0 1 1 0 (加66H操作) Cy=1 0 0 1 0 0 1 0 0 (124 BCD)即BCD碼數(shù)56
46、671124。片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)例7:兩個(gè)多字節(jié)無(wú)符號(hào)BCD碼數(shù)相加設(shè)有兩個(gè)4位BCD碼分別存在內(nèi)部RAM的50H、51H和60H、61H單元中,試編寫程序,求兩個(gè)BCD碼數(shù)之和,結(jié)果存入內(nèi)部40H、41H單元。MOV R0,#50H;被加數(shù)首址MOV R1,#60H ;加數(shù)首址MOV A,R0 ;取被加數(shù)ADD A,R1 ;與加數(shù)相加DA A ;二十進(jìn)制調(diào)整MOV 40H,A ;存和片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)INC R0 ;高位相加INC R1MOV A,R0ADDC A,R1DA AMOV 41H,A片微型計(jì)算機(jī)原
47、理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)例8:對(duì)累加器A中壓縮BCD碼數(shù)減1 ADD A,#99H DA A HERE:SJMP HERE說(shuō)明:累加器A允許的最大BCD碼數(shù)為99BCD,當(dāng)對(duì)A實(shí)行加99BCD碼數(shù)時(shí),必然形成對(duì)BCD碼百位數(shù)的進(jìn)位,而剩在A中的內(nèi)容正是壓縮BCD碼數(shù)減1。如BCD的59H,經(jīng)加99H和DA A的調(diào)整后,為58H且CY=1,不考慮進(jìn)位CY,則BCD碼59158。 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) SUBB A,Rn ;(A)(Rn)(CY)(A) SUBB A,drect ;(A)一(drect)一(CY)(A) SUBB A,R
48、i ;(A)一(Ri)一(CY)(A) SUBB A,dala ;(A)data(CY)(A)功能:從A中減去進(jìn)位位CY和指定的變量,差存入A中。 C:若第7位有借位則CY置1,否則CY清0;若第3位有借位,則AC置1,否則AC清0。 OV:若第7位和第6位中有一位需借位而另一位不借位,則OV置1;OV位用于帶符號(hào)的整數(shù)減法。 80C51指令系統(tǒng)中沒(méi)有不帶借位的減法。3.3.5 帶借位減法指令片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) DEC A ;(A)1(A) DEC Rn ;(Rn)1(Rn) DEC direct ;(direct)1(direct) DEC Ri ;
49、(Ri)1(Ri) 3.3.6 減1指令片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)例:設(shè)(R0)7FH,(7EH)00H,(7FH)40H。執(zhí)行指令: DECR0;(7FH)一140Hl3FH(7FH) DEC R0 ;(R0)一l7FHl7EH(R0)DEC R0 ;(7EH)一l00HlFFH(7EH)執(zhí)行結(jié)果:(R0)7EH,(7EH)FFH,(7FH)3FH。 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) 乘法指令MULAB 功能將A和B中兩個(gè)無(wú)符號(hào)8位二進(jìn)制數(shù)相乘,16位積的低8位存于A中,高8位存于B中。例:設(shè)(A)50H(80D),(B)A0H(
50、160D)。執(zhí)行指令:MUL AB即80160128003200H執(zhí)行結(jié)果:乘積 3200H(12800),(A)00H,(B)32H,(OV)1,(CY)0。 3.3.7 乘法/除法指令片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) 除法指令 DIV AB 除法指令的功能是將A中無(wú)符號(hào)8位二進(jìn)制數(shù)除以B中的無(wú)符號(hào)8位二進(jìn)制數(shù),所得商存于A,余數(shù)存于B中,并將CY和OV置0。當(dāng)除數(shù)(B)0時(shí),結(jié)果不定,則OV置1。CY總是清0。 例:設(shè)(A)FBH(251D),(B)12H(18D)。執(zhí)行指令:DIV AB執(zhí)行結(jié)果:(A)0DH(商為13),(B)11H(余數(shù)為I7)(OV)0,
51、(CY)0。 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)例9: 數(shù)的碼制轉(zhuǎn)換。把累加器A中無(wú)符號(hào)二進(jìn)制整數(shù) (00FFH) 轉(zhuǎn)換為3位壓縮BCD碼 (0255) ,并存入內(nèi)存30H和31H單元。BINBCD:MOV B,#100 DIV AB ;A100 百位數(shù)在A,余數(shù)在B MOV 30H,A ;百位數(shù)送30H MOV A,B MOV B,#0AH DIV AB ;余數(shù)10 ,十位數(shù)在A低4位, ;個(gè)位數(shù)在B SWAP A ;十位數(shù)放A的高4位 ADD A,B ;十位數(shù)和個(gè)位數(shù)組合后送31H MOV 31H,A RET片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令
52、系統(tǒng)3.4 邏輯運(yùn)算類指令 邏輯運(yùn)算類指令:與、或、異或、清除、求反、移位。 助記符有ANL、ORL、XRL、RL、RLC、RR、RRC、CPL、CLR等9種。只按位進(jìn)行邏輯運(yùn)算,結(jié)果不影響PSW中標(biāo)志位。 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)助記符為ANL,用符號(hào)“”表示: ANL A,Rn ;(A)(A)(Rn) ANL A,direct ;(A)(A)(direct) ANL A,Ri ;(A)(A)(Ri) ANL A,data ;(A)(A)data ANL direct,A ;(direct)(direct)(A) ANL direct,data ;(dir
53、ect)(drect)data功能將目的地址單元中的數(shù)和源地址單元中的數(shù)按“位”相“與”,其結(jié)果放回目的地址單元中。 3.4.1 邏輯“與”運(yùn)算指令片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)例:設(shè)(A)A3H(1010 0011B), (R0)AAH(1010 1010B)。 執(zhí)行指令 :ANL A,Rn執(zhí)行結(jié)果為(A) A2H(1010 0010B)。例:設(shè)P1=FFH執(zhí)行指令 :ANL P1,#0F0H執(zhí)行結(jié)果為P1F0H,這時(shí)P1.7P1.4位狀態(tài)不變,P1.3P1.0位被清除。邏輯“與”運(yùn)算指令用做清除或屏蔽某些位。 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)
54、的指令系統(tǒng)助記符為ORL,用符號(hào)“”表示: ORL A,Rn ;(A)(A)(Rn) ORL A,direct ;(A)(A)(direct) ORL A,Ri ;(A)(A)(Ri) ORL A,data ;(A) (A) #data ORL direct,A ;(direct)(direct)(A) ORL direct,data ;(direct)(direct)data 功能將目的地址單元中的數(shù)和源地址單元中的數(shù)按“位”相“或”,其結(jié)果放回目的地址單元中。 3.4.2 邏輯“或”運(yùn)算指令片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)例:設(shè)(A)A3H(10100011B)
55、, (R0)45H(0100 0101B)。 執(zhí)行指令:ORL A,R0 執(zhí)行結(jié)果:(A)E7H(1110 0111B)。邏輯或運(yùn)算指令用做指定位強(qiáng)迫置位。給某些位置1,合并兩個(gè)數(shù)中的“1”。 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)助記符為XRL,用符號(hào)“”表示,其運(yùn)算規(guī)則為:00=011=001=110=1 XRL A,Rn ;(A)(A)(Rn) XRLA,drect ;(A)(A)(direct) XRL A,Ri ;(A)(A)(Ri) XRL A,#data ;(A)(A)data XRL direct,A ;(direct)(direct)(A) XRLdir
56、ect,data ;(direct)(direct)data功能:將目的地址單元中的數(shù)和源地址單元中的數(shù)按“位”相“異或”,其結(jié)果放回目的地址單元中。 3.4.3 邏輯“異或”運(yùn)算指令片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)例:設(shè)(A)A3H(1010 0011B), (R0) 45H(0100 0l0lB)。執(zhí)行指令為 XRL A,R0 1 0 1 0 0 0 1 10 1 0 0 0 1 0 11 1 1 0 0 1 1 0 執(zhí)行結(jié)果為(A)E6H(111001l0B)。 用于對(duì)目的操作數(shù)的某些位取反,也可以判兩個(gè)數(shù)是否相等,若相等則結(jié)果為0。 片微型計(jì)算機(jī)原理與接口技
57、術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)包括帶進(jìn)位C和不帶進(jìn)位C的循環(huán)左移和循環(huán)右移等4條指令。對(duì)于帶進(jìn)位的循環(huán)移位,C的狀態(tài)由移入的數(shù)位決定,其他狀態(tài)標(biāo)志位不受影響。3.4.4 累加器移位/循環(huán)指令片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) 循環(huán)右移指令:RR A 將累加器的內(nèi)容逐位循環(huán)右移一位,并且a0的內(nèi)容移到a7,見(jiàn)圖39(a)所示。不影響標(biāo)志位。 例:設(shè)(A)A6H(),執(zhí)行RR A指令,執(zhí)行結(jié)果 53H(01010011B)。 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) 帶進(jìn)位循環(huán)右移指令:RRC A 將累加器的內(nèi)容和進(jìn)位位一起循環(huán)右移一位,a0移入
58、進(jìn)位位CY,CY的內(nèi)容移到 a7,見(jiàn)圖 39(b)所示。不影響 CY之外的標(biāo)志位。例:設(shè)(A)B4H(10110100B),(CY)1,執(zhí)行RRC A指令, 執(zhí)行結(jié)果為:(A)DAH ( 11011010B) ,(CY)0 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) 循環(huán)左移指令:RLA 將累加器的內(nèi)容逐位循環(huán)左移一位,a7的內(nèi)容移到a0,見(jiàn)圖3 9(c)所示。不影響標(biāo)志位。 例:設(shè)(A)3AH(00111010B),執(zhí)行RL A指令,執(zhí)行結(jié)果:(A)74H(01110l00B)。 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng) 帶進(jìn)位循環(huán)左移指令: RLCA
59、將累加器的內(nèi)容和進(jìn)位位一起循環(huán)左移一位,并且a7移入進(jìn)位位CY,CY的內(nèi)容移到a0,見(jiàn)圖 39(d)所示。不影響 CY之外的標(biāo)志位。例:設(shè)(A)3AH(00111010B),(CY)1,執(zhí)行RLC A指令,(A)=75H(01110101B),(CY)0 片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)CPL A 對(duì)進(jìn)行累加器的內(nèi)容逐位取反,結(jié)果仍存在A中。 不影響標(biāo)志位。 例:設(shè)(A)21H(0010 0001B),執(zhí)行CPL A指令,執(zhí)行結(jié)果:(A)DEH (1101 1110B)。 3.4.5 累加器按位取反指令片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)CL
60、RA對(duì)累加器進(jìn)行清0, 不影響標(biāo)志位。 例:設(shè)(A)44H, 執(zhí)行CLR A指令, 執(zhí)行結(jié)果:(A) 00H。 3.4.6 累加器清0指令片微型計(jì)算機(jī)原理與接口技術(shù)第二版80C51單片微機(jī)的指令系統(tǒng)例10: 數(shù)據(jù)的拆分與拼裝要求:從(30H)=X7X6X5X4X3X2X1X0中取出高5位,從(31H)=Y7Y6Y5Y4Y3Y2Y1Y0中取出低3位,拼裝后存入40H中,(40H)=Y2Y1Y0X7X6X5X4X3地址 機(jī)器碼 ORG 0000H0000 E5 30 MOV A,30H0002 C4 SWAP A ;X3X2X1X0 X7X6X5X40003 23 RL A ;X2X1X0 X7X
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度建筑工地臨時(shí)用工人員工資支付與爭(zhēng)議調(diào)解協(xié)議3篇
- 應(yīng)急管理概論 教學(xué)大綱
- 企業(yè)流程管理培訓(xùn)
- 二零二五年度廣告銷售渠道拓展合同范本3篇
- ChatGPT助推學(xué)校教育數(shù)字化轉(zhuǎn)型-人工智能時(shí)代學(xué)什么與怎么教
- 航空母艦發(fā)展史
- 炒菜放料知識(shí)培訓(xùn)課件
- 山西省朔州市懷仁市2024-2025學(xué)年七年級(jí)上學(xué)期1月期末生物試題(無(wú)答案)
- Unit6 Shopping A let's spell (說(shuō)課稿)-2023-2024學(xué)年人教PEP版英語(yǔ)四年級(jí)下冊(cè)
- 第16章 分式 評(píng)估測(cè)試卷(含答案)2024-2025學(xué)年數(shù)學(xué)華東師大版八年級(jí)下冊(cè)
- 春聯(lián)課件教學(xué)課件
- 北師大版五年級(jí)上冊(cè)脫式計(jì)算400道及答案
- 安徽省蕪湖市2023-2024學(xué)年高一上學(xué)期期末考試 地理試題
- 8《美麗文字 民族瑰寶》教學(xué)設(shè)計(jì)2023-2024學(xué)年統(tǒng)編版道德與法治五年級(jí)上冊(cè)
- 2024年工業(yè)廢水處理工(初級(jí))技能鑒定考試題庫(kù)(含答案)
- 2024新滬教版英語(yǔ)初一上單詞表(英譯漢)
- NB/T 11446-2023煤礦連采連充技術(shù)要求
- 人教版八年級(jí)上冊(cè)生物期末必刷15道識(shí)圖題
- SY-T 6966-2023 輸油氣管道工程安全儀表系統(tǒng)設(shè)計(jì)規(guī)范
- 學(xué)生公寓管理員培訓(xùn)
- 固體廢棄物循環(huán)利用項(xiàng)目風(fēng)險(xiǎn)管理方案
評(píng)論
0/150
提交評(píng)論